Compare commits
514 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
76dcfb5ed0 | ||
|
|
8a69421dc9 | ||
|
|
e2d098dd9b | ||
|
|
d45c2cf0f2 | ||
|
|
3e76f7af0f | ||
|
|
52ab7b8865 | ||
|
|
a31c423d9e | ||
|
|
04b3b3dbc5 | ||
|
|
4ec2fe556a | ||
|
|
311e7802e5 | ||
|
|
873871a42c | ||
|
|
070ad695ec | ||
|
|
a56bcc8903 | ||
|
|
7613f1b726 | ||
|
|
cc44a833d5 | ||
|
|
b9279f73fa | ||
|
|
d8923123fa | ||
|
|
9d55369c57 | ||
|
|
217e95e425 | ||
|
|
d44b811b0d | ||
|
|
b61ecabed3 | ||
|
|
ebdb10e7f9 | ||
|
|
c2f3396753 | ||
|
|
1b8366f040 | ||
|
|
7df6d27900 | ||
|
|
e9e92d0892 | ||
|
|
86f2c9d350 | ||
|
|
a0ebbf997d | ||
|
|
9d5d3081dc | ||
|
|
5274826e5c | ||
|
|
6dcb83f913 | ||
|
|
daf0b72eed | ||
|
|
ac52f73af2 | ||
|
|
832465a2a3 | ||
|
|
3768145c9b | ||
|
|
337161be02 | ||
|
|
510904ebea | ||
|
|
a37b98d95d | ||
|
|
35788f8654 | ||
|
|
ec17199feb | ||
|
|
012d0ee885 | ||
|
|
9b211928a9 | ||
|
|
fed210dc38 | ||
|
|
b73549fd35 | ||
|
|
5bb6c4d9e4 | ||
|
|
7a344930ec | ||
|
|
ef53600d74 | ||
|
|
81cdcb4b62 | ||
|
|
415b114dac | ||
|
|
ef082c2e1f | ||
|
|
8a26cfad79 | ||
|
|
38d64a34a1 | ||
|
|
d1b403333c | ||
|
|
6c45fcbfc7 | ||
|
|
44c58a66d1 | ||
|
|
8fc11c0791 | ||
|
|
db75d94961 | ||
|
|
26ff528a85 | ||
|
|
f7e9f85668 | ||
|
|
75eb0c6951 | ||
|
|
e31638d3dd | ||
|
|
e12cd83b80 | ||
|
|
040b476359 | ||
|
|
d7633f40ba | ||
|
|
80fc8d4da9 | ||
|
|
9a92d20001 | ||
|
|
2b18089641 | ||
|
|
1da87d1d19 | ||
|
|
0c54276fe2 | ||
|
|
dda9a95163 | ||
|
|
34fa456106 | ||
|
|
9fe4504623 | ||
|
|
08d68300bd | ||
|
|
e326e2c6b3 | ||
|
|
e94dc226b5 | ||
|
|
bd2edea1c9 | ||
|
|
00cd0e1ae3 | ||
|
|
05aefc6489 | ||
|
|
5652018cde | ||
|
|
a63ba6bc4f | ||
|
|
c043be3aa4 | ||
|
|
b7180893c6 | ||
|
|
96ca7a8cbc | ||
|
|
c87c811719 | ||
|
|
a3fd3205a9 | ||
|
|
55084499ac | ||
|
|
3e6f76826b | ||
|
|
01e9d39b63 | ||
|
|
0116d4176a | ||
|
|
7ea306a61a | ||
|
|
cdaab550e9 | ||
|
|
aa6f617715 | ||
|
|
7e4592c1e7 | ||
|
|
b97024c8f6 | ||
|
|
0f44f6752e | ||
|
|
3c9054c36f | ||
|
|
61379d4e05 | ||
|
|
fd2b779bb8 | ||
|
|
202e8ac3a1 | ||
|
|
6796f20683 | ||
|
|
cdc9fddc44 | ||
|
|
6409661a9f | ||
|
|
4ed03c2db2 | ||
|
|
7b2a9f7ea8 | ||
|
|
0d222e138f | ||
|
|
a80c415fc0 | ||
|
|
3f1a75f40a | ||
|
|
ad4bf1ac84 | ||
|
|
11dec27dd1 | ||
|
|
66253e142b | ||
|
|
b22b67c7d9 | ||
|
|
d8662b709a | ||
|
|
e826309d59 | ||
|
|
1554722a83 | ||
|
|
16ed89c471 | ||
|
|
6ccae6cc37 | ||
|
|
292ed892c1 | ||
|
|
bb8b91a100 | ||
|
|
1310b34e9c | ||
|
|
86cdb64b1d | ||
|
|
0456815bd5 | ||
|
|
1c12cd6b9e | ||
|
|
3c687d29d8 | ||
|
|
bb70edfdb3 | ||
|
|
a3f189f452 | ||
|
|
70727895f7 | ||
|
|
cdbf58b2c1 | ||
|
|
fe9bcc254a | ||
|
|
b0270550c5 | ||
|
|
597faee248 | ||
|
|
42c0815cda | ||
|
|
a5f12db6ba | ||
|
|
62808f8342 | ||
|
|
c6e89f938d | ||
|
|
1edc116532 | ||
|
|
40aa92c5f7 | ||
|
|
4eb39dc5ff | ||
|
|
b5cf6c7161 | ||
|
|
198691182b | ||
|
|
72b81bf403 | ||
|
|
8a3ac7a26e | ||
|
|
8878d7c5dc | ||
|
|
9a7b8da279 | ||
|
|
1f9ab7ca5d | ||
|
|
2c00cb555c | ||
|
|
dcbc7ff217 | ||
|
|
20f42aa2cc | ||
|
|
19fef019ed | ||
|
|
ea02de0cc9 | ||
|
|
1525ffc225 | ||
|
|
5458d77980 | ||
|
|
a545dc9264 | ||
|
|
b7c658e8f8 | ||
|
|
de69ecc35f | ||
|
|
b6f754c29a | ||
|
|
39e0708b3b | ||
|
|
01464a7860 | ||
|
|
fd3fefd6f1 | ||
|
|
36df21d823 | ||
|
|
9dadafe20a | ||
|
|
6fd7427cae | ||
|
|
9065588a76 | ||
|
|
b4b47ec8fd | ||
|
|
ea9f313416 | ||
|
|
af8e770106 | ||
|
|
10f03795f9 | ||
|
|
2ad7c5c675 | ||
|
|
084a1dd7d2 | ||
|
|
d1793d9bcf | ||
|
|
d7ed33809f | ||
|
|
798041fe11 | ||
|
|
995420ee87 | ||
|
|
341ff3de37 | ||
|
|
ce06fcdbe0 | ||
|
|
b8c93b3572 | ||
|
|
4ea6faae81 | ||
|
|
ca8ddd5f39 | ||
|
|
3924f628b4 | ||
|
|
53e0893b51 | ||
|
|
d988b9e6d2 | ||
|
|
6060f41458 | ||
|
|
569ea3ebdd | ||
|
|
40eafa8adc | ||
|
|
1ca5b72073 | ||
|
|
d7c308c688 | ||
|
|
1e0191a37c | ||
|
|
a8d9e8ba7c | ||
|
|
1a5c18c9bd | ||
|
|
421e6303ae | ||
|
|
a79366f105 | ||
|
|
f85198c60f | ||
|
|
2afa1f0dc8 | ||
|
|
a40f84d519 | ||
|
|
bdb49a36bf | ||
|
|
1458ba6f6f | ||
|
|
007073354f | ||
|
|
be827211d2 | ||
|
|
5bc3924756 | ||
|
|
ff6d78244b | ||
|
|
5f1b9a17ca | ||
|
|
534364454d | ||
|
|
0e65b9b9f8 | ||
|
|
07a41f58d7 | ||
|
|
5b04e195b0 | ||
|
|
9fa2dae68c | ||
|
|
9000bc138f | ||
|
|
9660510cc7 | ||
|
|
298665e32a | ||
|
|
d0a3c08840 | ||
|
|
63a1b49745 | ||
|
|
9547ac0afd | ||
|
|
fa891edb7c | ||
|
|
65992ba6ae | ||
|
|
791a749c2f | ||
|
|
9261d8ae9d | ||
|
|
405b82588b | ||
|
|
0dfd2003f9 | ||
|
|
3d249365c2 | ||
|
|
7fb33653ad | ||
|
|
3cccfd97d2 | ||
|
|
0c40cdc990 | ||
|
|
81392a71dd | ||
|
|
b2f3cc6903 | ||
|
|
19a960856c | ||
|
|
02d2ac904d | ||
|
|
29f93597f2 | ||
|
|
20c3ca7d37 | ||
|
|
9bb2cfcd51 | ||
|
|
6927158daa | ||
|
|
0657d343bf | ||
|
|
37aedc8b03 | ||
|
|
3c89ce97c2 | ||
|
|
753b9c9e67 | ||
|
|
06b1baa454 | ||
|
|
e25cd9ba48 | ||
|
|
e00c6f9c77 | ||
|
|
68cc06dc1f | ||
|
|
1901655669 | ||
|
|
753d1d50d0 | ||
|
|
ac108cd708 | ||
|
|
29be837b97 | ||
|
|
682eac3dbc | ||
|
|
ccec84aef2 | ||
|
|
13983d0e51 | ||
|
|
3f80134f07 | ||
|
|
ad36ec4dfd | ||
|
|
82ace81974 | ||
|
|
13c3743ff5 | ||
|
|
46904fb110 | ||
|
|
8f3ffdcc2a | ||
|
|
6c3c0087dd | ||
|
|
2e9b42688f | ||
|
|
589b6465f8 | ||
|
|
6c7c5443d4 | ||
|
|
fdad028e73 | ||
|
|
3ec29d3b52 | ||
|
|
e97add0c46 | ||
|
|
0138209004 | ||
|
|
f7fd78d715 | ||
|
|
bbd8447afa | ||
|
|
cf2bbbfef1 | ||
|
|
7000e80465 | ||
|
|
24a17c05ab | ||
|
|
7c4129033a | ||
|
|
83e3267f0e | ||
|
|
62cfbf73e1 | ||
|
|
f539d69984 | ||
|
|
ba86c1e1da | ||
|
|
cfb7de0fe9 | ||
|
|
334859726c | ||
|
|
119af3d760 | ||
|
|
3bbf11e26f | ||
|
|
5bb27b2989 | ||
|
|
c4b3f08618 | ||
|
|
6ac773d5ae | ||
|
|
e19559fe81 | ||
|
|
7dd30d4db1 | ||
|
|
9b8b7b490a | ||
|
|
5ec9d0685d | ||
|
|
004c412501 | ||
|
|
f05caf7623 | ||
|
|
7d165f133a | ||
|
|
fff9e7ac46 | ||
|
|
ad834f0f58 | ||
|
|
8a50ee8b22 | ||
|
|
cf8186312a | ||
|
|
8f87b5cfd4 | ||
|
|
61ce733c6f | ||
|
|
c78822f6e6 | ||
|
|
a10a30f390 | ||
|
|
7c7014d951 | ||
|
|
dee331d52d | ||
|
|
2146392a2f | ||
|
|
e011a6eb25 | ||
|
|
5eadd10612 | ||
|
|
c2a80ce570 | ||
|
|
3415073051 | ||
|
|
ba68e0a4a1 | ||
|
|
8a7e98820a | ||
|
|
d61e4d69b5 | ||
|
|
9b8912c483 | ||
|
|
878995366a | ||
|
|
1635a5211f | ||
|
|
595b1011dd | ||
|
|
9bb291235d | ||
|
|
7d4ef0b8d0 | ||
|
|
8d16522d39 | ||
|
|
cd1192b409 | ||
|
|
bf2fd63131 | ||
|
|
029da87346 | ||
|
|
9532bedd7d | ||
|
|
e9c8363b70 | ||
|
|
fb57ed2bcd | ||
|
|
57ec558396 | ||
|
|
6e2de1cd79 | ||
|
|
8ace3ab7f2 | ||
|
|
18e4dca6c9 | ||
|
|
99bb5d33f2 | ||
|
|
d4ed4f9325 | ||
|
|
bb2e1ee8da | ||
|
|
51bfbc964e | ||
|
|
48eca3e11f | ||
|
|
57c1a0f4b6 | ||
|
|
bde4d63fdb | ||
|
|
cbb1269b39 | ||
|
|
175167b311 | ||
|
|
029052fa18 | ||
|
|
a454469949 | ||
|
|
0562ed720b | ||
|
|
cbe8a9649c | ||
|
|
f48fdc1d71 | ||
|
|
7f7753a004 | ||
|
|
aba4fa94be | ||
|
|
4eea7c8297 | ||
|
|
4867d26f7d | ||
|
|
9bd3ab717e | ||
|
|
d6d92ce90a | ||
|
|
3679b21701 | ||
|
|
49f58b4ed8 | ||
|
|
235361faf4 | ||
|
|
208b803fbe | ||
|
|
8a92cec03f | ||
|
|
00f068b93e | ||
|
|
654353e26b | ||
|
|
d670ef2638 | ||
|
|
aff935b3c7 | ||
|
|
107c0673c7 | ||
|
|
c14d04b3e8 | ||
|
|
7a017041bf | ||
|
|
bfae81ec70 | ||
|
|
71d4cb781d | ||
|
|
eb56bd8973 | ||
|
|
93585aded7 | ||
|
|
38245aa2a9 | ||
|
|
1f33e6f044 | ||
|
|
4752adf9d3 | ||
|
|
2d741afe3e | ||
|
|
5e6b17aba4 | ||
|
|
c51098e2cf | ||
|
|
ecfbf72a57 | ||
|
|
0c36c40a5d | ||
|
|
6337e673f9 | ||
|
|
e800892cc1 | ||
|
|
a21e893749 | ||
|
|
dff3fc0572 | ||
|
|
5de0ec94e0 | ||
|
|
a408b01111 | ||
|
|
6e45cf0dab | ||
|
|
dc7b6623a9 | ||
|
|
9484af5329 | ||
|
|
3cf1a16398 | ||
|
|
0f0af12353 | ||
|
|
7cb9a4ee4a | ||
|
|
28a1eb86da | ||
|
|
86f12d9e83 | ||
|
|
539f86fd0b | ||
|
|
c93b12ff05 | ||
|
|
319edca870 | ||
|
|
5a59287927 | ||
|
|
20726ae75c | ||
|
|
3b2a39fd38 | ||
|
|
c8ae31a248 | ||
|
|
66a01e4fef | ||
|
|
d559db4fb1 | ||
|
|
6f5871434d | ||
|
|
685f249fd0 | ||
|
|
26ccd577b5 | ||
|
|
5a13402b51 | ||
|
|
82aa02a980 | ||
|
|
3dd98deecc | ||
|
|
2e23fb203a | ||
|
|
625e9a2547 | ||
|
|
aab2b7df1c | ||
|
|
31bd44bec5 | ||
|
|
11532b603a | ||
|
|
523c88b80d | ||
|
|
7cf1bb7e38 | ||
|
|
eb9fdb43c1 | ||
|
|
0362f45547 | ||
|
|
31f55fdb26 | ||
|
|
26928a63e8 | ||
|
|
abacec5787 | ||
|
|
d84af2def0 | ||
|
|
7fa0eddc5f | ||
|
|
0e85c98d02 | ||
|
|
ae2b27d400 | ||
|
|
7c424e1b85 | ||
|
|
ba1ca4ec08 | ||
|
|
20b13a4a2e | ||
|
|
460b23b1eb | ||
|
|
9882f16614 | ||
|
|
60daa2b41b | ||
|
|
d81565df55 | ||
|
|
e2ac176d3c | ||
|
|
ec8c0bb3e7 | ||
|
|
b904fe5acd | ||
|
|
3b07098731 | ||
|
|
03a330a4dd | ||
|
|
6502da549b | ||
|
|
a71e25a8ba | ||
|
|
9e05f41747 | ||
|
|
208b0f39e6 | ||
|
|
5ad9edc3fd | ||
|
|
c714fc89f1 | ||
|
|
e3cde7b55e | ||
|
|
5a745da07b | ||
|
|
531018e58d | ||
|
|
813c64a055 | ||
|
|
0390c67c4d | ||
|
|
1f6161132e | ||
|
|
fc74e16097 | ||
|
|
b03f54ffcd | ||
|
|
26f33a1c12 | ||
|
|
6e8aeea76d | ||
|
|
c736ba7059 | ||
|
|
3eb4b3b208 | ||
|
|
5982763bed | ||
|
|
6b7f7bb777 | ||
|
|
5b9338e40e | ||
|
|
eab4861383 | ||
|
|
4008e6ab58 | ||
|
|
a115bbdc6f | ||
|
|
33ed4fd7cf | ||
|
|
d70ee509b4 | ||
|
|
e20968bdfe | ||
|
|
9e124e4a75 | ||
|
|
db37b7b933 | ||
|
|
2e94066e50 | ||
|
|
61c6962bf2 | ||
|
|
9cbdd58af5 | ||
|
|
eea9d7db97 | ||
|
|
235baa3dcc | ||
|
|
f04f4302a2 | ||
|
|
06e08557ac | ||
|
|
95fdefdcc7 | ||
|
|
7a8d4577f1 | ||
|
|
65eb71e645 | ||
|
|
47e885ddbf | ||
|
|
65626f0da2 | ||
|
|
8584901f9e | ||
|
|
e2d446e446 | ||
|
|
54306473f3 | ||
|
|
c7158234dc | ||
|
|
b28cb19ae3 | ||
|
|
86a01b6984 | ||
|
|
b432103b82 | ||
|
|
75564c8fb5 | ||
|
|
b87097a7ab | ||
|
|
6ef5f34070 | ||
|
|
b953ea9042 | ||
|
|
61ada66e3a | ||
|
|
a9a724714f | ||
|
|
612ef0ef9b | ||
|
|
a627870bbb | ||
|
|
fae4f69b8c | ||
|
|
b27ba03d42 | ||
|
|
2cd6787141 | ||
|
|
21204971ff | ||
|
|
c570a13a1f | ||
|
|
5c71260c12 | ||
|
|
e105970945 | ||
|
|
0c33019f93 | ||
|
|
16598a8386 | ||
|
|
f52f6e2d44 | ||
|
|
304cebefe4 | ||
|
|
d7a8a43024 | ||
|
|
73f91db939 | ||
|
|
41be9e8178 | ||
|
|
be24872bba | ||
|
|
db56546871 | ||
|
|
53b30e267c | ||
|
|
8f33c5235b | ||
|
|
d8857bf42d | ||
|
|
a85ac07576 | ||
|
|
d2ab008aa0 | ||
|
|
f4ff8b17f7 | ||
|
|
d5c8787451 | ||
|
|
850c7c7ecf | ||
|
|
7ff475977e | ||
|
|
478d30b529 | ||
|
|
d6597400de | ||
|
|
af394ff65c | ||
|
|
f6fa6d6563 | ||
|
|
fd7a49f4a6 | ||
|
|
47d7598e99 | ||
|
|
e2ba754f91 | ||
|
|
c98aad698a | ||
|
|
75f0d132e5 | ||
|
|
f82725139a | ||
|
|
b9e58c77af | ||
|
|
ad67eac257 | ||
|
|
eef51f26f0 | ||
|
|
ea992bc3e6 | ||
|
|
20f3f23576 |
8
.gitattributes
vendored
@@ -1 +1,9 @@
|
||||
src/version.h.cmake export-subst
|
||||
.gitattributes export-ignore
|
||||
.gitignore export-ignore
|
||||
.github export-ignore
|
||||
.travis.yml export-ignore
|
||||
.tx export-ignore
|
||||
snapcraft.yaml export-ignore
|
||||
make_release.sh export-ignore
|
||||
AppImage-Recipe.sh export-ignore
|
||||
|
||||
180
.github/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,180 @@
|
||||
# Contributing to KeePassXC
|
||||
|
||||
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
|
||||
|
||||
The following is a set of guidelines for contributing to KeePassXC on GitHub.
|
||||
These are just guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
|
||||
|
||||
#### Table of contents
|
||||
|
||||
[What should I know before I get started?](#what-should-i-know-before-i-get-started)
|
||||
* [Open Source Contribution Policy](#open-source-contribution-policy)
|
||||
|
||||
[How can I contribute?](#how-can-i-contribute)
|
||||
* [Feature requests](#feature-requests)
|
||||
* [Bug reports](#bug-reports)
|
||||
* [Discuss with the team](#discuss-with-the-team)
|
||||
* [Your first code contribution](#your-first-code-contribution)
|
||||
* [Pull requests](#pull-requests)
|
||||
* [Translations](#translations)
|
||||
|
||||
[Styleguides](#styleguides)
|
||||
* [Git branch strategy](#git-branch-strategy)
|
||||
* [Git commit messages](#git-commit-messages)
|
||||
* [Coding styleguide](#coding-styleguide)
|
||||
|
||||
|
||||
## What should I know before I get started?
|
||||
### Open Source Contribution Policy
|
||||
**Source**: [Version 0.3, 2015–11–18](https://medium.com/@jmaynard/a-contribution-policy-for-open-source-that-works-bfc4600c9d83#.i9ntbhmad)
|
||||
|
||||
#### Policy
|
||||
|
||||
We will accept contributions of good code that we can use from anyone.
|
||||
|
||||
#### What this means
|
||||
|
||||
- “We will accept”: This means that we will incorporate your contribution into the project’s codebase, adapt it as needed, and give you full credit for your work.
|
||||
- “contributions”: This means just about anything you wish to contribute to the project, as long as it is good code we can use. The easier you make it for us to accept your contribution, the happier we are, but if it’s good enough, we will do a reasonable amount of work to use it.
|
||||
- “of good code”: This means that we will accept contributions that work well and efficiently, that fit in with the goals of the project, that match the project’s coding style, and that do not impose an undue maintenance workload on us going forward. This does not mean just program code, either, but documentation and artistic works as appropriate to the project.
|
||||
- “that we can use”: This means that your contribution must be given freely and irrevocably, that you must have the right to contribute it for our unrestricted use, and that your contribution is made under a license that is compatible with the license the project has chosen and that permits us to include, distribute, and modify your work without restriction.
|
||||
- “from anyone”: This means exactly that. We don’t care about anything but your code. We don’t care about your race, religion, national origin, biological gender, perceived gender, sexual orientation, lifestyle, political viewpoint, or anything extraneous like that. We will neither reject your contribution nor grant it preferential treatment on any basis except the code itself. We do, however, reserve the right to tell you to go away if you behave too obnoxiously toward us.
|
||||
|
||||
#### If Your Contribution Is Rejected
|
||||
|
||||
If we reject your contribution, it means only that we do not consider it suitable for our project in the form it was submitted. It is not personal. If you ask civilly, we will be happy to discuss it with you and help you understand why it was rejected, and if possible improve it so we can accept it.
|
||||
|
||||
#### Revision History
|
||||
* 0.1, 2011–11–18: Initial draft.
|
||||
* 0.2, 2011–11–18: Added “If Your Contribution Is Rejected” section.
|
||||
* 0.3, 2011–11–19: Added “irrevocably” to “we can use” and changed “it” to “your contribution” in the “if rejected” section. Thanks to Patrick Maupin.
|
||||
|
||||
|
||||
## How can I contribute?
|
||||
### Feature requests
|
||||
|
||||
We're always looking for suggestions to improve our application. If you have a suggestion to improve an existing feature, or would like to suggest a completely new feature for KeePassXC, please use the [issue tracker on GitHub][issues-section]. For more general discussion, try using our [Google Groups][google-groups] forum.
|
||||
|
||||
### Bug reports
|
||||
|
||||
Our software isn't always perfect, but we strive to always improve our work. You may file bug reports in the issue tracker.
|
||||
|
||||
Before submitting a bug report, check if the problem has already been reported. Please refrain from opening a duplicate issue. If you want to add further information to an existing issue, simply add a comment on that issue.
|
||||
|
||||
### Discuss with the team
|
||||
|
||||
As with feature requests, you can talk to the KeePassXC team about bugs, new features, other issues and pull requests on the dedicated issue tracker, using the [Google Groups][google-groups] forum, or in the IRC channel on Freenode (`#keepassxc-dev` on `irc.freenode.net`, or use a [webchat link](https://webchat.freenode.net/?channels=%23keepassxc-dev)).
|
||||
|
||||
### Your first code contribution
|
||||
|
||||
Unsure where to begin contributing to KeePassXC? You can start by looking through these `beginner` and `help-wanted` issues:
|
||||
|
||||
* [Beginner issues][beginner] – issues which should only require a few lines of code, and a test or two.
|
||||
* ['Help wanted' issues][help-wanted] – issues which should be a bit more involved than `beginner` issues.
|
||||
|
||||
Both issue lists are sorted by total number of comments. While not perfect, looking at the number of comments on an issue can give a general idea of how much an impact a given change will have.
|
||||
|
||||
### Pull requests
|
||||
|
||||
Along with our desire to hear your feedback and suggestions, we're also interested in accepting direct assistance in the form of code.
|
||||
|
||||
All pull requests must comply with the above requirements and with the [styleguides](#styleguides).
|
||||
|
||||
### Translations
|
||||
|
||||
Translations are managed on [Transifex](https://www.transifex.com/keepassxc/keepassxc/) which offers a web interface.
|
||||
Please join an existing language team or request a new one if there is none.
|
||||
|
||||
## Styleguides
|
||||
|
||||
### Git branch strategy
|
||||
|
||||
The Branch Strategy is based on [git-flow-lite](http://nvie.com/posts/a-successful-git-branching-model/).
|
||||
|
||||
* **master** – points to the latest public release
|
||||
* **develop** – points to the development of the next release, contains tested and reviewed code
|
||||
* **feature/**[name] – points to a branch with a new feature, one which is candidate for merge into develop (subject to rebase)
|
||||
* **hotfix/**[id]-[description] – points to a branch with a fix for a particular issue ID
|
||||
|
||||
|
||||
### Git commit messages
|
||||
|
||||
* Use the present tense ("Add feature" not "Added feature")
|
||||
* Use the imperative mood ("Move cursor to…" not "Moves cursor to…")
|
||||
* Limit the first line to 72 characters or less
|
||||
* Reference issues and pull requests liberally
|
||||
* When only changing documentation, include `[ci skip]` in the commit description
|
||||
* Consider starting the commit message with an applicable emoji:
|
||||
* :memo: `:memo:` when writing docs
|
||||
* :penguin: `:penguin:` when fixing something on Linux
|
||||
* :apple: `:apple:` when fixing something on macOS
|
||||
* :checkered_flag: `:checkered_flag:` when fixing something on Windows
|
||||
* :bug: `:bug:` when fixing a bug
|
||||
* :fire: `:fire:` when removing code or files
|
||||
* :green_heart: `:green_heart:` when fixing the CI build
|
||||
* :white_check_mark: `:white_check_mark:` when adding tests
|
||||
* :lock: `:lock:` when dealing with security
|
||||
|
||||
|
||||
### Coding styleguide
|
||||
|
||||
This project follows the [Qt Coding Style](https://wiki.qt.io/Qt_Coding_Style). All submissions are expected to follow this style.
|
||||
|
||||
In particular, code must stick to the following rules:
|
||||
|
||||
#### Naming convention
|
||||
`lowerCamelCase`
|
||||
|
||||
For names made of only one word, the first letter should be lowercase.
|
||||
For names made of multiple concatenated words, the first letter of the whole is lowercase, and the first letter of each subsequent word is capitalized.
|
||||
|
||||
#### Indention
|
||||
For **C++ files** (*.cpp .h*): 4 spaces
|
||||
For **Qt-UI files** (*.ui*): 2 spaces
|
||||
|
||||
#### Pointers
|
||||
```c
|
||||
int* count;
|
||||
```
|
||||
|
||||
#### Braces
|
||||
```c
|
||||
if (condition) {
|
||||
doSomething();
|
||||
}
|
||||
|
||||
void ExampleClass::exampleFunction()
|
||||
{
|
||||
doSomething();
|
||||
}
|
||||
```
|
||||
|
||||
#### Switch statement
|
||||
```c
|
||||
switch (a) {
|
||||
case 1:
|
||||
doSomething();
|
||||
break;
|
||||
|
||||
default:
|
||||
doSomethingElse();
|
||||
break;
|
||||
}
|
||||
```
|
||||
|
||||
#### Member variables
|
||||
Use prefix: `m_*`
|
||||
|
||||
Example: `m_variable`
|
||||
|
||||
#### GUI widget names
|
||||
Widget names must be related to the desired program behavior, and preferably end with the widget's classname.
|
||||
|
||||
Example: `<widget class="QCheckBox" name="rememberCheckBox">`
|
||||
|
||||
|
||||
|
||||
[beginner]:https://github.com/keepassxreboot/keepassx/issues?q=is%3Aopen+is%3Aissue+label%3Abeginner+label%3A%22help+wanted%22+sort%3Acomments-desc
|
||||
[help-wanted]:https://github.com/keepassxreboot/keepassx/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+sort%3Acomments-desc
|
||||
[issues-section]:https://github.com/keepassxreboot/keepassxc/issues
|
||||
[google-groups]:https://groups.google.com/forum/#!forum/keepassx-reboot
|
||||
32
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
<!--- Provide a general summary of the issue in the title above -->
|
||||
|
||||
## Expected Behavior
|
||||
<!--- If you're describing a bug, tell us what should happen -->
|
||||
<!--- If you're suggesting a change/improvement, tell us how it should work -->
|
||||
|
||||
## Current Behavior
|
||||
<!--- If describing a bug, tell us what happens instead of the expected behavior -->
|
||||
<!--- If suggesting a change/improvement, explain the difference from the current behavior -->
|
||||
|
||||
## Possible Solution
|
||||
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
|
||||
<!--- or ideas how to implement the addition or change -->
|
||||
|
||||
## Steps to Reproduce (for bugs)
|
||||
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
|
||||
<!--- reproduce this bug. Include code to reproduce, if relevant -->
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
4.
|
||||
|
||||
## Context
|
||||
<!--- How has this issue affected you? What are you trying to accomplish? -->
|
||||
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
|
||||
|
||||
## Your Environment
|
||||
<!--- Include relevant details about the environment you experienced the bug in -->
|
||||
* KeePassXC version/commit used: (can be found under Help -> About)
|
||||
* Qt version (e.g. Qt 5.3):
|
||||
* Compiler (e.g. Clang++3.6.0):
|
||||
* Operating System and version:
|
||||
33
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
<!--- Provide a general summary of your changes in the title above -->
|
||||
|
||||
## Description
|
||||
<!--- Describe your changes in detail -->
|
||||
|
||||
## Motivation and Context
|
||||
<!--- Why is this change required? What problem does it solve? -->
|
||||
<!--- If it fixes an open issue, please link to the issue here. -->
|
||||
|
||||
## How Has This Been Tested?
|
||||
<!--- Please describe in detail how you tested your changes. -->
|
||||
<!--- Include details of your testing environment, and the tests you ran to -->
|
||||
<!--- see how your change affects other areas of the code, etc. -->
|
||||
|
||||
## Screenshots (if appropriate):
|
||||
|
||||
## Types of changes
|
||||
<!--- What types of changes does your code introduce? -->
|
||||
<!--- Please remove all lines which don't apply. -->
|
||||
- ✅ Bug fix (non-breaking change which fixes an issue)
|
||||
- ✅ New feature (non-breaking change which adds functionality)
|
||||
- ✅ Breaking change (fix or feature that would cause existing functionality to change)
|
||||
|
||||
## Checklist:
|
||||
<!--- Please go over all the following points. -->
|
||||
<!--- Again, remove any lines which don't apply. -->
|
||||
<!--- Pull Requests that don't fulfill all [REQUIRED] requisites are likely -->
|
||||
<!--- to be sent back to you for correction or will be rejected. -->
|
||||
- ✅ I have read the **CONTRIBUTING** document. **[REQUIRED]**
|
||||
- ✅ My code follows the code style of this project. **[REQUIRED]**
|
||||
- ✅ All new and existing tests passed. **[REQUIRED]**
|
||||
- ✅ My change requires a change to the documentation and I have updated it accordingly.
|
||||
- ✅ I have added tests to cover my changes.
|
||||
6
.gitignore
vendored
@@ -1,2 +1,6 @@
|
||||
CMakeLists.txt.*
|
||||
build/
|
||||
build*/
|
||||
release*/
|
||||
.idea/
|
||||
*.iml
|
||||
*.kdev4
|
||||
|
||||
42
.travis.yml
@@ -1,21 +1,45 @@
|
||||
language: cpp
|
||||
sudo: required
|
||||
dist: trusty
|
||||
services: [docker]
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
# - osx
|
||||
|
||||
# Define clang compiler without any frills
|
||||
compiler:
|
||||
- gcc
|
||||
- clang
|
||||
language: cpp
|
||||
install:
|
||||
- gcc
|
||||
|
||||
env:
|
||||
- CONFIG=Release
|
||||
- CONFIG=Debug
|
||||
|
||||
git:
|
||||
depth: 3
|
||||
|
||||
before_install:
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq update; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq install cmake libqt4-dev libgcrypt11-dev zlib1g-dev libxtst-dev; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq install cmake libmicrohttpd10 libmicrohttpd-dev libxi-dev qtbase5-dev libqt5x11extras5-dev qttools5-dev qttools5-dev-tools libgcrypt20-dev zlib1g-dev libxtst-dev xvfb; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew ls | grep -wq cmake || brew install cmake; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew ls | grep -wq qt || brew install qt; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew ls | grep -wq qt5 || brew install qt5; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew ls | grep -wq libgcrypt || brew install libgcrypt; fi
|
||||
before_script: mkdir build && pushd build
|
||||
|
||||
before_script:
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then CMAKE_ARGS="-DCMAKE_PREFIX_PATH=/usr/local/opt/qt5"; fi
|
||||
- mkdir build && pushd build
|
||||
|
||||
script:
|
||||
- cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_GUI_TESTS=ON ..
|
||||
- make
|
||||
- cmake -DCMAKE_BUILD_TYPE=${CONFIG} -DWITH_GUI_TESTS=ON -DWITH_XC_HTTP=ON -DWITH_XC_AUTOTYPE=ON -DWITH_XC_YUBIKEY=ON $CMAKE_ARGS ..
|
||||
- make -j2
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then make test ARGS+="-E testgui --output-on-failure"; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then xvfb-run -a --server-args="-screen 0 800x600x24" make test ARGS+="-R testgui --output-on-failure"; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then make test ARGS+="--output-on-failure"; fi
|
||||
|
||||
# Generate snapcraft build when merging into master/develop branches
|
||||
#after_success:
|
||||
# - popd
|
||||
# - "[[ $DEPLOY = 1 ]] && [[ $CONFIG = Release ]] && [[ $TRAVIS_BRANCH =~ (master|develop) ]] && [[ $TRAVIS_PULL_REQUEST = false ]] \
|
||||
# && docker run -v $(pwd):/cwd snapcore/snapcraft sh -c 'cd /cwd && apt update && snapcraft'"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[keepassx.keepassx_ents]
|
||||
[keepassxc.keepassx_ents]
|
||||
source_file = share/translations/keepassx_en.ts
|
||||
file_filter = share/translations/keepassx_<lang>.ts
|
||||
source_lang = en
|
||||
|
||||
95
AppImage-Recipe.sh
Executable file
@@ -0,0 +1,95 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# KeePassXC AppImage Recipe
|
||||
# Copyright (C) 2017 KeePassXC team <https://keepassxc.org/>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 or (at your option)
|
||||
# version 3 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
if [ "$1" == "" ] || [ "$2" == "" ]; then
|
||||
echo "Usage: $(basename $0) APP_NAME RELEASE_VERSION" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f CHANGELOG ]; then
|
||||
echo "This recipe must not be run from the sources root." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d ../bin-release ]; then
|
||||
echo "../bin-release does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
APP="$1"
|
||||
LOWERAPP="$(echo "$APP" | tr '[:upper:]' '[:lower:]')"
|
||||
VERSION="$2"
|
||||
|
||||
mkdir -p $APP.AppDir
|
||||
wget -q https://github.com/probonopd/AppImages/raw/master/functions.sh -O ./functions.sh
|
||||
. ./functions.sh
|
||||
|
||||
LIB_DIR=./usr/lib
|
||||
if [ -d ./usr/lib/x86_64-linux-gnu ]; then
|
||||
LIB_DIR=./usr/lib/x86_64-linux-gnu
|
||||
fi
|
||||
|
||||
cd $APP.AppDir
|
||||
cp -a ../../bin-release/* .
|
||||
cp -a ./usr/local/* ./usr
|
||||
rm -R ./usr/local
|
||||
rmdir ./opt 2> /dev/null
|
||||
|
||||
# bundle Qt platform plugins and themes
|
||||
QXCB_PLUGIN="$(find /usr/lib -name 'libqxcb.so' 2> /dev/null)"
|
||||
if [ "$QXCB_PLUGIN" == "" ]; then
|
||||
QXCB_PLUGIN="$(find /opt/qt*/plugins -name 'libqxcb.so' 2> /dev/null)"
|
||||
fi
|
||||
QT_PLUGIN_PATH="$(dirname $(dirname $QXCB_PLUGIN))"
|
||||
mkdir -p ".${QT_PLUGIN_PATH}/platforms"
|
||||
cp "$QXCB_PLUGIN" ".${QT_PLUGIN_PATH}/platforms/"
|
||||
|
||||
get_apprun
|
||||
copy_deps
|
||||
delete_blacklisted
|
||||
|
||||
# remove dbus and systemd libs as they are not blacklisted
|
||||
find . -name libdbus-1.so.3 -exec rm {} \;
|
||||
find . -name libsystemd.so.0 -exec rm {} \;
|
||||
|
||||
get_desktop
|
||||
get_icon
|
||||
cat << EOF > ./usr/bin/keepassxc_env
|
||||
#!/usr/bin/env bash
|
||||
#export QT_QPA_PLATFORMTHEME=gtk2
|
||||
export LD_LIBRARY_PATH="../opt/qt58/lib:\${LD_LIBRARY_PATH}"
|
||||
export QT_PLUGIN_PATH="..${QT_PLUGIN_PATH}"
|
||||
|
||||
# unset XDG_DATA_DIRS to make tray icon work in Ubuntu Unity
|
||||
# see https://github.com/probonopd/AppImageKit/issues/351
|
||||
unset XDG_DATA_DIRS
|
||||
|
||||
exec keepassxc "\$@"
|
||||
EOF
|
||||
chmod +x ./usr/bin/keepassxc_env
|
||||
sed -i 's/Exec=keepassxc/Exec=keepassxc_env/' keepassxc.desktop
|
||||
get_desktopintegration $LOWERAPP
|
||||
|
||||
GLIBC_NEEDED=$(glibc_needed)
|
||||
|
||||
cd ..
|
||||
|
||||
generate_type2_appimage
|
||||
|
||||
mv ../out/*.AppImage ..
|
||||
rmdir ../out > /dev/null 2>&1
|
||||
97
CHANGELOG
@@ -1,3 +1,100 @@
|
||||
2.1.3 (2017-03-03)
|
||||
=========================
|
||||
|
||||
- Fix possible overflow in zxcvbn library [#363]
|
||||
- Revert HiDPI setting to avoid problems on laptop screens [#332]
|
||||
- Set file meta properties in Windows executable [#330]
|
||||
- Suppress error message when auto-reloading a locked database [#345]
|
||||
- Improve usability of question dialog when database is already locked by a different instance [#346]
|
||||
- Fix compiler warnings in QHttp library [#351]
|
||||
- Use unified toolbar on Mac OS X [#361]
|
||||
- Fix an issue on X11 where the main window would be raised instead of closed on Alt+F4 [#362]
|
||||
|
||||
2.1.2 (2017-02-17)
|
||||
=========================
|
||||
|
||||
- Ask for save location when creating a new database [#302]
|
||||
- Remove Libmicrohttpd dependency to clean up the code and ensure better OS X compatibility [#317, #265]
|
||||
- Prevent Qt from degrading Wifi network performance on certain platforms [#318]
|
||||
- Visually refine user interface on OS X and other platforms [#299]
|
||||
- Remove unusable tray icon setting on OS X [#293]
|
||||
- Fix compositing glitches on Ubuntu and prevent flashing when minimizing to the tray at startup [#307]
|
||||
- Fix AppImage tray icon on Ubuntu [#277, #273]
|
||||
- Fix global menu disappearing after restoring KeePassXC from the tray on Ubuntu [#276]
|
||||
- Fix result order in entry search [#320]
|
||||
- Enable HiDPI scaling on supported platforms [#315]
|
||||
- Remove empty directories from installation target [#282]
|
||||
|
||||
2.1.1 (2017-02-06)
|
||||
=========================
|
||||
|
||||
- Enabled HTTP plugin build; plugin is disabled by default and limited to localhost [#147]
|
||||
- Escape HTML in dialog boxes [#247]
|
||||
- Corrected crashes in favicon download and password generator [#233, #226]
|
||||
- Increase font size of password meter [#228]
|
||||
- Fixed compatibility with Qt 5.8 [#211]
|
||||
- Use consistent button heights in password generator [#229]
|
||||
|
||||
2.1.0 (2017-01-22)
|
||||
=========================
|
||||
|
||||
- Show unlock dialog when using autotype on a closed database [#10, #89]
|
||||
- Show different tray icon when database is locked [#37, #46]
|
||||
- Support autotype on Windows and OS X [#42, #60, #63]
|
||||
- Add delay feature to autotype [#76, #77]
|
||||
- Add password strength meter [#84, #92]
|
||||
- Add option for automatically locking the database when minimizing
|
||||
the window [#57]
|
||||
- Add feature to download favicons and use them as entry icons [#30]
|
||||
- Automatically reload and merge database when the file changed on
|
||||
disk [#22, #33, #93]
|
||||
- Add tool for merging two databases [#22, #47, #143]
|
||||
- Add --pw-stdin commandline option to unlock the database by providing
|
||||
a password on STDIN [#54]
|
||||
- Add utility script for reading the database password from KWallet [#55]
|
||||
- Fix some KeePassHTTP settings not being remembered [#34, #65]
|
||||
- Make search box persistent [#15, #67, #157]
|
||||
- Enhance search feature by scoping the search to selected group [#16, #118]
|
||||
- Improve interaction between search field and entry list [#131, #141]
|
||||
- Add stand-alone password-generator [#18, #92]
|
||||
- Don't require password repetition when password is visible [#27, #92]
|
||||
- Add support for entry attributes in autotype sequences [#107]
|
||||
- Always focus password field when opening the database unlock widget [#116, #117]
|
||||
- Fix compilation errors on various platforms [#53, #126, #130]
|
||||
- Restructure and improve kdbx-extract utility [#160]
|
||||
|
||||
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)
|
||||
=========================
|
||||
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
|
||||
"Choose the type of build, options are: None Debug Release RelWithDebInfo Debug Debugfull Profile MinSizeRel."
|
||||
"Choose the type of build, options are: None Debug Release RelWithDebInfo Debug DebugFull Profile MinSizeRel."
|
||||
FORCE)
|
||||
endif()
|
||||
|
||||
project(KeePassX)
|
||||
project(KeePassXC)
|
||||
|
||||
cmake_minimum_required(VERSION 2.6.4)
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
|
||||
@@ -31,10 +31,15 @@ include(CheckCXXSourceCompiles)
|
||||
|
||||
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)
|
||||
option(WITH_DEV_BUILD "Use only for development. Disables/warns about deprecated methods." OFF)
|
||||
option(WITH_COVERAGE "Use to build with coverage tests. (GCC ONLY)." OFF)
|
||||
|
||||
set(KEEPASSX_VERSION "2.0")
|
||||
set(KEEPASSX_VERSION_NUM "2.0")
|
||||
option(WITH_XC_AUTOTYPE "Include Autotype." OFF)
|
||||
option(WITH_XC_HTTP "Include KeePassHTTP." OFF)
|
||||
option(WITH_XC_YUBIKEY "Include Yubikey support." OFF)
|
||||
|
||||
set(KEEPASSXC_VERSION "2.1.3")
|
||||
set(KEEPASSXC_VERSION_NUM "2.1.3")
|
||||
|
||||
if("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
||||
set(CMAKE_COMPILER_IS_CLANG 1)
|
||||
@@ -61,7 +66,7 @@ macro(add_gcc_compiler_flags FLAGS)
|
||||
add_gcc_compiler_cflags("${FLAGS}")
|
||||
endmacro(add_gcc_compiler_flags)
|
||||
|
||||
add_definitions(-DQT_NO_KEYWORDS -DQT_NO_EXCEPTIONS -DQT_NO_STL -DQT_STRICT_ITERATORS -DQT_NO_CAST_TO_ASCII)
|
||||
add_definitions(-DQT_NO_EXCEPTIONS -DQT_STRICT_ITERATORS -DQT_NO_CAST_TO_ASCII)
|
||||
|
||||
add_gcc_compiler_flags("-fno-common -fstack-protector --param=ssp-buffer-size=4")
|
||||
add_gcc_compiler_flags("-Wall -Wextra -Wundef -Wpointer-arith -Wno-long-long")
|
||||
@@ -87,6 +92,12 @@ endif()
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcast-align")
|
||||
|
||||
if(WITH_COVERAGE)
|
||||
# Include code coverage, use with -DCMAKE_BUILD_TYPE=Coverage
|
||||
include(CodeCoverage)
|
||||
setup_target_for_coverage(kp_coverage "make test" coverage)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCC)
|
||||
@@ -100,26 +111,29 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro")
|
||||
endif()
|
||||
|
||||
if (WITH_CXX11)
|
||||
add_gcc_compiler_cxxflags("-std=c++0x")
|
||||
add_gcc_compiler_cflags("-ansi")
|
||||
if(APPLE)
|
||||
add_gcc_compiler_cxxflags("-stdlib=libc++")
|
||||
endif()
|
||||
else()
|
||||
add_gcc_compiler_flags("-ansi")
|
||||
add_gcc_compiler_cxxflags("-std=c++11")
|
||||
|
||||
if(APPLE)
|
||||
add_gcc_compiler_cxxflags("-stdlib=libc++")
|
||||
endif()
|
||||
|
||||
add_gcc_compiler_cflags("-ansi")
|
||||
|
||||
if(WITH_DEV_BUILD)
|
||||
add_definitions(-DQT_DEPRECATED_WARNINGS -DGCRYPT_NO_DEPRECATED)
|
||||
endif()
|
||||
|
||||
if(MINGW)
|
||||
set(CMAKE_RC_COMPILER_INIT windres)
|
||||
enable_language(RC)
|
||||
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
|
||||
link_libraries(ws2_32 wsock32)
|
||||
endif()
|
||||
|
||||
if(APPLE OR MINGW)
|
||||
set(PROGNAME KeePassX)
|
||||
set(PROGNAME KeePassXC)
|
||||
else()
|
||||
set(PROGNAME keepassx)
|
||||
set(PROGNAME keepassxc)
|
||||
endif()
|
||||
|
||||
if(APPLE AND "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/local")
|
||||
@@ -132,33 +146,38 @@ if(MINGW)
|
||||
set(DATA_INSTALL_DIR "share")
|
||||
elseif(APPLE)
|
||||
set(BIN_INSTALL_DIR ".")
|
||||
set(PLUGIN_INSTALL_DIR ".")
|
||||
set(PLUGIN_INSTALL_DIR "${PROGNAME}.app/Contents/PlugIns")
|
||||
set(DATA_INSTALL_DIR "${PROGNAME}.app/Contents/Resources")
|
||||
else()
|
||||
include(GNUInstallDirs)
|
||||
|
||||
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
|
||||
set(PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/keepassx")
|
||||
set(DATA_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/keepassx")
|
||||
set(PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/keepassxc")
|
||||
set(DATA_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/keepassxc")
|
||||
endif()
|
||||
|
||||
if(WITH_TESTS)
|
||||
enable_testing()
|
||||
endif(WITH_TESTS)
|
||||
|
||||
set(QT_REQUIRED_MODULES QtCore QtGui QtTest)
|
||||
find_package(Qt5Core 5.2 REQUIRED)
|
||||
find_package(Qt5Concurrent 5.2 REQUIRED)
|
||||
find_package(Qt5Widgets 5.2 REQUIRED)
|
||||
find_package(Qt5Test 5.2 REQUIRED)
|
||||
find_package(Qt5LinguistTools 5.2 REQUIRED)
|
||||
find_package(Qt5Network 5.2 REQUIRED)
|
||||
if (UNIX AND NOT APPLE)
|
||||
find_package(Qt5DBus 5.2 REQUIRED)
|
||||
endif()
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
|
||||
find_package(Qt4 4.6.0 REQUIRED ${QT_REQUIRED_MODULES})
|
||||
include(${QT_USE_FILE})
|
||||
# Debian sets the the build type to None for package builds.
|
||||
# Make sure we don't enable asserts there.
|
||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_NONE QT_NO_DEBUG)
|
||||
|
||||
find_package(Gcrypt REQUIRED)
|
||||
if(NOT (${GCRYPT_VERSION_STRING} VERSION_LESS "1.6.0"))
|
||||
message(STATUS "Gcrypt ${GCRYPT_VERSION_STRING} supports the SALSA20 cipher")
|
||||
set(GCRYPT_HAS_SALSA20 1)
|
||||
endif()
|
||||
find_package(LibGPGError REQUIRED)
|
||||
|
||||
find_package(Gcrypt 1.6.0 REQUIRED)
|
||||
|
||||
find_package(ZLIB REQUIRED)
|
||||
|
||||
@@ -199,10 +218,7 @@ endif()
|
||||
|
||||
include_directories(SYSTEM ${GCRYPT_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
|
||||
|
||||
if(NOT (${CMAKE_VERSION} VERSION_LESS 2.8.3))
|
||||
set(PRINT_SUMMARY ON)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
include(FeatureSummary)
|
||||
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(share)
|
||||
@@ -212,5 +228,10 @@ if(WITH_TESTS)
|
||||
endif(WITH_TESTS)
|
||||
|
||||
if(PRINT_SUMMARY)
|
||||
# This will print ENABLED, REQUIRED and DISABLED
|
||||
feature_summary(WHAT ALL)
|
||||
else()
|
||||
# This will only print ENABLED and DISABLED feature
|
||||
print_enabled_features()
|
||||
print_disabled_features()
|
||||
endif()
|
||||
|
||||
25
COPYING
@@ -27,6 +27,7 @@ Copyright: 2010-2012, Felix Geyer <debfx@fobos.de>
|
||||
2000-2008, Tom Sato <VEF00200@nifty.ne.jp>
|
||||
2013, Laszlo Papp <lpapp@kde.org>
|
||||
2013, David Faure <faure@kde.org>
|
||||
2016, KeePassXC Team
|
||||
License: GPL-2 or GPL-3
|
||||
|
||||
Files: cmake/GNUInstallDirs.cmake
|
||||
@@ -34,13 +35,16 @@ Copyright: 2011 Nikita Krupen'ko <krnekit@gmail.com>
|
||||
2011 Kitware, Inc.
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: share/icons/application/*/apps/keepassx.png
|
||||
share/icons/application/scalable/apps/keepassx.svgz
|
||||
Copyright: 2006, Otto Salminen
|
||||
2009, Miguelito Vieira
|
||||
2011-2013, Felix Geyer <debfx@fobos.de>
|
||||
2012, Tobias Tangemann <tobiastangemann@gmail.com>
|
||||
License: GPL-2
|
||||
Files: share/icons/application/*/apps/keepassxc.png
|
||||
share/icons/application/scalable/apps/keepassxc.svgz
|
||||
share/icons/application/*/apps/keepassxc-dark.png
|
||||
share/icons/application/scalable/apps/keepassxc-dark.svgz
|
||||
share/icons/application/*/apps/keepassxc-locked.png
|
||||
share/icons/application/scalable/apps/keepassxc-locked.svgz
|
||||
share/icons/application/*/mimetypes/application-x-keepassxc.png
|
||||
share/icons/application/scalable/mimetypes/application-x-keepassxc.svgz
|
||||
Copyright: 2016, Lorenzo Stella <lorenzo.stl@gmail.com>
|
||||
License: LGPL-2
|
||||
|
||||
Files: share/icons/application/*/actions/auto-type.png
|
||||
share/icons/application/*/actions/database-change-key.png
|
||||
@@ -136,6 +140,7 @@ Files: share/icons/application/*/actions/application-exit.png
|
||||
share/icons/application/*/actions/document-save-as.png
|
||||
share/icons/application/*/actions/edit-clear-locationbar-ltr.png
|
||||
share/icons/application/*/actions/edit-clear-locationbar-rtl.png
|
||||
share/icons/application/*/actions/password-generator.png
|
||||
share/icons/application/*/actions/password-copy.png
|
||||
share/icons/application/*/actions/password-show-*.png
|
||||
share/icons/application/*/actions/system-search.png
|
||||
@@ -187,3 +192,9 @@ License: LGPL-2.1 or GPL-3
|
||||
Files: cmake/GetGitRevisionDescription.cmake*
|
||||
Copyright: 2009-2010, Iowa State University
|
||||
License: Boost-1.0
|
||||
|
||||
Files: src/zxcvbn/zxcvbn.*
|
||||
src/utils/entropy-meter.cpp
|
||||
Copyright: 2015, Tony Evans
|
||||
2016, KeePassXC Team
|
||||
License: BSD 3-clause
|
||||
|
||||
54
Dockerfile
Normal file
@@ -0,0 +1,54 @@
|
||||
# KeePassXC Linux Release Build Dockerfile
|
||||
# Copyright (C) 2017 KeePassXC team <https://keepassxc.org/>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 or (at your option)
|
||||
# version 3 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
FROM ubuntu:14.04
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get update \
|
||||
&& apt-get install --yes software-properties-common
|
||||
|
||||
RUN set -x \
|
||||
&& add-apt-repository --yes ppa:beineri/opt-qt58-trusty
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get update \
|
||||
&& apt-get install --yes \
|
||||
g++ \
|
||||
cmake \
|
||||
libgcrypt20-dev \
|
||||
qt58base \
|
||||
qt58tools \
|
||||
qt58x11extras \
|
||||
libmicrohttpd-dev \
|
||||
libxi-dev \
|
||||
libxtst-dev \
|
||||
zlib1g-dev \
|
||||
wget \
|
||||
file \
|
||||
fuse \
|
||||
python
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get install --yes mesa-common-dev
|
||||
|
||||
VOLUME /keepassxc/src
|
||||
VOLUME /keepassxc/out
|
||||
WORKDIR /keepassxc
|
||||
|
||||
ENV CMAKE_PREFIX_PATH=/opt/qt58/lib/cmake
|
||||
ENV LD_LIBRARY_PATH=/opt/qt58/lib
|
||||
RUN set -x \
|
||||
&& echo /opt/qt58/lib > /etc/ld.so.conf.d/qt58.conf
|
||||
28
INSTALL
@@ -1,28 +0,0 @@
|
||||
Building:
|
||||
=========
|
||||
mkdir build
|
||||
cd build
|
||||
cmake [CMAKE PARAMETERS] ..
|
||||
make [-jX]
|
||||
|
||||
Common cmake parameters:
|
||||
========================
|
||||
-DCMAKE_INSTALL_PREFIX=/usr/local
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
-DCMAKE_BUILD_TYPE=<RelWithDebInfo/Debug/Release>
|
||||
-DWITH_GUI_TESTS=ON
|
||||
|
||||
Installing:
|
||||
===========
|
||||
make install [DESTDIR=X]
|
||||
|
||||
Create a bundle on Mac:
|
||||
make package
|
||||
|
||||
Run tests:
|
||||
==========
|
||||
make test [CTEST_OUTPUT_ON_FAILURE=1] [ARGS+=-jX] [ARGS+="-E testgui"]
|
||||
|
||||
OS specific instructions:
|
||||
=========================
|
||||
https://www.keepassx.org/dev/projects/keepassx/wiki/Install_instructions
|
||||
101
INSTALL.md
Normal file
@@ -0,0 +1,101 @@
|
||||
Install KeePassXC
|
||||
=================
|
||||
|
||||
This document will guide you across the steps to install KeePassXC.
|
||||
You can visit the online version of this document a the following link
|
||||
|
||||
https://github.com/keepassxreboot/keepassx/wiki/Install-Instruction-from-Source
|
||||
|
||||
|
||||
Build Dependencies
|
||||
==================
|
||||
|
||||
The following tools must exist within your PATH:
|
||||
|
||||
* make
|
||||
* cmake (>= 2.8.12)
|
||||
* g++ (>= 4.7) or clang++ (>= 3.0)
|
||||
|
||||
The following libraries are required:
|
||||
|
||||
* Qt 5 (>= 5.2): qtbase and qttools5
|
||||
* libgcrypt (>= 1.6)
|
||||
* zlib
|
||||
* libmicrohttpd
|
||||
* libxi, libxtst, qtx11extras (optional for auto-type on X11)
|
||||
|
||||
|
||||
Prepare the Building Environment
|
||||
================================
|
||||
|
||||
Building Environment on Linux ==> https://github.com/keepassxreboot/keepassx/wiki/Building-Environment-on-Linux
|
||||
Building Environment on Windows ==> https://github.com/keepassxreboot/keepassx/wiki/Building-Environment-on-Windows
|
||||
Building Environment on MacOS ==> https://github.com/keepassxreboot/keepassx/wiki/Building-Environment-on-MacOS
|
||||
|
||||
|
||||
Build Steps
|
||||
===========
|
||||
|
||||
To compile from source, open a **Terminal (on Linux/MacOS)** or a **MSYS2-MinGW shell (on Windows)**<br/>
|
||||
**Note:** on Windows make sure you are using a **MINGW shell** by checking the label before the current path
|
||||
|
||||
Navigate to the path you have downloaded KeePassXC and type these commands:
|
||||
|
||||
```
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DWITH_TESTS=OFF
|
||||
make
|
||||
```
|
||||
|
||||
**Note:** If you are on MacOS you must add this parameter to **Cmake**, with the Qt version you have installed<br/> `-DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.6.2/lib/cmake/`
|
||||
|
||||
You will have the compiled KeePassXC binary inside the `./build/src/` directory.
|
||||
|
||||
Common cmake parameters
|
||||
```
|
||||
-DCMAKE_INSTALL_PREFIX=/usr/local
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
-DCMAKE_BUILD_TYPE=<RelWithDebInfo/Debug/Release>
|
||||
-DWITH_GUI_TESTS=ON
|
||||
```
|
||||
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
To install this binary execute the following:
|
||||
|
||||
```bash
|
||||
sudo make install
|
||||
```
|
||||
|
||||
You can specify the destination dir with
|
||||
```
|
||||
DESTDIR=X
|
||||
```
|
||||
|
||||
|
||||
Packaging
|
||||
=========
|
||||
|
||||
You can create a package to redistribute KeePassXC (zip, deb, rpm, dmg, etc..)
|
||||
```
|
||||
make package
|
||||
```
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
You can perform test on the executable
|
||||
```
|
||||
make test
|
||||
```
|
||||
|
||||
Common parameters:
|
||||
```
|
||||
CTEST_OUTPUT_ON_FAILURE=1
|
||||
ARGS+=-jX
|
||||
ARGS+="-E testgui"
|
||||
```
|
||||
142
README.md
@@ -1,129 +1,65 @@
|
||||
# KeePassX
|
||||
# KeePassXC - KeePass Cross-platform Community Edition
|
||||
|
||||
[](https://travis-ci.org/keepassxreboot/keepassxc) [](https://coveralls.io/github/keepassxreboot/keepassxc)
|
||||
|
||||
## About
|
||||
KeePassXC is a fork of [KeePassX](https://www.keepassx.org/) that [aims to incorporate stalled pull requests, features, and bug fixes that have never made it into the main KeePassX repository](https://github.com/keepassxreboot/keepassx/issues/43).
|
||||
|
||||
KeePassX is an application for people with extremely high demands on secure personal data management.
|
||||
It has a light interface, is cross platform and published under the terms of the GNU General Public License.
|
||||
|
||||
KeePassX saves many different information e.g. user names, passwords, urls, attachments and comments in one single database.
|
||||
For a better management user-defined titles and icons can be specified for each single entry.
|
||||
Furthermore the entries are sorted in groups, which are customizable as well. The integrated search function allows to search in a single group or the complete database.
|
||||
KeePassX offers a little utility for secure password generation. The password generator is very customizable, fast and easy to use.
|
||||
Especially someone who generates passwords frequently will appreciate this feature.
|
||||
## Additional features compared to KeePassX
|
||||
- Autotype on all three major platforms (Linux, Windows, OS X)
|
||||
- Stand-alone password generator
|
||||
- Password strength meter
|
||||
- Use website's favicons as entry icons
|
||||
- Merging of databases
|
||||
- Automatic reload when the database changed on disk
|
||||
- KeePassHTTP support for use with [PassIFox](https://addons.mozilla.org/en-us/firefox/addon/passifox/) in Mozilla Firefox and [chromeIPass](https://chrome.google.com/webstore/detail/chromeipass/ompiailgknfdndiefoaoiligalphfdae) in Google Chrome or Chromium.
|
||||
|
||||
The complete database is always encrypted with the AES (aka Rijndael) encryption algorithm using a 256 bit key.
|
||||
Therefore the saved information can be considered as quite safe. KeePassX uses a database format that is compatible with [KeePass Password Safe](http://keepass.info/).
|
||||
This makes the use of that application even more favorable.
|
||||
For a full list of features and changes, read the [CHANGELOG](CHANGELOG) document.
|
||||
|
||||
## Install
|
||||
### Note about KeePassHTTP
|
||||
KeePassHTTP is not a highly secure protocol and has certain flaw which allow an attacker to decrypt your passwords when they manage to intercept communication between a KeePassHTTP server and PassIFox/chromeIPass over a network connection (see [here](https://github.com/pfn/keepasshttp/issues/258) and [here](https://github.com/keepassxreboot/keepassxc/issues/147)). KeePassXC therefore strictly limits communication between itself and the browser plugin to your local computer. As long as your computer is not compromised, your passwords are fairly safe that way, but still use it at your own risk!
|
||||
|
||||
KeePassX can be downloaded and installed using an assortment of installers available on the main [KeePassX website](http://www.keepassx.org).
|
||||
KeePassX can also be installed from the official repositories of many Linux repositories.
|
||||
If you wish to build KeePassX from source, rather than rely on the pre-compiled binaries, you may wish to read up on the _From Source_ section.
|
||||
### Installation
|
||||
Pre-compiled binaries can be found on the [downloads page](https://keepassxc.org/download). Additionally, individual Linux distributions may ship their own versions, so please check out your distribution's package list to see if KeePassXC is available.
|
||||
|
||||
### Debian
|
||||
### Building KeePassXC yourself
|
||||
|
||||
To install KeePassX from the Debian repository:
|
||||
*More detailed instructions are available in the INSTALL file or on the [Wiki page](https://github.com/keepassxreboot/keepassx/wiki/Install-Instruction-from-Source).*
|
||||
|
||||
First, you must download the KeePassXC [source tarball](https://keepassxc.org/download#source) or check out the latest version from our [Git repository](https://github.com/keepassxreboot/keepassxc).
|
||||
|
||||
To clone the project from Git, `cd` to a suitable location and run
|
||||
|
||||
```bash
|
||||
sudo apt-get install keepassx
|
||||
git clone https://github.com/keepassxreboot/keepassxc.git
|
||||
```
|
||||
|
||||
### Red Hat
|
||||
This will clone the entire contents of the repository and check out the current `develop` branch.
|
||||
|
||||
Install KeePassX from the Red Hat (or CentOS) repository:
|
||||
|
||||
```bash
|
||||
sudo yum install keepassx
|
||||
```
|
||||
|
||||
### Windows / Mac OS X
|
||||
|
||||
Download the installer from the KeePassX [download](https://www.keepassx.org/downloads) page.
|
||||
Once downloaded, double click on the file to execute the installer.
|
||||
|
||||
### From Source
|
||||
|
||||
#### Build Dependencies
|
||||
|
||||
The following tools must exist within your PATH:
|
||||
|
||||
* make
|
||||
* cmake (>= 2.6.4)
|
||||
* g++ or clang++
|
||||
|
||||
The following libraries are required:
|
||||
|
||||
* Qt 4 (>= 4.6)
|
||||
* libgcrypt
|
||||
* zlib
|
||||
* 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
|
||||
```
|
||||
|
||||
#### Build Steps
|
||||
|
||||
To compile from source:
|
||||
|
||||
```bash
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make [-jX]
|
||||
```
|
||||
|
||||
You will have the compiled KeePassX binary inside the `./build/src/` directory.
|
||||
|
||||
To install this binary execute the following:
|
||||
|
||||
```bash
|
||||
sudo make install
|
||||
```
|
||||
|
||||
More detailed instructions available in the INSTALL file.
|
||||
|
||||
## Contribute
|
||||
|
||||
Coordination of work between developers is handled through the [KeePassX development](https://www.keepassx.org/dev/) site.
|
||||
Requests for enhancements, or reports of bugs encountered, can also be reported through the KeePassX development site.
|
||||
However, members of the open-source community are encouraged to submit pull requests directly through GitHub.
|
||||
|
||||
### Clone Repository
|
||||
|
||||
Clone the repository to a suitable location where you can extend and build this project.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/keepassx/keepassx.git
|
||||
```
|
||||
|
||||
**Note:** This will clone the entire contents of the repository at the HEAD revision.
|
||||
|
||||
To update the project from within the project's folder you can run the following command:
|
||||
To update the project from within the project's folder, you can run the following command:
|
||||
|
||||
```bash
|
||||
git pull
|
||||
```
|
||||
|
||||
### Feature Requests
|
||||
Once you have downloaded the source code, you can `cd` into the source code directory and build and install KeePassXC with
|
||||
|
||||
We're always looking for suggestions to improve our application. If you have a suggestion for improving an existing feature,
|
||||
or would like to suggest a completely new feature for KeePassX, please file a ticket on the [KeePassX development](https://www.keepassx.org/dev/) site.
|
||||
```
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DWITH_TESTS=OFF ..
|
||||
make -j8
|
||||
sudo make install
|
||||
```
|
||||
|
||||
### Bug Reports
|
||||
To enable autotype, add `-DWITH_XC_AUTOTYPE=ON` to the `cmake` command. KeePassHTTP support is compiled in by adding `-DWITH_XC_HTTP=ON`. If these options are not specified, KeePassXC will be built without these plugins.
|
||||
|
||||
Our software isn't always perfect, but we strive to always improve our work. You may file bug reports on the [KeePassX development](https://www.keepassx.org/dev/) site.
|
||||
|
||||
### Pull Requests
|
||||
### Contributing
|
||||
|
||||
Along with our desire to hear your feedback and suggestions, we're also interested in accepting direct assistance in the form of code.
|
||||
We are always looking for suggestions how to improve our application. If you find any bugs or have an idea for a new feature, please let us know by opening a report in our [issue tracker](https://github.com/keepassxreboot/keepassxc/issues) on GitHub or write to our [Google Groups](https://groups.google.com/forum/#!forum/keepassx-reboot) forum.
|
||||
|
||||
Issue merge requests against our [GitHub repository](https://github.com/keepassx/keepassx).
|
||||
You can of course also directly contribute your own code. We are happy to accept your pull requests.
|
||||
|
||||
### Translations
|
||||
|
||||
Translations are managed on [Transifex](https://www.transifex.com/projects/p/keepassx/) which offers a web interface.
|
||||
Please join an existing language team or request a new one if there is none.
|
||||
Please read the [CONTRIBUTING](.github/CONTRIBUTING.md) document for further information.
|
||||
|
||||
197
cmake/CodeCoverage.cmake
Normal file
@@ -0,0 +1,197 @@
|
||||
# Copyright (c) 2012 - 2015, Lars Bilke
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without modification,
|
||||
# are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice, this
|
||||
# list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# 3. Neither the name of the copyright holder nor the names of its contributors
|
||||
# may be used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
#
|
||||
#
|
||||
# 2012-01-31, Lars Bilke
|
||||
# - Enable Code Coverage
|
||||
#
|
||||
# 2013-09-17, Joakim Söderberg
|
||||
# - Added support for Clang.
|
||||
# - Some additional usage instructions.
|
||||
#
|
||||
# USAGE:
|
||||
|
||||
# 0. (Mac only) If you use Xcode 5.1 make sure to patch geninfo as described here:
|
||||
# http://stackoverflow.com/a/22404544/80480
|
||||
#
|
||||
# 1. Copy this file into your cmake modules path.
|
||||
#
|
||||
# 2. Add the following line to your CMakeLists.txt:
|
||||
# INCLUDE(CodeCoverage)
|
||||
#
|
||||
# 3. Set compiler flags to turn off optimization and enable coverage:
|
||||
# SET(CMAKE_CXX_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
|
||||
# SET(CMAKE_C_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
|
||||
#
|
||||
# 3. Use the function SETUP_TARGET_FOR_COVERAGE to create a custom make target
|
||||
# which runs your test executable and produces a lcov code coverage report:
|
||||
# Example:
|
||||
# SETUP_TARGET_FOR_COVERAGE(
|
||||
# my_coverage_target # Name for custom target.
|
||||
# test_driver # Name of the test driver executable that runs the tests.
|
||||
# # NOTE! This should always have a ZERO as exit code
|
||||
# # otherwise the coverage generation will not complete.
|
||||
# coverage # Name of output directory.
|
||||
# )
|
||||
#
|
||||
# 4. Build a Debug build:
|
||||
# cmake -DCMAKE_BUILD_TYPE=Debug ..
|
||||
# make
|
||||
# make my_coverage_target
|
||||
#
|
||||
#
|
||||
|
||||
# Check prereqs
|
||||
FIND_PROGRAM( GCOV_PATH gcov )
|
||||
FIND_PROGRAM( LCOV_PATH lcov )
|
||||
FIND_PROGRAM( GENHTML_PATH genhtml )
|
||||
FIND_PROGRAM( GCOVR_PATH gcovr PATHS ${CMAKE_SOURCE_DIR}/tests)
|
||||
|
||||
IF(NOT GCOV_PATH)
|
||||
MESSAGE(FATAL_ERROR "gcov not found! Aborting...")
|
||||
ENDIF() # NOT GCOV_PATH
|
||||
|
||||
IF("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang")
|
||||
IF("${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS 3)
|
||||
MESSAGE(FATAL_ERROR "Clang version must be 3.0.0 or greater! Aborting...")
|
||||
ENDIF()
|
||||
ELSEIF(NOT CMAKE_COMPILER_IS_GNUCXX)
|
||||
MESSAGE(FATAL_ERROR "Compiler is not GNU gcc! Aborting...")
|
||||
ENDIF() # CHECK VALID COMPILER
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_COVERAGE
|
||||
"-g -O0 --coverage -fprofile-arcs -ftest-coverage"
|
||||
CACHE STRING "Flags used by the C++ compiler during coverage builds."
|
||||
FORCE )
|
||||
SET(CMAKE_C_FLAGS_COVERAGE
|
||||
"-g -O0 --coverage -fprofile-arcs -ftest-coverage"
|
||||
CACHE STRING "Flags used by the C compiler during coverage builds."
|
||||
FORCE )
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_COVERAGE
|
||||
""
|
||||
CACHE STRING "Flags used for linking binaries during coverage builds."
|
||||
FORCE )
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS_COVERAGE
|
||||
""
|
||||
CACHE STRING "Flags used by the shared libraries linker during coverage builds."
|
||||
FORCE )
|
||||
MARK_AS_ADVANCED(
|
||||
CMAKE_CXX_FLAGS_COVERAGE
|
||||
CMAKE_C_FLAGS_COVERAGE
|
||||
CMAKE_EXE_LINKER_FLAGS_COVERAGE
|
||||
CMAKE_SHARED_LINKER_FLAGS_COVERAGE )
|
||||
|
||||
IF ( NOT (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "Coverage"))
|
||||
MESSAGE( WARNING "Code coverage results with an optimized (non-Debug) build may be misleading" )
|
||||
ENDIF() # NOT CMAKE_BUILD_TYPE STREQUAL "Debug"
|
||||
|
||||
|
||||
# Param _targetname The name of new the custom make target
|
||||
# Param _testrunner The name of the target which runs the tests.
|
||||
# MUST return ZERO always, even on errors.
|
||||
# If not, no coverage report will be created!
|
||||
# Param _outputname lcov output is generated as _outputname.info
|
||||
# HTML report is generated in _outputname/index.html
|
||||
# Optional fourth parameter is passed as arguments to _testrunner
|
||||
# Pass them in list form, e.g.: "-j;2" for -j 2
|
||||
FUNCTION(SETUP_TARGET_FOR_COVERAGE _targetname _testrunner _outputname)
|
||||
|
||||
IF(NOT LCOV_PATH)
|
||||
MESSAGE(FATAL_ERROR "lcov not found! Aborting...")
|
||||
ENDIF() # NOT LCOV_PATH
|
||||
|
||||
IF(NOT GENHTML_PATH)
|
||||
MESSAGE(FATAL_ERROR "genhtml not found! Aborting...")
|
||||
ENDIF() # NOT GENHTML_PATH
|
||||
|
||||
SET(coverage_info "${CMAKE_BINARY_DIR}/${_outputname}.info")
|
||||
SET(coverage_cleaned "${coverage_info}.cleaned")
|
||||
|
||||
SEPARATE_ARGUMENTS(test_command UNIX_COMMAND "${_testrunner}")
|
||||
|
||||
# Setup target
|
||||
ADD_CUSTOM_TARGET(${_targetname}
|
||||
|
||||
# Cleanup lcov
|
||||
${LCOV_PATH} --directory . --zerocounters
|
||||
|
||||
# Run tests
|
||||
COMMAND ${test_command} ${ARGV3}
|
||||
|
||||
# Capturing lcov counters and generating report
|
||||
COMMAND ${LCOV_PATH} --directory . --capture --output-file ${coverage_info}
|
||||
COMMAND ${LCOV_PATH} --remove ${coverage_info} 'tests/*' '/usr/*' --output-file ${coverage_cleaned}
|
||||
COMMAND ${GENHTML_PATH} -o ${_outputname} ${coverage_cleaned}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${coverage_info} ${coverage_cleaned}
|
||||
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report."
|
||||
)
|
||||
|
||||
# Show info where to find the report
|
||||
ADD_CUSTOM_COMMAND(TARGET ${_targetname} POST_BUILD
|
||||
COMMAND ;
|
||||
COMMENT "Open ./${_outputname}/index.html in your browser to view the coverage report."
|
||||
)
|
||||
|
||||
ENDFUNCTION() # SETUP_TARGET_FOR_COVERAGE
|
||||
|
||||
# Param _targetname The name of new the custom make target
|
||||
# Param _testrunner The name of the target which runs the tests
|
||||
# Param _outputname cobertura output is generated as _outputname.xml
|
||||
# Optional fourth parameter is passed as arguments to _testrunner
|
||||
# Pass them in list form, e.g.: "-j;2" for -j 2
|
||||
FUNCTION(SETUP_TARGET_FOR_COVERAGE_COBERTURA _targetname _testrunner _outputname)
|
||||
|
||||
IF(NOT PYTHON_EXECUTABLE)
|
||||
MESSAGE(FATAL_ERROR "Python not found! Aborting...")
|
||||
ENDIF() # NOT PYTHON_EXECUTABLE
|
||||
|
||||
IF(NOT GCOVR_PATH)
|
||||
MESSAGE(FATAL_ERROR "gcovr not found! Aborting...")
|
||||
ENDIF() # NOT GCOVR_PATH
|
||||
|
||||
ADD_CUSTOM_TARGET(${_targetname}
|
||||
|
||||
# Run tests
|
||||
${_testrunner} ${ARGV3}
|
||||
|
||||
# Running gcovr
|
||||
COMMAND ${GCOVR_PATH} -x -r ${CMAKE_SOURCE_DIR} -e '${CMAKE_SOURCE_DIR}/tests/' -o ${_outputname}.xml
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
COMMENT "Running gcovr to produce Cobertura code coverage report."
|
||||
)
|
||||
|
||||
# Show info where to find the report
|
||||
ADD_CUSTOM_COMMAND(TARGET ${_targetname} POST_BUILD
|
||||
COMMAND ;
|
||||
COMMENT "Cobertura code coverage report saved in ${_outputname}.xml."
|
||||
)
|
||||
|
||||
ENDFUNCTION() # SETUP_TARGET_FOR_COVERAGE_COBERTURA
|
||||
9
cmake/FindLibGPGError.cmake
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
find_path(GPGERROR_INCLUDE_DIR gpg-error.h)
|
||||
|
||||
find_library(GPGERROR_LIBRARIES gpg-error)
|
||||
|
||||
mark_as_advanced(GPGERROR_LIBRARIES GPGERROR_INCLUDE_DIR)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LibGPGError DEFAULT_MSG GPGERROR_LIBRARIES GPGERROR_INCLUDE_DIR)
|
||||
9
cmake/FindLibMicroHTTPD.cmake
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
find_path(MHD_INCLUDE_DIR microhttpd.h)
|
||||
|
||||
find_library(MHD_LIBRARIES microhttpd)
|
||||
|
||||
mark_as_advanced(MHD_LIBRARIES MHD_INCLUDE_DIR)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LibMicroHTTPD DEFAULT_MSG MHD_LIBRARIES MHD_INCLUDE_DIR)
|
||||
118
cmake/GenerateProductVersion.cmake
Normal file
@@ -0,0 +1,118 @@
|
||||
# The MIT License (MIT)
|
||||
#
|
||||
# Copyright (c) 2015, by [halex2005](mailto:akharlov@gmail.com)
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
# this software and associated documentation files (the "Software"), to deal in
|
||||
# the Software without restriction, including without limitation the rights to
|
||||
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
# the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in all
|
||||
# copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
include (CMakeParseArguments)
|
||||
|
||||
set (GenerateProductVersionCurrentDir ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
# generate_product_version() function
|
||||
#
|
||||
# This function uses VersionInfo.in template file and VersionResource.rc file
|
||||
# to generate WIN32 resource with version information and general resource strings.
|
||||
#
|
||||
# Usage:
|
||||
# generate_product_version(
|
||||
# SomeOutputResourceVariable
|
||||
# NAME MyGreatProject
|
||||
# ICON ${PATH_TO_APP_ICON}
|
||||
# VERSION_MAJOR 2
|
||||
# VERSION_MINOR 3
|
||||
# VERSION_PATH ${BUILD_COUNTER}
|
||||
# VERSION_REVISION ${BUILD_REVISION}
|
||||
# )
|
||||
# where BUILD_COUNTER and BUILD_REVISION could be values from your CI server.
|
||||
#
|
||||
# You can use generated resource for your executable targets:
|
||||
# add_executable(target-name ${target-files} ${SomeOutputResourceVariable})
|
||||
#
|
||||
# You can specify resource strings in arguments:
|
||||
# NAME - name of executable (no defaults, ex: Microsoft Word)
|
||||
# BUNDLE - bundle (${NAME} is default, ex: Microsoft Office)
|
||||
# VERSION_MAJOR - 1 is default
|
||||
# VERSION_MINOR - 0 is default
|
||||
# VERSION_PATCH - 0 is default
|
||||
# COMPANY_NAME - your company name (no defaults)
|
||||
# COMPANY_COPYRIGHT - ${COMPANY_NAME} (C) Copyright ${CURRENT_YEAR} is default
|
||||
# COMMENTS - ${NAME} v${VERSION_MAJOR}.${VERSION_MINOR} is default
|
||||
# ORIGINAL_FILENAME - ${NAME} is default
|
||||
# INTERNAL_NAME - ${NAME} is default
|
||||
# FILE_DESCRIPTION - ${NAME} is default
|
||||
function(generate_product_version outfiles)
|
||||
set (options)
|
||||
set (oneValueArgs
|
||||
NAME
|
||||
BUNDLE
|
||||
VERSION_MAJOR
|
||||
VERSION_MINOR
|
||||
VERSION_PATCH
|
||||
COMPANY_NAME
|
||||
COMPANY_COPYRIGHT
|
||||
COMMENTS
|
||||
ORIGINAL_FILENAME
|
||||
INTERNAL_NAME
|
||||
FILE_DESCRIPTION)
|
||||
set (multiValueArgs)
|
||||
cmake_parse_arguments(PRODUCT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
if (NOT PRODUCT_BUNDLE OR "${PRODUCT_BUNDLE}" STREQUAL "")
|
||||
set(PRODUCT_BUNDLE "${PRODUCT_NAME}")
|
||||
endif()
|
||||
if (NOT PRODUCT_VERSION_MAJOR OR "${PRODUCT_VERSION_MAJOR}" STREQUAL "")
|
||||
set(PRODUCT_VERSION_MAJOR 1)
|
||||
endif()
|
||||
if (NOT PRODUCT_VERSION_MINOR OR "${PRODUCT_VERSION_MINOR}" STREQUAL "")
|
||||
set(PRODUCT_VERSION_MINOR 0)
|
||||
endif()
|
||||
if (NOT PRODUCT_VERSION_PATCH OR "${PRODUCT_VERSION_PATCH}" STREQUAL "")
|
||||
set(PRODUCT_VERSION_PATCH 0)
|
||||
endif()
|
||||
|
||||
if (NOT PRODUCT_COMPANY_COPYRIGHT OR "${PRODUCT_COMPANY_COPYRIGHT}" STREQUAL "")
|
||||
string(TIMESTAMP PRODUCT_CURRENT_YEAR "%Y")
|
||||
set(PRODUCT_COMPANY_COPYRIGHT "Copyright (C) ${PRODUCT_CURRENT_YEAR} ${PRODUCT_COMPANY_NAME}")
|
||||
endif()
|
||||
if (NOT PRODUCT_COMMENTS OR "${PRODUCT_COMMENTS}" STREQUAL "")
|
||||
set(PRODUCT_COMMENTS "${PRODUCT_NAME} v${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}")
|
||||
endif()
|
||||
if (NOT PRODUCT_ORIGINAL_FILENAME OR "${PRODUCT_ORIGINAL_FILENAME}" STREQUAL "")
|
||||
set(PRODUCT_ORIGINAL_FILENAME "${PRODUCT_NAME}")
|
||||
endif()
|
||||
if (NOT PRODUCT_INTERNAL_NAME OR "${PRODUCT_INTERNAL_NAME}" STREQUAL "")
|
||||
set(PRODUCT_INTERNAL_NAME "${PRODUCT_NAME}")
|
||||
endif()
|
||||
if (NOT PRODUCT_FILE_DESCRIPTION OR "${PRODUCT_FILE_DESCRIPTION}" STREQUAL "")
|
||||
set(PRODUCT_FILE_DESCRIPTION "${PRODUCT_NAME}")
|
||||
endif()
|
||||
|
||||
set (_VersionInfoFile ${CMAKE_CURRENT_BINARY_DIR}/VersionInfo.h)
|
||||
set (_VersionResourceFile ${CMAKE_CURRENT_BINARY_DIR}/VersionResource.rc)
|
||||
configure_file(
|
||||
${GenerateProductVersionCurrentDir}/VersionInfo.in
|
||||
${_VersionInfoFile}
|
||||
@ONLY)
|
||||
configure_file(
|
||||
${GenerateProductVersionCurrentDir}/VersionResource.rc
|
||||
${_VersionResourceFile}
|
||||
COPYONLY)
|
||||
list(APPEND ${outfiles} ${_VersionInfoFile} ${_VersionResourceFile})
|
||||
set (${outfiles} ${${outfiles}} PARENT_SCOPE)
|
||||
endfunction()
|
||||
68
cmake/VersionInfo.in
Normal file
@@ -0,0 +1,68 @@
|
||||
#pragma once
|
||||
|
||||
#ifndef PRODUCT_VERSION_MAJOR
|
||||
#define PRODUCT_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@
|
||||
#endif
|
||||
|
||||
#ifndef PRODUCT_VERSION_MINOR
|
||||
#define PRODUCT_VERSION_MINOR @PRODUCT_VERSION_MINOR@
|
||||
#endif
|
||||
|
||||
#ifndef PRODUCT_VERSION_PATCH
|
||||
#define PRODUCT_VERSION_PATCH @PRODUCT_VERSION_PATCH@
|
||||
#endif
|
||||
|
||||
#ifndef FILE_VERSION_MAJOR
|
||||
#define FILE_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@
|
||||
#endif
|
||||
|
||||
#ifndef FILE_VERSION_MINOR
|
||||
#define FILE_VERSION_MINOR @PRODUCT_VERSION_MINOR@
|
||||
#endif
|
||||
|
||||
#ifndef FILE_VERSION_PATCH
|
||||
#define FILE_VERSION_PATCH @PRODUCT_VERSION_PATCH@
|
||||
#endif
|
||||
|
||||
#ifndef __TO_STRING
|
||||
#define __TO_STRING_IMPL(x) #x
|
||||
#define __TO_STRING(x) __TO_STRING_IMPL(x)
|
||||
#endif
|
||||
|
||||
#define PRODUCT_VERSION_MAJOR_MINOR_STR __TO_STRING(PRODUCT_VERSION_MAJOR) "." __TO_STRING(PRODUCT_VERSION_MINOR)
|
||||
#define PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR PRODUCT_VERSION_MAJOR_MINOR_STR "." __TO_STRING(PRODUCT_VERSION_PATCH)
|
||||
#define PRODUCT_VERSION_RESOURCE PRODUCT_VERSION_MAJOR,PRODUCT_VERSION_MINOR,PRODUCT_VERSION_PATCH,0
|
||||
#define PRODUCT_VERSION_RESOURCE_STR PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR "\0"
|
||||
|
||||
#define FILE_VERSION_MAJOR_MINOR_STR __TO_STRING(FILE_VERSION_MAJOR) "." __TO_STRING(FILE_VERSION_MINOR)
|
||||
#define FILE_VERSION_MAJOR_MINOR_PATCH_STR FILE_VERSION_MAJOR_MINOR_STR "." __TO_STRING(FILE_VERSION_PATCH)
|
||||
#define FILE_VERSION_RESOURCE FILE_VERSION_MAJOR,FILE_VERSION_MINOR,FILE_VERSION_PATCH,0
|
||||
#define FILE_VERSION_RESOURCE_STR FILE_VERSION_MAJOR_MINOR_PATCH_STR "\0"
|
||||
|
||||
#ifndef PRODUCT_COMMENTS
|
||||
#define PRODUCT_COMMENTS "@PRODUCT_COMMENTS@\0"
|
||||
#endif
|
||||
|
||||
#ifndef PRODUCT_COMPANY_NAME
|
||||
#define PRODUCT_COMPANY_NAME "@PRODUCT_COMPANY_NAME@\0"
|
||||
#endif
|
||||
|
||||
#ifndef PRODUCT_COMPANY_COPYRIGHT
|
||||
#define PRODUCT_COMPANY_COPYRIGHT "@PRODUCT_COMPANY_COPYRIGHT@\0"
|
||||
#endif
|
||||
|
||||
#ifndef PRODUCT_FILE_DESCRIPTION
|
||||
#define PRODUCT_FILE_DESCRIPTION "@PRODUCT_FILE_DESCRIPTION@\0"
|
||||
#endif
|
||||
|
||||
#ifndef PRODUCT_INTERNAL_NAME
|
||||
#define PRODUCT_INTERNAL_NAME "@PRODUCT_NAME@\0"
|
||||
#endif
|
||||
|
||||
#ifndef PRODUCT_ORIGINAL_FILENAME
|
||||
#define PRODUCT_ORIGINAL_FILENAME "@PRODUCT_ORIGINAL_FILENAME@\0"
|
||||
#endif
|
||||
|
||||
#ifndef PRODUCT_BUNDLE
|
||||
#define PRODUCT_BUNDLE "@PRODUCT_BUNDLE@\0"
|
||||
#endif
|
||||
36
cmake/VersionResource.rc
Normal file
@@ -0,0 +1,36 @@
|
||||
#include "VersionInfo.h"
|
||||
#include "winresrc.h"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION FILE_VERSION_RESOURCE
|
||||
PRODUCTVERSION PRODUCT_VERSION_RESOURCE
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "Comments", PRODUCT_COMMENTS
|
||||
VALUE "CompanyName", PRODUCT_COMPANY_NAME
|
||||
VALUE "FileDescription", PRODUCT_FILE_DESCRIPTION
|
||||
VALUE "FileVersion", FILE_VERSION_RESOURCE_STR
|
||||
VALUE "InternalName", PRODUCT_INTERNAL_NAME
|
||||
VALUE "LegalCopyright", PRODUCT_COMPANY_COPYRIGHT
|
||||
VALUE "OriginalFilename", PRODUCT_ORIGINAL_FILENAME
|
||||
VALUE "ProductName", PRODUCT_BUNDLE
|
||||
VALUE "ProductVersion", PRODUCT_VERSION_RESOURCE_STR
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
682
release-tool
Executable file
@@ -0,0 +1,682 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# KeePassXC Release Preparation Helper
|
||||
# Copyright (C) 2017 KeePassXC team <https://keepassxc.org/>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 or (at your option)
|
||||
# version 3 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
echo -e "\e[1m\e[32mKeePassXC\e[0m Release Preparation Helper"
|
||||
echo -e "Copyright (C) 2017 KeePassXC Team <https://keepassxc.org/>\n"
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
# global default values
|
||||
# -----------------------------------------------------------------------
|
||||
RELEASE_NAME=""
|
||||
APP_NAME="KeePassXC"
|
||||
SRC_DIR="."
|
||||
GPG_KEY="CFB4C2166397D0D2"
|
||||
GPG_GIT_KEY=""
|
||||
OUTPUT_DIR="release"
|
||||
SOURCE_BRANCH=""
|
||||
TARGET_BRANCH="master"
|
||||
TAG_NAME=""
|
||||
DOCKER_IMAGE=""
|
||||
DOCKER_CONTAINER_NAME="keepassxc-build-container"
|
||||
CMAKE_OPTIONS=""
|
||||
COMPILER="g++"
|
||||
MAKE_OPTIONS="-j8"
|
||||
BUILD_PLUGINS="autotype"
|
||||
INSTALL_PREFIX="/usr/local"
|
||||
BUILD_SOURCE_TARBALL=true
|
||||
ORIG_BRANCH=""
|
||||
ORIG_CWD="$(pwd)"
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
# helper functions
|
||||
# -----------------------------------------------------------------------
|
||||
printUsage() {
|
||||
local cmd
|
||||
if [ "" == "$1" ] || [ "help" == "$1" ]; then
|
||||
cmd="COMMAND"
|
||||
elif [ "merge" == "$1" ] || [ "build" == "$1" ] || [ "sign" == "$1" ]; then
|
||||
cmd="$1"
|
||||
else
|
||||
logError "Unknown command: '$1'\n"
|
||||
cmd="COMMAND"
|
||||
fi
|
||||
|
||||
echo -e "\e[1mUsage:\e[0m $(basename $0) $cmd [options]"
|
||||
|
||||
if [ "COMMAND" == "$cmd" ]; then
|
||||
cat << EOF
|
||||
|
||||
Commands:
|
||||
merge Merge release branch into main branch and create release tags
|
||||
build Build and package binary release from sources
|
||||
sign Sign previously compiled release packages
|
||||
help Show help for the given command
|
||||
EOF
|
||||
elif [ "merge" == "$cmd" ]; then
|
||||
cat << EOF
|
||||
|
||||
Merge release branch into main branch and create release tags
|
||||
|
||||
Options:
|
||||
-v, --version Release version number or name (required)
|
||||
-a, --app-name Application name (default: '${APP_NAME}')
|
||||
-s, --source-dir Source directory (default: '${SRC_DIR}')
|
||||
-g, --gpg-key GPG key used to sign the merge commit and release tag,
|
||||
leave empty to let Git choose your default key
|
||||
(default: '${GPG_GIT_KEY}')
|
||||
-r, --release-branch Source release branch to merge from (default: 'release/VERSION')
|
||||
--target-branch Target branch to merge to (default: '${TARGET_BRANCH}')
|
||||
-t, --tag-name Override release tag name (defaults to version number)
|
||||
-h, --help Show this help
|
||||
EOF
|
||||
elif [ "build" == "$cmd" ]; then
|
||||
cat << EOF
|
||||
|
||||
Build and package binary release from sources
|
||||
|
||||
Options:
|
||||
-v, --version Release version number or name (required)
|
||||
-a, --app-name Application name (default: '${APP_NAME}')
|
||||
-s, --source-dir Source directory (default: '${SRC_DIR}')
|
||||
-o, --output-dir Output directory where to build the release
|
||||
(default: '${OUTPUT_DIR}')
|
||||
-t, --tag-name Release tag to check out (defaults to version number)
|
||||
-b, --build Build sources after exporting release
|
||||
-d, --docker-image Use the specified Docker image to compile the application.
|
||||
The image must have all required build dependencies installed.
|
||||
This option has no effect if --build is not set.
|
||||
--container-name Docker container name (default: '${DOCKER_CONTAINER_NAME}')
|
||||
The container must not exist already
|
||||
-c, --cmake-options Additional CMake options for compiling the sources
|
||||
--compiler Compiler to use (default: '${COMPILER}')
|
||||
-m, --make-options Make options for compiling sources (default: '${MAKE_OPTIONS}')
|
||||
-i, --install-prefix Install prefix (default: '${INSTALL_PREFIX}')
|
||||
-p, --plugins Space-separated list of plugins to build
|
||||
(default: ${BUILD_PLUGINS})
|
||||
-n, --no-source-tarball Don't build source tarball
|
||||
-h, --help Show this help
|
||||
EOF
|
||||
elif [ "sign" == "$cmd" ]; then
|
||||
cat << EOF
|
||||
|
||||
Sign previously compiled release packages
|
||||
|
||||
Options:
|
||||
-f, --files Files to sign (required)
|
||||
-g, --gpg-key GPG key used to sign the files (default: '${GPG_KEY}')
|
||||
-h, --help Show this help
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
logInfo() {
|
||||
echo -e "\e[1m[ \e[34mINFO\e[39m ]\e[0m $1"
|
||||
}
|
||||
|
||||
logError() {
|
||||
echo -e "\e[1m[ \e[31mERROR\e[39m ]\e[0m $1" >&2
|
||||
}
|
||||
|
||||
init() {
|
||||
ORIG_CWD="$(pwd)"
|
||||
cd "$SRC_DIR" > /dev/null 2>&1
|
||||
ORIG_BRANCH="$(git rev-parse --abbrev-ref HEAD 2> /dev/null)"
|
||||
cd "$ORIG_CWD"
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
logInfo "Checking out original branch..."
|
||||
if [ "" != "$ORIG_BRANCH" ]; then
|
||||
git checkout "$ORIG_BRANCH" > /dev/null 2>&1
|
||||
fi
|
||||
logInfo "Leaving source directory..."
|
||||
cd "$ORIG_CWD"
|
||||
}
|
||||
|
||||
exitError() {
|
||||
logError "$1"
|
||||
cleanup
|
||||
exit 1
|
||||
}
|
||||
|
||||
exitTrap() {
|
||||
exitError "Existing upon user request..."
|
||||
}
|
||||
|
||||
checkSourceDirExists() {
|
||||
if [ ! -d "$SRC_DIR" ]; then
|
||||
exitError "Source directory '${SRC_DIR}' does not exist!"
|
||||
fi
|
||||
}
|
||||
|
||||
checkOutputDirDoesNotExist() {
|
||||
if [ -e "$OUTPUT_DIR" ]; then
|
||||
exitError "Output directory '$OUTPUT_DIR' already exists. Please choose a different location!"
|
||||
fi
|
||||
}
|
||||
|
||||
checkGitRepository() {
|
||||
if [ ! -d .git ] || [ ! -f CHANGELOG ]; then
|
||||
exitError "Source directory is not a valid Git repository!"
|
||||
fi
|
||||
}
|
||||
|
||||
checkTagExists() {
|
||||
git tag | grep -q "$TAG_NAME"
|
||||
if [ $? -ne 0 ]; then
|
||||
exitError "Tag '${TAG_NAME}' does not exist!"
|
||||
fi
|
||||
}
|
||||
|
||||
checkReleaseDoesNotExist() {
|
||||
git tag | grep -q "$TAG_NAME"
|
||||
if [ $? -eq 0 ]; then
|
||||
exitError "Release '$RELEASE_NAME' (tag: '$TAG_NAME') already exists!"
|
||||
fi
|
||||
}
|
||||
|
||||
checkWorkingTreeClean() {
|
||||
git diff-index --quiet HEAD --
|
||||
if [ $? -ne 0 ]; then
|
||||
exitError "Current working tree is not clean! Please commit or unstage any changes."
|
||||
fi
|
||||
}
|
||||
|
||||
checkSourceBranchExists() {
|
||||
git rev-parse "$SOURCE_BRANCH" > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
exitError "Source branch '$SOURCE_BRANCH' does not exist!"
|
||||
fi
|
||||
}
|
||||
|
||||
checkTargetBranchExists() {
|
||||
git rev-parse "$TARGET_BRANCH" > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
exitError "Target branch '$TARGET_BRANCH' does not exist!"
|
||||
fi
|
||||
}
|
||||
|
||||
checkVersionInCMake() {
|
||||
local app_name_upper="$(echo "$APP_NAME" | tr '[:lower:]' '[:upper:]')"
|
||||
|
||||
grep -q "${app_name_upper}_VERSION \"${RELEASE_NAME}\"" CMakeLists.txt
|
||||
if [ $? -ne 0 ]; then
|
||||
exitError "${app_name_upper}_VERSION version not updated to '${RELEASE_NAME}' in CMakeLists.txt!"
|
||||
fi
|
||||
|
||||
grep -q "${app_name_upper}_VERSION_NUM \"${RELEASE_NAME}\"" CMakeLists.txt
|
||||
if [ $? -ne 0 ]; then
|
||||
exitError "${app_name_upper}_VERSION_NUM version not updated to '${RELEASE_NAME}' in CMakeLists.txt!"
|
||||
fi
|
||||
}
|
||||
|
||||
checkChangeLog() {
|
||||
if [ ! -f CHANGELOG ]; then
|
||||
exitError "No CHANGELOG file found!"
|
||||
fi
|
||||
|
||||
grep -qPzo "${RELEASE_NAME} \(\d{4}-\d{2}-\d{2}\)\n=+\n" CHANGELOG
|
||||
if [ $? -ne 0 ]; then
|
||||
exitError "CHANGELOG does not contain any information about the '${RELEASE_NAME}' release!"
|
||||
fi
|
||||
}
|
||||
|
||||
checkTransifexCommandExists() {
|
||||
command -v tx > /dev/null
|
||||
if [ 0 -ne $? ]; then
|
||||
exitError "Transifex tool 'tx' not installed! Please install it using 'pip install transifex-client'"
|
||||
fi
|
||||
}
|
||||
|
||||
# re-implement realpath for OS X (thanks mschrag)
|
||||
# https://superuser.com/questions/205127/
|
||||
if $(command -v realpath > /dev/null); then
|
||||
realpath() {
|
||||
pushd . > /dev/null
|
||||
if [ -d "$1" ]; then
|
||||
cd "$1"
|
||||
dirs -l +0
|
||||
else
|
||||
cd "$(dirname "$1")"
|
||||
cur_dir=$(dirs -l +0)
|
||||
|
||||
if [ "$cur_dir" == "/" ]; then
|
||||
echo "$cur_dir$(basename "$1")"
|
||||
else
|
||||
echo "$cur_dir/$(basename "$1")"
|
||||
fi
|
||||
fi
|
||||
popd > /dev/null
|
||||
}
|
||||
fi
|
||||
|
||||
|
||||
trap exitTrap SIGINT SIGTERM
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
# merge command
|
||||
# -----------------------------------------------------------------------
|
||||
merge() {
|
||||
while [ $# -ge 1 ]; do
|
||||
local arg="$1"
|
||||
case "$arg" in
|
||||
-v|--version)
|
||||
RELEASE_NAME="$2"
|
||||
shift ;;
|
||||
|
||||
-a|--app-name)
|
||||
APP_NAME="$2"
|
||||
shift ;;
|
||||
|
||||
-s|--source-dir)
|
||||
SRC_DIR="$2"
|
||||
shift ;;
|
||||
|
||||
-g|--gpg-key)
|
||||
GPG_GIT_KEY="$2"
|
||||
shift ;;
|
||||
|
||||
-r|--release-branch)
|
||||
SOURCE_BRANCH="$2"
|
||||
shift ;;
|
||||
|
||||
--target-branch)
|
||||
TARGET_BRANCH="$2"
|
||||
shift ;;
|
||||
|
||||
-t|--tag-name)
|
||||
TAG_NAME="$2"
|
||||
shift ;;
|
||||
|
||||
-h|--help)
|
||||
printUsage "merge"
|
||||
exit ;;
|
||||
|
||||
*)
|
||||
logError "Unknown option '$arg'\n"
|
||||
printUsage "merge"
|
||||
exit 1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "" == "$RELEASE_NAME" ]; then
|
||||
logError "Missing arguments, --version is required!\n"
|
||||
printUsage "merge"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "" == "$TAG_NAME" ]; then
|
||||
TAG_NAME="$RELEASE_NAME"
|
||||
fi
|
||||
|
||||
if [ "" == "$SOURCE_BRANCH" ]; then
|
||||
SOURCE_BRANCH="release/${RELEASE_NAME}"
|
||||
fi
|
||||
|
||||
init
|
||||
|
||||
SRC_DIR="$(realpath "$SRC_DIR")"
|
||||
|
||||
logInfo "Performing basic checks..."
|
||||
|
||||
checkSourceDirExists
|
||||
|
||||
logInfo "Changing to source directory..."
|
||||
cd "${SRC_DIR}"
|
||||
|
||||
checkTransifexCommandExists
|
||||
checkGitRepository
|
||||
checkReleaseDoesNotExist
|
||||
checkWorkingTreeClean
|
||||
checkSourceBranchExists
|
||||
checkTargetBranchExists
|
||||
checkVersionInCMake
|
||||
checkChangeLog
|
||||
|
||||
logInfo "All checks pass, getting our hands dirty now!"
|
||||
|
||||
logInfo "Checking out source branch..."
|
||||
git checkout "$SOURCE_BRANCH"
|
||||
|
||||
logInfo "Updating language files..."
|
||||
./share/translations/update.sh
|
||||
if [ 0 -ne $? ]; then
|
||||
exitError "Updating translations failed!"
|
||||
fi
|
||||
git diff-index --quiet HEAD --
|
||||
if [ $? -ne 0 ]; then
|
||||
git add ./share/translations/*
|
||||
logInfo "Committing changes..."
|
||||
if [ "" == "$GPG_GIT_KEY" ]; then
|
||||
git commit -m "Update translations"
|
||||
else
|
||||
git commit -m "Update translations" -S"$GPG_GIT_KEY"
|
||||
fi
|
||||
fi
|
||||
|
||||
logInfo "Checking out target branch '${TARGET_BRANCH}'..."
|
||||
git checkout "$TARGET_BRANCH"
|
||||
|
||||
logInfo "Merging '${SOURCE_BRANCH}' into '${TARGET_BRANCH}'..."
|
||||
|
||||
CHANGELOG=$(grep -Pzo "(?<=${RELEASE_NAME} \(\d{4}-\d{2}-\d{2}\)\n)=+\n\n?(?:.|\n)+?\n(?=\n)" \
|
||||
CHANGELOG | grep -Pzo '(?<=\n\n)(.|\n)+' | tr -d \\0)
|
||||
COMMIT_MSG="Release ${RELEASE_NAME}"
|
||||
|
||||
git merge "$SOURCE_BRANCH" --no-ff -m "$COMMIT_MSG" -m "${CHANGELOG}" "$SOURCE_BRANCH" -S"$GPG_GIT_KEY"
|
||||
|
||||
logInfo "Creating tag '${TAG_NAME}'..."
|
||||
if [ "" == "$GPG_GIT_KEY" ]; then
|
||||
git tag -a "$TAG_NAME" -m "$COMMIT_MSG" -m "${CHANGELOG}" -s
|
||||
else
|
||||
git tag -a "$TAG_NAME" -m "$COMMIT_MSG" -m "${CHANGELOG}" -s -u "$GPG_GIT_KEY"
|
||||
fi
|
||||
|
||||
cleanup
|
||||
|
||||
logInfo "All done!"
|
||||
logInfo "Please merge the release branch back into the develop branch now and then push your changes."
|
||||
logInfo "Don't forget to also push the tags using \e[1mgit push --tags\e[0m."
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
# build command
|
||||
# -----------------------------------------------------------------------
|
||||
build() {
|
||||
while [ $# -ge 1 ]; do
|
||||
local arg="$1"
|
||||
case "$arg" in
|
||||
-v|--version)
|
||||
RELEASE_NAME="$2"
|
||||
shift ;;
|
||||
|
||||
-a|--app-name)
|
||||
APP_NAME="$2"
|
||||
shift ;;
|
||||
|
||||
-s|--source-dir)
|
||||
SRC_DIR="$2"
|
||||
shift ;;
|
||||
|
||||
-o|--output-dir)
|
||||
OUTPUT_DIR="$2"
|
||||
shift ;;
|
||||
|
||||
-t|--tag-name)
|
||||
TAG_NAME="$2"
|
||||
shift ;;
|
||||
|
||||
-d|--docker-image)
|
||||
DOCKER_IMAGE="$2"
|
||||
shift ;;
|
||||
|
||||
--container-name)
|
||||
DOCKER_CONTAINER_NAME="$2"
|
||||
shift ;;
|
||||
|
||||
-c|--cmake-options)
|
||||
CMAKE_OPTIONS="$2"
|
||||
shift ;;
|
||||
|
||||
--compiler)
|
||||
COMPILER="$2"
|
||||
shift ;;
|
||||
|
||||
-m|--make-options)
|
||||
MAKE_OPTIONS="$2"
|
||||
shift ;;
|
||||
|
||||
-i|--install-prefix)
|
||||
INSTALL_PREFIX="$2"
|
||||
shift ;;
|
||||
|
||||
-p|--plugins)
|
||||
BUILD_PLUGINS="$2"
|
||||
shift ;;
|
||||
|
||||
-n|--no-source-tarball)
|
||||
BUILD_SOURCE_TARBALL=false ;;
|
||||
|
||||
-h|--help)
|
||||
printUsage "build"
|
||||
exit ;;
|
||||
|
||||
*)
|
||||
logError "Unknown option '$arg'\n"
|
||||
printUsage "build"
|
||||
exit 1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "" == "$RELEASE_NAME" ]; then
|
||||
logError "Missing arguments, --version is required!\n"
|
||||
printUsage "build"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "" == "$TAG_NAME" ]; then
|
||||
TAG_NAME="$RELEASE_NAME"
|
||||
fi
|
||||
|
||||
init
|
||||
|
||||
SRC_DIR="$(realpath "$SRC_DIR")"
|
||||
OUTPUT_DIR="$(realpath "$OUTPUT_DIR")"
|
||||
|
||||
logInfo "Performing basic checks..."
|
||||
|
||||
checkSourceDirExists
|
||||
|
||||
logInfo "Changing to source directory..."
|
||||
cd "${SRC_DIR}"
|
||||
|
||||
checkTagExists
|
||||
checkGitRepository
|
||||
checkWorkingTreeClean
|
||||
checkOutputDirDoesNotExist
|
||||
|
||||
logInfo "All checks pass, getting our hands dirty now!"
|
||||
|
||||
logInfo "Checking out release tag '${TAG_NAME}'..."
|
||||
git checkout "$TAG_NAME"
|
||||
|
||||
logInfo "Creating output directory..."
|
||||
mkdir -p "$OUTPUT_DIR"
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
exitError "Failed to create output directory!"
|
||||
fi
|
||||
|
||||
if $BUILD_SOURCE_TARBALL; then
|
||||
logInfo "Creating source tarball..."
|
||||
local app_name_lower="$(echo "$APP_NAME" | tr '[:upper:]' '[:lower:]')"
|
||||
TARBALL_NAME="${app_name_lower}-${RELEASE_NAME}-src.tar.xz"
|
||||
git archive --format=tar "$TAG_NAME" --prefix="${app_name_lower}-${RELEASE_NAME}/" \
|
||||
| xz -6 > "${OUTPUT_DIR}/${TARBALL_NAME}"
|
||||
fi
|
||||
|
||||
logInfo "Creating build directory..."
|
||||
mkdir -p "${OUTPUT_DIR}/build-release"
|
||||
cd "${OUTPUT_DIR}/build-release"
|
||||
|
||||
logInfo "Configuring sources..."
|
||||
for p in $BUILD_PLUGINS; do
|
||||
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DWITH_XC_$(echo $p | tr '[:lower:]' '[:upper:]')=On"
|
||||
done
|
||||
|
||||
if [ "$COMPILER" == "g++" ]; then
|
||||
export CC=gcc
|
||||
elif [ "$COMPILER" == "clang++" ]; then
|
||||
export CC=clang
|
||||
fi
|
||||
export CXX="$COMPILER"
|
||||
|
||||
if [ "" == "$DOCKER_IMAGE" ]; then
|
||||
if [ "$(uname -s)" == "Darwin" ]; then
|
||||
# Building on OS X
|
||||
local qt_vers="$(ls /usr/local/Cellar/qt5 2> /dev/null | sort -r | head -n1)"
|
||||
if [ "" == "$qt_vers" ]; then
|
||||
exitError "Couldn't find Qt5! Please make sure it is available in '/usr/local/Cellar/qt5'."
|
||||
fi
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.7
|
||||
|
||||
logInfo "Configuring build..."
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \
|
||||
-DCMAKE_OSX_ARCHITECTURES=x86_64 -DWITH_CXX11=OFF \
|
||||
-DCMAKE_PREFIX_PATH="/usr/local/Cellar/qt5/${qt_vers}/lib/cmake" \
|
||||
-DQT_BINARY_DIR="/usr/local/Cellar/qt5/${qt_vers}/bin" $CMAKE_OPTIONS "$SRC_DIR"
|
||||
|
||||
logInfo "Compiling and packaging sources..."
|
||||
make $MAKE_OPTIONS package
|
||||
|
||||
mv "./${APP_NAME}-${RELEASE_NAME}.dmg" ../
|
||||
elif [ "$(uname -o)" == "Msys" ]; then
|
||||
# Building on Windows with Msys
|
||||
logInfo "Configuring build..."
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=Off -G"MSYS Makefiles" \
|
||||
-DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" $CMAKE_OPTIONS "$SRC_DIR"
|
||||
|
||||
logInfo "Compiling and packaging sources..."
|
||||
make $MAKE_OPTIONS package
|
||||
|
||||
mv "./${APP_NAME}-${RELEASE_NAME}-"*.{exe,zip} ../
|
||||
else
|
||||
mkdir -p "${OUTPUT_DIR}/bin-release"
|
||||
|
||||
# Building on Linux without Docker container
|
||||
logInfo "Configuring build..."
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=Off $CMAKE_OPTIONS \
|
||||
-DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" "$SRC_DIR"
|
||||
|
||||
logInfo "Compiling sources..."
|
||||
make $MAKE_OPTIONS
|
||||
|
||||
logInfo "Installing to bin dir..."
|
||||
make DESTDIR="${OUTPUT_DIR}/bin-release" install/strip
|
||||
|
||||
logInfo "Creating AppImage..."
|
||||
${SRC_DIR}/AppImage-Recipe.sh "$APP_NAME" "$RELEASE_NAME"
|
||||
fi
|
||||
else
|
||||
mkdir -p "${OUTPUT_DIR}/bin-release"
|
||||
|
||||
logInfo "Launching Docker container to compile sources..."
|
||||
|
||||
docker run --name "$DOCKER_CONTAINER_NAME" --rm \
|
||||
--cap-add SYS_ADMIN --device /dev/fuse \
|
||||
-e "CC=${CC}" -e "CXX=${CXX}" \
|
||||
-v "$(realpath "$SRC_DIR"):/keepassxc/src:ro" \
|
||||
-v "$(realpath "$OUTPUT_DIR"):/keepassxc/out:rw" \
|
||||
"$DOCKER_IMAGE" \
|
||||
bash -c "cd /keepassxc/out/build-release && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=Off $CMAKE_OPTIONS \
|
||||
-DCMAKE_INSTALL_PREFIX=\"${INSTALL_PREFIX}\" /keepassxc/src && \
|
||||
make $MAKE_OPTIONS && make DESTDIR=/keepassxc/out/bin-release install/strip && \
|
||||
/keepassxc/src/AppImage-Recipe.sh "$APP_NAME" "$RELEASE_NAME""
|
||||
|
||||
if [ 0 -ne $? ]; then
|
||||
exitError "Docker build failed!"
|
||||
fi
|
||||
|
||||
logInfo "Build finished, Docker container terminated."
|
||||
fi
|
||||
|
||||
cleanup
|
||||
|
||||
logInfo "All done!"
|
||||
}
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
# sign command
|
||||
# -----------------------------------------------------------------------
|
||||
sign() {
|
||||
SIGN_FILES=()
|
||||
|
||||
while [ $# -ge 1 ]; do
|
||||
local arg="$1"
|
||||
case "$arg" in
|
||||
-f|--files)
|
||||
while [ "${2:0:1}" != "-" ] && [ $# -ge 2 ]; do
|
||||
SIGN_FILES+=("$2")
|
||||
shift
|
||||
done ;;
|
||||
|
||||
-g|--gpg-key)
|
||||
GPG_KEY="$2"
|
||||
shift ;;
|
||||
|
||||
-h|--help)
|
||||
printUsage "sign"
|
||||
exit ;;
|
||||
|
||||
*)
|
||||
logError "Unknown option '$arg'\n"
|
||||
printUsage "sign"
|
||||
exit 1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -z "$SIGN_FILES" ]; then
|
||||
logError "Missing arguments, --files is required!\n"
|
||||
printUsage "sign"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for f in "${SIGN_FILES[@]}"; do
|
||||
if [ ! -f "$f" ]; then
|
||||
exitError "File '${f}' does not exist!"
|
||||
fi
|
||||
|
||||
logInfo "Signing file '${f}'..."
|
||||
gpg --output "${f}.sig" --armor --local-user "$GPG_KEY" --detach-sig "$f"
|
||||
|
||||
if [ 0 -ne $? ]; then
|
||||
exitError "Signing failed!"
|
||||
fi
|
||||
|
||||
logInfo "Creating digest for file '${f}'..."
|
||||
sha256sum "$f" > "${f}.DIGEST"
|
||||
done
|
||||
|
||||
logInfo "All done!"
|
||||
}
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
# parse global command line
|
||||
# -----------------------------------------------------------------------
|
||||
MODE="$1"
|
||||
shift
|
||||
if [ "" == "$MODE" ]; then
|
||||
logError "Missing arguments!\n"
|
||||
printUsage
|
||||
exit 1
|
||||
elif [ "help" == "$MODE" ]; then
|
||||
printUsage "$1"
|
||||
exit
|
||||
elif [ "merge" == "$MODE" ] || [ "build" == "$MODE" ] || [ "sign" == "$MODE" ]; then
|
||||
$MODE "$@"
|
||||
else
|
||||
printUsage "$MODE"
|
||||
fi
|
||||
@@ -21,34 +21,99 @@ install(FILES ${DATABASE_ICONS} DESTINATION ${DATA_INSTALL_DIR}/icons/database)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
install(DIRECTORY icons/application/ DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor
|
||||
FILES_MATCHING PATTERN "keepassx.png" PATTERN "keepassx.svgz")
|
||||
FILES_MATCHING PATTERN "keepassx*.png" PATTERN "keepassx*.svgz"
|
||||
PATTERN "status" EXCLUDE PATTERN "actions" EXCLUDE)
|
||||
install(DIRECTORY icons/application/ DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor
|
||||
FILES_MATCHING PATTERN "application-x-keepassx.png" PATTERN "application-x-keepassx.svgz")
|
||||
install(FILES linux/keepassx.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||
install(FILES linux/keepassx.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages)
|
||||
FILES_MATCHING PATTERN "application-x-keepassxc.png" PATTERN "application-x-keepassxc.svgz"
|
||||
PATTERN "status" EXCLUDE PATTERN "actions" EXCLUDE)
|
||||
install(FILES linux/keepassxc.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||
install(FILES linux/keepassxc.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages)
|
||||
endif(UNIX AND NOT APPLE)
|
||||
|
||||
if(APPLE)
|
||||
install(FILES macosx/keepassx.icns DESTINATION ${DATA_INSTALL_DIR})
|
||||
install(FILES macosx/keepassxc.icns DESTINATION ${DATA_INSTALL_DIR})
|
||||
endif()
|
||||
|
||||
install(DIRECTORY icons/application/ DESTINATION ${DATA_INSTALL_DIR}/icons/application
|
||||
FILES_MATCHING PATTERN "*.png" PATTERN "*.svgz")
|
||||
|
||||
add_custom_target(icons
|
||||
COMMAND png2icns macosx/keepassx.icns
|
||||
icons/application/16x16/apps/keepassx.png
|
||||
icons/application/32x32/apps/keepassx.png
|
||||
icons/application/48x48/apps/keepassx.png
|
||||
icons/application/128x128/apps/keepassx.png
|
||||
icons/application/256x256/apps/keepassx.png
|
||||
COMMAND icotool -c -o windows/keepassx.ico
|
||||
icons/application/16x16/apps/keepassx.png
|
||||
icons/application/24x24/apps/keepassx.png
|
||||
icons/application/32x32/apps/keepassx.png
|
||||
icons/application/48x48/apps/keepassx.png
|
||||
icons/application/64x64/apps/keepassx.png
|
||||
icons/application/128x128/apps/keepassx.png
|
||||
icons/application/256x256/apps/keepassx.png
|
||||
# SVGZ to PNGs for KeePassXC
|
||||
COMMAND inkscape -z -w 16 -h 16
|
||||
icons/application/scalable/apps/keepassxc.svgz -e icons/application/16x16/apps/keepassxc.png
|
||||
COMMAND inkscape -z -w 24 -h 24
|
||||
icons/application/scalable/apps/keepassxc.svgz -e icons/application/24x24/apps/keepassxc.png
|
||||
COMMAND inkscape -z -w 32 -h 32
|
||||
icons/application/scalable/apps/keepassxc.svgz -e icons/application/32x32/apps/keepassxc.png
|
||||
COMMAND inkscape -z -w 48 -h 48
|
||||
icons/application/scalable/apps/keepassxc.svgz -e icons/application/48x48/apps/keepassxc.png
|
||||
COMMAND inkscape -z -w 64 -h 64
|
||||
icons/application/scalable/apps/keepassxc.svgz -e icons/application/64x64/apps/keepassxc.png
|
||||
COMMAND inkscape -z -w 128 -h 128
|
||||
icons/application/scalable/apps/keepassxc.svgz -e icons/application/128x128/apps/keepassxc.png
|
||||
COMMAND inkscape -z -w 256 -h 256
|
||||
icons/application/scalable/apps/keepassxc.svgz -e icons/application/256x256/apps/keepassxc.png
|
||||
|
||||
# SVGZ to PNGs for KeePassXC
|
||||
COMMAND inkscape -z -w 16 -h 16
|
||||
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/16x16/apps/keepassxc-dark.png
|
||||
COMMAND inkscape -z -w 24 -h 24
|
||||
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/24x24/apps/keepassxc-dark.png
|
||||
COMMAND inkscape -z -w 32 -h 32
|
||||
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/32x32/apps/keepassxc-dark.png
|
||||
COMMAND inkscape -z -w 48 -h 48
|
||||
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/48x48/apps/keepassxc-dark.png
|
||||
COMMAND inkscape -z -w 64 -h 64
|
||||
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/64x64/apps/keepassxc-dark.png
|
||||
COMMAND inkscape -z -w 128 -h 128
|
||||
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/128x128/apps/keepassxc-dark.png
|
||||
COMMAND inkscape -z -w 256 -h 256
|
||||
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/256x256/apps/keepassxc-dark.png
|
||||
|
||||
# SVGZ to PNGs for KeePassXC
|
||||
COMMAND inkscape -z -w 16 -h 16
|
||||
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/16x16/apps/keepassxc-locked.png
|
||||
COMMAND inkscape -z -w 24 -h 24
|
||||
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/24x24/apps/keepassxc-locked.png
|
||||
COMMAND inkscape -z -w 32 -h 32
|
||||
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/32x32/apps/keepassxc-locked.png
|
||||
COMMAND inkscape -z -w 48 -h 48
|
||||
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/48x48/apps/keepassxc-locked.png
|
||||
COMMAND inkscape -z -w 64 -h 64
|
||||
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/64x64/apps/keepassxc-locked.png
|
||||
COMMAND inkscape -z -w 128 -h 128
|
||||
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/128x128/apps/keepassxc-locked.png
|
||||
COMMAND inkscape -z -w 256 -h 256
|
||||
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/256x256/apps/keepassxc-locked.png
|
||||
|
||||
# SVGZ to PNGs for KeePassXC MIME-Type
|
||||
COMMAND inkscape -z -w 16 -h 16
|
||||
icons/application/scalable/mimetypes/application-x-keepassxc.svgz -e icons/application/16x16/mimetypes/application-x-keepassxc.png
|
||||
COMMAND inkscape -z -w 22 -h 22
|
||||
icons/application/scalable/mimetypes/application-x-keepassxc.svgz -e icons/application/22x22/mimetypes/application-x-keepassxc.png
|
||||
COMMAND inkscape -z -w 32 -h 32
|
||||
icons/application/scalable/mimetypes/application-x-keepassxc.svgz -e icons/application/32x32/mimetypes/application-x-keepassxc.png
|
||||
COMMAND inkscape -z -w 64 -h 64
|
||||
icons/application/scalable/mimetypes/application-x-keepassxc.svgz -e icons/application/64x64/mimetypes/application-x-keepassxc.png
|
||||
COMMAND inkscape -z -w 128 -h 128
|
||||
icons/application/scalable/mimetypes/application-x-keepassxc.svgz -e icons/application/128x128/mimetypes/application-x-keepassxc.png
|
||||
|
||||
# ICNS for MacOS
|
||||
COMMAND png2icns macosx/keepassxc.icns
|
||||
icons/application/16x16/apps/keepassxc.png
|
||||
icons/application/32x32/apps/keepassxc.png
|
||||
icons/application/48x48/apps/keepassxc.png
|
||||
icons/application/128x128/apps/keepassxc.png
|
||||
icons/application/256x256/apps/keepassxc.png
|
||||
|
||||
# ICO for Windows
|
||||
COMMAND icotool -c -o windows/keepassxc.ico
|
||||
icons/application/16x16/apps/keepassxc.png
|
||||
icons/application/24x24/apps/keepassxc.png
|
||||
icons/application/32x32/apps/keepassxc.png
|
||||
icons/application/48x48/apps/keepassxc.png
|
||||
icons/application/64x64/apps/keepassxc.png
|
||||
icons/application/128x128/apps/keepassxc.png
|
||||
icons/application/256x256/apps/keepassxc.png
|
||||
VERBATIM
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
|
Before Width: | Height: | Size: 9.0 KiB |
BIN
share/icons/application/128x128/apps/keepassxc-dark.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
share/icons/application/128x128/apps/keepassxc-locked.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
share/icons/application/128x128/apps/keepassxc.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
BIN
share/icons/application/16x16/actions/password-generator.png
Normal file
|
After Width: | Height: | Size: 733 B |
|
Before Width: | Height: | Size: 814 B |
BIN
share/icons/application/16x16/apps/keepassxc-dark.png
Normal file
|
After Width: | Height: | Size: 838 B |
BIN
share/icons/application/16x16/apps/keepassxc-locked.png
Normal file
|
After Width: | Height: | Size: 863 B |
BIN
share/icons/application/16x16/apps/keepassxc.png
Normal file
|
After Width: | Height: | Size: 880 B |
|
Before Width: | Height: | Size: 711 B |
|
After Width: | Height: | Size: 715 B |
BIN
share/icons/application/22x22/actions/password-generator.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
BIN
share/icons/application/24x24/apps/keepassxc-dark.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
share/icons/application/24x24/apps/keepassxc-locked.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
share/icons/application/24x24/apps/keepassxc.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 20 KiB |
BIN
share/icons/application/256x256/apps/keepassxc-dark.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
share/icons/application/256x256/apps/keepassxc-locked.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
share/icons/application/256x256/apps/keepassxc.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
BIN
share/icons/application/32x32/apps/keepassxc-dark.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
share/icons/application/32x32/apps/keepassxc-locked.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
share/icons/application/32x32/apps/keepassxc.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
BIN
share/icons/application/48x48/apps/keepassxc-dark.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
share/icons/application/48x48/apps/keepassxc-locked.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
share/icons/application/48x48/apps/keepassxc.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
BIN
share/icons/application/64x64/apps/keepassxc-dark.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
share/icons/application/64x64/apps/keepassxc-locked.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
share/icons/application/64x64/apps/keepassxc.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
BIN
share/icons/application/scalable/apps/keepassxc-dark.svgz
Normal file
BIN
share/icons/application/scalable/apps/keepassxc-locked.svgz
Normal file
BIN
share/icons/application/scalable/apps/keepassxc.svgz
Normal file
BIN
share/icons/svg/application-x-keepassxc-16.svgz
Normal file
BIN
share/icons/svg/application-x-keepassxc.svgz
Normal file
865
share/icons/svg/password-generator.svgz
Normal file
@@ -0,0 +1,865 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="128"
|
||||
height="128"
|
||||
id="svg1307"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46+devel"
|
||||
version="1.0"
|
||||
sodipodi:docname="roll.svgz"
|
||||
inkscape:output_extension="org.inkscape.output.svgz.inkscape"
|
||||
inkscape:export-filename="/home/pinheiro/pics/oxygen-icons/scalable/actions/roll.png"
|
||||
inkscape:export-xdpi="180"
|
||||
inkscape:export-ydpi="180">
|
||||
<defs
|
||||
id="defs1309">
|
||||
<linearGradient
|
||||
id="linearGradient3718"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop3720"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3722"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3680">
|
||||
<stop
|
||||
id="stop3682"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.49803922;"
|
||||
offset="0.22032471"
|
||||
id="stop3684" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="0.5"
|
||||
id="stop3686" />
|
||||
<stop
|
||||
id="stop3688"
|
||||
offset="0.5"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
<stop
|
||||
id="stop3690"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3291">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3293" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3295" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 64 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="128 : 64 : 1"
|
||||
inkscape:persp3d-origin="64 : 42.666667 : 1"
|
||||
id="perspective87" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2381">
|
||||
<stop
|
||||
style="stop-color:#393939;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2383" />
|
||||
<stop
|
||||
style="stop-color:#393939;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2385" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2518">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2520" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2522" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2496">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2498" />
|
||||
<stop
|
||||
id="stop2508"
|
||||
offset="0.04228718"
|
||||
style="stop-color:#ffffff;stop-opacity:0.49803922;" />
|
||||
<stop
|
||||
id="stop2504"
|
||||
offset="0.5"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="0.5"
|
||||
id="stop2506" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2500" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2488">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2490" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2492" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2453">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2455" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2457" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2419">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2421" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2423" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3225">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3227" />
|
||||
<stop
|
||||
id="stop2347"
|
||||
offset="0.5"
|
||||
style="stop-color:#e9e9e9;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#d3d3d3;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3229" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2419"
|
||||
id="radialGradient2425"
|
||||
cx="96.433075"
|
||||
cy="57.087173"
|
||||
fx="96.433075"
|
||||
fy="57.087173"
|
||||
r="59.198612"
|
||||
gradientTransform="matrix(0.32911414,-0.18426278,0.00344988,0.00676072,59.169639,65.342464)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2419"
|
||||
id="radialGradient2429"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.31464719,0.16663594,-0.00390006,0.0070264,6.1939502,29.102501)"
|
||||
cx="96.433075"
|
||||
cy="57.087173"
|
||||
fx="96.433075"
|
||||
fy="57.087173"
|
||||
r="59.198612" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2419"
|
||||
id="radialGradient2433"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-6.5370771e-4,0.36915148,-0.01148035,8.9888928e-4,66.206754,56.948367)"
|
||||
cx="96.433075"
|
||||
cy="57.087173"
|
||||
fx="96.433075"
|
||||
fy="57.087173"
|
||||
r="59.198612" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2419"
|
||||
id="radialGradient2480"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.30975608,-0.17225438,0.00324696,0.00631933,7.1075276,35.761713)"
|
||||
cx="96.433075"
|
||||
cy="57.087173"
|
||||
fx="96.433075"
|
||||
fy="57.087173"
|
||||
r="59.198612" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2419"
|
||||
id="radialGradient2484"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.30528058,0.15922188,-0.00378396,0.00671573,60.709321,2.5331232)"
|
||||
cx="96.433075"
|
||||
cy="57.087173"
|
||||
fx="96.433075"
|
||||
fy="57.087173"
|
||||
r="59.198612" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2496"
|
||||
id="linearGradient1432"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.814691,-0.4513534,-0.01142073,0.9309698,-11.541647,47.221462)"
|
||||
x1="116.81535"
|
||||
y1="186.85913"
|
||||
x2="154.86906"
|
||||
y2="30.208342" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3718"
|
||||
id="radialGradient1435"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.4096939,-0.05084026,0.0016784,0.495142,37.98752,30.25767)"
|
||||
cx="68.964005"
|
||||
cy="63.915367"
|
||||
fx="68.964005"
|
||||
fy="63.915367"
|
||||
r="20.153163" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2518"
|
||||
id="radialGradient1438"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.68188455,-0.10453237,0.03601738,0.43439777,16.732111,38.459404)"
|
||||
cx="68.964005"
|
||||
cy="63.915367"
|
||||
fx="68.964005"
|
||||
fy="63.915367"
|
||||
r="20.153163" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2488"
|
||||
id="linearGradient1441"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="94.021759"
|
||||
y1="3.2521791"
|
||||
x2="92.337082"
|
||||
y2="6.8190994"
|
||||
gradientTransform="matrix(0.77496397,-0.47736424,0.41995021,0.75244601,-11.810014,48.172506)" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3225"
|
||||
id="radialGradient1456"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.80824314,-0.45051001,-0.01677524,0.96571805,-10.092238,38.234456)"
|
||||
cx="113.60279"
|
||||
cy="117.94415"
|
||||
fx="113.60279"
|
||||
fy="117.94415"
|
||||
r="6.6403217" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3225"
|
||||
id="radialGradient1459"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.80824314,-0.45051001,-0.01677524,0.96571805,-12.747064,45.293861)"
|
||||
cx="148.67097"
|
||||
cy="79.114578"
|
||||
fx="148.67097"
|
||||
fy="79.114578"
|
||||
r="6.2969127" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3225"
|
||||
id="radialGradient1463"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.76906443,0.41392843,-0.01330547,0.86085475,-11.512513,48.253962)"
|
||||
cx="59.905712"
|
||||
cy="5.9431438"
|
||||
fx="59.905712"
|
||||
fy="5.9431438"
|
||||
r="7.4961972" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3225"
|
||||
id="radialGradient1467"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.81000807,-0.44693085,0.84280642,0.45175053,-16.121677,46.553274)"
|
||||
cx="84.408051"
|
||||
cy="50.798088"
|
||||
fx="84.408051"
|
||||
fy="50.798088"
|
||||
r="6.9240074" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3225"
|
||||
id="radialGradient1471"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.81000807,-0.44693085,0.84280642,0.45175053,-13.240155,47.67091)"
|
||||
cx="67.268486"
|
||||
cy="30.446516"
|
||||
fx="67.268486"
|
||||
fy="30.446516"
|
||||
r="6.8208823" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3225"
|
||||
id="radialGradient1474"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.81000807,-0.44693085,0.84280642,0.45175053,-11.409803,49.062709)"
|
||||
cx="49.933464"
|
||||
cy="9.8521395"
|
||||
fx="49.933464"
|
||||
fy="9.8521395"
|
||||
r="6.9496646" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2453"
|
||||
id="radialGradient1480"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.5645257,-0.34773821,0.28363904,0.50821111,10.679939,54.077116)"
|
||||
cx="67.876709"
|
||||
cy="60.201225"
|
||||
fx="67.876709"
|
||||
fy="60.201225"
|
||||
r="60.815896" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2381"
|
||||
id="linearGradient2387"
|
||||
x1="-90.709442"
|
||||
y1="153.80435"
|
||||
x2="78.643684"
|
||||
y2="12.660598"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.75854865,0.40826863,-0.0137637,0.89050228,-5.4092216,29.668461)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3291"
|
||||
id="linearGradient3297"
|
||||
x1="57.296326"
|
||||
y1="-20.721647"
|
||||
x2="67.490227"
|
||||
y2="55.915768"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3291"
|
||||
id="linearGradient3301"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="57.296326"
|
||||
y1="-16.490377"
|
||||
x2="57.296326"
|
||||
y2="45.567513" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3429"
|
||||
x="-0.090069178"
|
||||
width="1.1801384"
|
||||
y="-0.16560408"
|
||||
height="1.3312082">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.68605903"
|
||||
id="feGaussianBlur3431" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3433"
|
||||
x="-0.091769746"
|
||||
width="1.1835395"
|
||||
y="-0.1687308"
|
||||
height="1.3374616">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.68605903"
|
||||
id="feGaussianBlur3435" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3437"
|
||||
x="-0.090402938"
|
||||
width="1.1808059"
|
||||
y="-0.16621775"
|
||||
height="1.3324355">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.68605903"
|
||||
id="feGaussianBlur3439" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3482"
|
||||
x="-0.039611745"
|
||||
width="1.0792235"
|
||||
y="-0.29708207"
|
||||
height="1.5941641">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="1.3721181"
|
||||
id="feGaussianBlur3484" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3518">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.45785798"
|
||||
id="feGaussianBlur3520" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3574">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="1.0125102"
|
||||
id="feGaussianBlur3576" />
|
||||
</filter>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2453"
|
||||
id="radialGradient3638"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.634595,-0.3859285,-0.3188445,0.5737883,277.62315,52.360143)"
|
||||
cx="67.876709"
|
||||
cy="60.201225"
|
||||
fx="67.876709"
|
||||
fy="60.201225"
|
||||
r="60.815896" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3225"
|
||||
id="radialGradient3640"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.8645212,0.4720778,1.4956952e-2,0.9675874,302.57014,45.61879)"
|
||||
cx="59.905712"
|
||||
cy="5.9431438"
|
||||
fx="59.905712"
|
||||
fy="5.9431438"
|
||||
r="7.4961972" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3225"
|
||||
id="radialGradient3642"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.9085628,-0.4993103,1.8857387e-2,1.0854359,303.95792,42.280409)"
|
||||
cx="148.67097"
|
||||
cy="79.114578"
|
||||
fx="148.67097"
|
||||
fy="79.114578"
|
||||
r="6.2969127" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3225"
|
||||
id="radialGradient3644"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.9085628,-0.4993103,1.8857387e-2,1.0854359,300.97358,34.368164)"
|
||||
cx="113.60279"
|
||||
cy="117.94415"
|
||||
fx="113.60279"
|
||||
fy="117.94415"
|
||||
r="6.6403217" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2419"
|
||||
id="radialGradient3646"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.369964,-0.2042355,-3.878083e-3,7.6302398e-3,223.11488,65.450748)"
|
||||
cx="96.433075"
|
||||
cy="57.087173"
|
||||
fx="96.433075"
|
||||
fy="57.087173"
|
||||
r="59.198612" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2419"
|
||||
id="radialGradient3648"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.3537014,0.1900896,4.3841428e-3,7.864176e-3,282.66594,24.246158)"
|
||||
cx="96.433075"
|
||||
cy="57.087173"
|
||||
fx="96.433075"
|
||||
fy="57.087173"
|
||||
r="59.198612" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2419"
|
||||
id="radialGradient3650"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(7.3484633e-4,0.414965,1.2905298e-2,9.0936266e-4,214.00431,56.076739)"
|
||||
cx="96.433075"
|
||||
cy="57.087173"
|
||||
fx="96.433075"
|
||||
fy="57.087173"
|
||||
r="59.198612" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2419"
|
||||
id="radialGradient3652"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.369964,-0.2042355,-3.878083e-3,7.6302398e-3,282.46217,32.207255)"
|
||||
cx="96.433075"
|
||||
cy="57.087173"
|
||||
fx="96.433075"
|
||||
fy="57.087173"
|
||||
r="59.198612" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2419"
|
||||
id="radialGradient3654"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.3537014,0.1900896,4.3841428e-3,7.864176e-3,223.01536,-6.4711824)"
|
||||
cx="96.433075"
|
||||
cy="57.087173"
|
||||
fx="96.433075"
|
||||
fy="57.087173"
|
||||
r="59.198612" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2488"
|
||||
id="linearGradient3656"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.871153,-0.5297908,-0.4720747,0.8495381,302.90457,45.524605)"
|
||||
x1="94.021759"
|
||||
y1="3.2521791"
|
||||
x2="92.337082"
|
||||
y2="6.8190994" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2518"
|
||||
id="radialGradient3658"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.7665205,-0.1115024,-4.0487885e-2,0.4886327,270.81978,34.857245)"
|
||||
cx="68.964005"
|
||||
cy="63.915367"
|
||||
fx="68.964005"
|
||||
fy="63.915367"
|
||||
r="20.153163" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2518"
|
||||
id="radialGradient3660"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.2230559,-1.7307682e-2,7.7435003e-3,0.4922829,50.471168,28.127869)"
|
||||
cx="68.964005"
|
||||
cy="63.915367"
|
||||
fx="68.964005"
|
||||
fy="63.915367"
|
||||
r="20.153163" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2496"
|
||||
id="linearGradient3662"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.814691,-0.4513534,-1.1420728e-2,0.9309698,-11.541647,47.22146)"
|
||||
x1="116.81535"
|
||||
y1="186.85913"
|
||||
x2="154.86906"
|
||||
y2="30.208342" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2381"
|
||||
id="linearGradient3664"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.8527002,0.4656229,1.5472064e-2,1.0009108,295.7093,24.780188)"
|
||||
x1="-90.709442"
|
||||
y1="153.80435"
|
||||
x2="78.643684"
|
||||
y2="12.660598" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3291"
|
||||
id="linearGradient3666"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="57.296326"
|
||||
y1="-16.490377"
|
||||
x2="57.296326"
|
||||
y2="45.567513" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3225"
|
||||
id="radialGradient3668"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.9105468,-0.4952714,-0.9474161,0.5152438,302.45468,46.528825)"
|
||||
cx="49.933464"
|
||||
cy="9.8521395"
|
||||
fx="49.933464"
|
||||
fy="9.8521395"
|
||||
r="6.9496646" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3225"
|
||||
id="radialGradient3670"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.9105468,-0.4952714,-0.9474161,0.5152438,304.51222,44.948156)"
|
||||
cx="67.268486"
|
||||
cy="30.446516"
|
||||
fx="67.268486"
|
||||
fy="30.446516"
|
||||
r="6.8208823" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3225"
|
||||
id="radialGradient3672"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.9105468,-0.4952714,-0.9474161,0.5152438,307.7514,43.666425)"
|
||||
cx="84.408051"
|
||||
cy="50.798088"
|
||||
fx="84.408051"
|
||||
fy="50.798088"
|
||||
r="6.9240074" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3680"
|
||||
id="linearGradient3678"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.814691,-0.4513534,-0.01142073,0.9309698,-11.541647,47.221462)"
|
||||
x1="274.36163"
|
||||
y1="186.47618"
|
||||
x2="42.380108"
|
||||
y2="13.043629" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3714">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.42187368"
|
||||
id="feGaussianBlur3716" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3753">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.76746435"
|
||||
id="feGaussianBlur3755" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.0078888"
|
||||
inkscape:cx="119.14631"
|
||||
inkscape:cy="77.382382"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
guidetolerance="0.1px"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="1106"
|
||||
inkscape:window-height="958"
|
||||
inkscape:window-x="376"
|
||||
inkscape:window-y="25" />
|
||||
<metadata
|
||||
id="metadata1312">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title>Oxygen team</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/LGPL/2.1/">
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Notice" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/SourceCode" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="fill:#181818;fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter3753)"
|
||||
d="m 63.6875,11.34375 c -0.307888,0.01157 -0.622049,0.03822 -0.9375,0.0625 -0.124077,0.0093 -0.251114,0.0201 -0.375,0.03125 -0.05233,0.0049 -0.103739,0.02601 -0.15625,0.03125 -0.712,0.06846 -1.428165,0.153454 -2.125,0.28125 -0.155698,0.02997 -0.311968,0.06025 -0.46875,0.09375 -1.997959,0.408268 -3.903345,1.039509 -5.53125,1.9375 -0.566172,0.280908 -1.121148,0.597939 -1.6875,0.9375 l -2.0625,1.125 c -3.384614,1.788314 -7.092461,4.343647 -12.375,7.28125 -3.43228,1.90868 -6.456933,3.625939 -9.1875,5.1875 l -4.96875,2.75 c -0.498481,0.274974 -0.961001,0.544756 -1.375,0.84375 l -0.3125,0.1875 c -0.268281,0.175855 -0.545708,0.372427 -0.8125,0.5625 -0.966273,0.596455 -1.527441,1.009092 -1.5,1.0625 0.0068,0.0132 0.146679,-0.07019 0.21875,-0.09375 -3.962556,3.207756 -7.410412,7.880262 -8,12.96875 L 12.0625,46.75 c -0.07009,0.509421 -0.116296,1.030587 -0.125,1.59375 L 10.34375,83.3125 c -0.105144,6.80274 4.445942,14.767952 10.21875,17.875 L 53.8125,119 c 0.416106,0.22396 0.814802,0.4009 1.21875,0.5625 6.179168,2.49704 14.387189,2.03917 19.03125,-0.53125 0.38938,-0.16551 0.784222,-0.33772 1.1875,-0.5625 l 31.125,-17.75 c 5.44542,-3.035234 9.8947,-10.375507 10,-16.4375 l -0.34375,-35.625 c 0.006,-0.33561 -0.0106,-0.655677 -0.0313,-0.96875 l 0.125,-0.21875 C 115.17195,41.889964 112.94649,34.769399 108.25,32.1875 l -1.375,-0.59375 C 106.25301,31.004608 98.645471,26.824191 89.15625,21.875 85.474411,19.954703 82.224469,18.29233 79.34375,16.84375 l -6.53125,-3.5 c -2.121537,-1.139951 -3.811692,-1.796844 -6.625,-1.96875 -0.253862,-0.01693 -0.519547,-0.02233 -0.78125,-0.03125 -0.147499,-0.0043 -0.289561,0.0017 -0.4375,0 -0.414575,-0.0064 -0.85006,-0.0162 -1.28125,0 z"
|
||||
id="path2913"
|
||||
sodipodi:nodetypes="cssssscccscccccscccccccccccccccccsccsssc" />
|
||||
<path
|
||||
style="fill:#181818;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
d="m 21.128502,28.09122 c -4.766214,3.124206 -9.405072,8.541154 -10.096359,14.50736 l 8.629169,48.78787 35.366196,27.16282 c 5.06326,2.14656 14.524273,2.44687 19.76131,-0.92915 L 117.12128,43.463792 c -0.95305,-5.578786 -3.1596,-12.685613 -7.85609,-15.267512 L 76.187417,14.016615 27.411339,24.642694 21.128502,28.09122 z"
|
||||
id="path2415"
|
||||
sodipodi:nodetypes="cccccccccc" />
|
||||
<path
|
||||
style="opacity:0;fill:url(#radialGradient1480);fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
d="m 21.128502,28.09122 c -4.766214,3.124206 -9.405072,8.541154 -10.096359,14.50736 l 8.629169,48.78787 37.487054,27.87435 c 4.487477,0.90002 9.451421,1.77535 17.640452,-2.89762 L 117.12128,43.463792 c -0.95305,-5.578786 -3.1596,-12.685613 -7.85609,-15.267512 L 76.187417,14.016615 27.411339,24.642694 21.128502,28.09122 z"
|
||||
id="path2435"
|
||||
sodipodi:nodetypes="cccccccccc" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 21.534884,37.678074 33.235279,17.969949 c 5.772809,3.10706 10.335586,11.084985 10.230441,17.887724 l -0.586755,37.784793 c -0.105145,6.80273 -4.837214,9.77795 -10.610022,6.67089 L 20.568547,100.1994 C 14.795739,97.092352 10.232963,89.114423 10.338107,82.311683 l 0.586756,-37.96271 c 0.105144,-6.802738 4.837213,-9.777959 10.610021,-6.670899 z"
|
||||
id="rect1412"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
style="fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="M 22.804196,27.057004 54.101765,9.7925263 C 59.722729,6.6918703 68.514472,6.488197 73.814194,9.3358593 L 108.41349,27.926853 c 5.29972,2.847662 5.0411,7.636379 -0.57986,10.737037 L 76.536061,55.928366 c -5.620963,3.100656 -14.412707,3.304329 -19.712429,0.456667 L 22.224339,37.79404 c -5.299722,-2.847662 -5.041106,-7.636381 0.579857,-10.737036 z"
|
||||
id="rect1414" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="M 76.279616,56.950767 107.40321,39.201951 c 5.44542,-3.03524 9.7445,-0.598541 9.6392,5.463458 l -0.65538,38.618606 c -0.1053,6.061993 -4.57393,13.385785 -10.01935,16.421019 L 75.244086,117.45385 c -5.445414,3.03523 -9.744496,0.59853 -9.639194,-5.46346 l 0.65538,-38.61861 c 0.105301,-6.062 4.57393,-13.385772 10.019344,-16.421013 z"
|
||||
id="rect1416"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
style="fill:url(#radialGradient1463);fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 34.579473,71.713674 c 3.193841,1.719 5.720571,5.980985 5.665315,9.556022 -0.05526,3.575036 -2.670955,5.069246 -5.864796,3.350246 -3.19384,-1.719 -5.720571,-5.980986 -5.665314,-9.556022 0.05526,-3.575036 2.670954,-5.069247 5.864795,-3.350246 z"
|
||||
id="rect2299" />
|
||||
<path
|
||||
style="fill:url(#radialGradient1459);fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 106.19386,48.637332 c 2.81955,-1.571604 5.04233,-0.124684 4.98382,3.244214 -0.0585,3.368899 -2.37553,7.346262 -5.19509,8.917866 -2.81954,1.571599 -5.04232,0.124685 -4.9838,-3.244214 0.0585,-3.368897 2.37552,-7.346266 5.19507,-8.917866 z"
|
||||
id="rect2301" />
|
||||
<path
|
||||
style="fill:url(#radialGradient1456);fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 79.85942,94.543208 c 2.973317,-1.657309 5.317323,-0.131486 5.255611,3.421141 -0.06171,3.552621 -2.505079,7.746891 -5.478396,9.404201 -2.973318,1.65731 -5.317324,0.13148 -5.255611,-3.42112 0.06171,-3.55264 2.505079,-7.746904 5.478396,-9.404222 z"
|
||||
id="rect2303" />
|
||||
<path
|
||||
style="fill:url(#radialGradient2425);fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 110.58717,37.051279 c 0.11274,0.220925 -8.5242,5.287057 -19.278872,11.30833 -10.754671,6.021272 -19.574594,10.728803 -19.687327,10.507878 -0.112734,-0.220924 8.5242,-5.287055 19.278871,-11.308329 10.754678,-6.021273 19.574588,-10.728803 19.687328,-10.507879 z"
|
||||
id="path2417" />
|
||||
<path
|
||||
style="fill:url(#radialGradient2429);fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="M 54.940385,55.437448 C 54.81294,55.667054 46.364754,51.434053 36.082827,45.988786 25.8009,40.543518 17.559582,35.937824 17.687026,35.708218 c 0.127446,-0.229607 8.575631,4.003395 18.857558,9.448661 10.281927,5.445267 18.523246,10.050963 18.395801,10.280569 z"
|
||||
id="path2427" />
|
||||
<path
|
||||
style="opacity:0.352459;fill:url(#radialGradient2433);fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 65.449635,114.45135 c -0.375151,0.0294 -0.662284,-9.73704 -0.640922,-21.800043 0.02136,-12.062997 0.343169,-21.877093 0.71832,-21.906467 0.37515,-0.02937 0.662284,9.737046 0.640922,21.800043 -0.02136,12.062997 -0.343169,21.877087 -0.71832,21.906467 z"
|
||||
id="path2431" />
|
||||
<path
|
||||
style="fill:url(#radialGradient2480);fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="M 55.500752,9.3142325 C 55.606855,9.5207335 47.477933,14.256682 37.355837,19.885546 27.23374,25.514411 18.932593,29.915169 18.826489,29.708669 18.720387,29.502168 26.849309,24.76622 36.971404,19.137356 47.093501,13.508491 55.394649,9.1077316 55.500752,9.3142325 z"
|
||||
id="path2478" />
|
||||
<path
|
||||
style="fill:url(#radialGradient2484);fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="M 108.00464,27.696488 C 107.88099,27.915941 99.6843,23.871327 89.70845,18.668329 79.732601,13.465333 71.736615,9.0645036 71.860266,8.8450494 c 0.123651,-0.2194542 8.320347,3.8251596 18.296196,9.0281566 9.975848,5.202996 17.971838,9.603826 17.848178,9.823282 z"
|
||||
id="path2482" />
|
||||
<path
|
||||
style="fill:url(#linearGradient1441);fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
d="M 52.391314,10.725421 C 60.218637,6.0324839 68.182969,7.1388117 72.02313,8.5821097 66.243539,7.7850786 57.513187,8.4568441 52.391314,10.725421 z"
|
||||
id="path2486" />
|
||||
<path
|
||||
style="fill:url(#linearGradient1432);fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3574)"
|
||||
d="m 77.08844,56.915281 34.08864,-19.331703 c 5.59118,-3.097618 10.02975,-0.486059 9.95196,5.855507 l -0.50832,41.436025 c -0.0778,6.341565 -4.64162,13.940612 -10.23281,17.03823 l -34.088639,20.3317 c -5.591181,3.09763 -10.029752,0.48606 -9.951956,-5.8555 l 0.508319,-42.43603 c 0.0778,-6.341566 4.641626,-13.940614 10.232806,-17.038229 z"
|
||||
id="rect2556"
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
transform="matrix(0.88958423,-0.00696863,0,0.88958423,7.0366649,7.5268987)" />
|
||||
<path
|
||||
style="fill:url(#radialGradient1438);fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
d="m 50.216546,53.06469 7.857374,4.162351 c 3.644704,1.96934 11.80512,2.303829 17.092856,-0.409972 l 14.63311,-8.036739 -14.617571,7.67824 c -6.819372,2.782435 -12.100091,1.948265 -17.117359,0.49485 l -7.84841,-3.88873 z"
|
||||
id="path2514" />
|
||||
<path
|
||||
style="opacity:0.54455447;fill:url(#radialGradient1435);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter3714)"
|
||||
d="m 48.539396,51.570209 8.832636,4.748176 c 4.097087,4.930516 13.270379,5.877301 19.214433,-0.31034 l 16.449381,-8.905407 -16.309189,8.078374 c -7.351304,3.398287 -14.788017,2.426427 -19.241976,0.405541 l -8.945285,-4.016344 z"
|
||||
id="path2526"
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
transform="matrix(0.88958423,-0.00696863,0,0.88958423,7.0366649,7.5268987)" />
|
||||
<path
|
||||
id="path1506"
|
||||
d="m 21.534884,37.678074 34.124863,18.407772 c 5.772809,3.10706 9.004709,10.947536 8.899565,17.750275 l -0.291005,39.175029 c -0.105145,6.80274 -6.773179,6.84305 -12.545987,3.73599 L 20.568547,100.1994 C 14.795739,97.092352 10.232963,89.114423 10.338107,82.311683 l 0.586756,-37.96271 c 0.105144,-6.802738 4.837213,-9.777959 10.610021,-6.670899 z"
|
||||
style="fill:url(#linearGradient2387);fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
sodipodi:type="inkscape:offset"
|
||||
inkscape:radius="-1.1669018"
|
||||
inkscape:original="M 64.125 0.28125 C 60.119734 0.34266221 56.06557 1.2507431 52.90625 2.96875 L 17.71875 22.09375 C 11.40011 25.529764 11.104972 30.908467 17.0625 34.15625 L 29.03125 40.6875 C 29.041477 40.689095 29.05227 40.685908 29.0625 40.6875 C 34.361479 41.512149 40.004261 41.96875 45.84375 41.96875 C 74.648901 41.96875 98.402523 31.131908 101.8125 17.1875 L 75.0625 2.625 C 72.083736 1.0011076 68.130266 0.21983779 64.125 0.28125 z "
|
||||
style="fill:url(#linearGradient3301);fill-opacity:1;stroke:none;filter:url(#filter3518)"
|
||||
id="path3299"
|
||||
d="M 64.15625,1.4375 C 60.315227,1.4963939 56.411613,2.3997005 53.46875,4 l -35.1875,19.125 c -2.941524,1.599572 -4.254537,3.489516 -4.34375,5.125 -0.08921,1.635484 0.953539,3.384565 3.6875,4.875 l 11.78125,6.4375 c 5.194852,0.80039 10.715154,1.25 16.4375,1.25 14.256241,0 27.253781,-2.694155 37.03125,-7.0625 9.353803,-4.17906 15.530816,-9.912929 17.4375,-16.03125 L 74.5,3.65625 C 71.764111,2.1647623 67.998056,1.3785941 64.15625,1.4375 z"
|
||||
transform="matrix(0.88958423,-0.00696863,0,0.88958423,7.0366649,7.5268987)" />
|
||||
<g
|
||||
id="g3441"
|
||||
style="filter:url(#filter3482)"
|
||||
transform="matrix(0.88958423,-0.00696863,0,0.88958423,7.0366649,7.5268987)">
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3429)"
|
||||
d="m 27.480576,23.293682 c 3.505712,-1.906853 9.264565,-1.844946 12.912228,0.138803 3.647663,1.983749 3.761942,5.115894 0.256231,7.022747 -3.505711,1.906852 -9.264564,1.844946 -12.912227,-0.138803 -3.647663,-1.98375 -3.761943,-5.115894 -0.256232,-7.022747 z"
|
||||
id="path3327" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3433)"
|
||||
d="m 60.840861,23.804955 c 3.440747,-1.871518 9.092885,-1.810759 12.672954,0.13623 3.580069,1.946988 3.692229,5.021092 0.251482,6.89261 -3.440747,1.871516 -9.092884,1.810758 -12.672954,-0.13623 -3.580068,-1.946989 -3.692229,-5.021094 -0.251482,-6.89261 z"
|
||||
id="path3329" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3437)"
|
||||
d="m 92.391788,24.467376 c 3.492768,-1.899812 9.230362,-1.838135 12.864552,0.13829 3.6342,1.976426 3.74806,5.097007 0.25529,6.99682 -3.49277,1.899812 -9.230362,1.838135 -12.864558,-0.13829 -3.634195,-1.976426 -3.748052,-5.097006 -0.255284,-6.99682 z"
|
||||
id="path3331" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:url(#radialGradient1474);fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 31.482952,28.057089 c 3.118626,-1.720736 8.241611,-1.705796 11.486514,0.0335 3.244904,1.739293 3.346565,4.524804 0.227939,6.24554 -3.118625,1.720735 -8.24161,1.705796 -11.486513,-0.0335 -3.244904,-1.739293 -3.346565,-4.524802 -0.22794,-6.245539 z"
|
||||
id="rect2291" />
|
||||
<path
|
||||
style="fill:url(#radialGradient1471);fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 61.159735,28.279434 c 3.060835,-1.68885 8.088887,-1.674188 11.27366,0.03288 3.184773,1.707062 3.284549,4.440954 0.223715,6.129804 -3.060834,1.688849 -8.088886,1.674187 -11.27366,-0.03287 -3.184772,-1.707063 -3.284549,-4.440957 -0.223715,-6.129805 z"
|
||||
id="rect2293" />
|
||||
<path
|
||||
style="fill:url(#radialGradient1467);fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 89.226942,28.648846 c 3.107112,-1.714382 8.211185,-1.699499 11.444108,0.03337 3.23292,1.732872 3.33421,4.508098 0.2271,6.222482 -3.107116,1.714382 -8.211187,1.699499 -11.444111,-0.03337 -3.232922,-1.732872 -3.334208,-4.508097 -0.227097,-6.222482 z"
|
||||
id="rect2295" />
|
||||
<path
|
||||
style="opacity:0.20081967;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 32.745512,27.50858 c -0.444882,0.160874 -0.863106,0.357774 -1.252933,0.572866 -1.973505,1.088903 -2.658724,2.61258 -2.072615,4.019316 -0.110112,-1.174485 0.658612,-2.360809 2.281271,-3.256129 3.118627,-1.720737 8.247246,-1.702176 11.49215,0.03712 1.133181,0.607393 1.886843,1.33499 2.250084,2.107659 -0.152505,-1.039536 -0.963043,-2.069142 -2.45874,-2.870847 -2.83929,-1.521881 -7.125046,-1.736102 -10.239217,-0.609982 z"
|
||||
id="path1381" />
|
||||
<path
|
||||
id="path2263"
|
||||
d="m 62.328392,27.787252 c -0.444881,0.160873 -0.863105,0.357773 -1.252933,0.572865 -1.973505,1.088904 -2.658724,2.61258 -2.072615,4.019316 -0.110113,-1.174485 0.658612,-2.360808 2.281271,-3.256128 3.118626,-1.720738 8.247247,-1.702177 11.49215,0.03712 1.133182,0.607393 1.886843,1.33499 2.250083,2.107659 -0.152505,-1.039536 -0.963042,-2.069141 -2.458739,-2.870847 -2.839291,-1.52188 -7.125046,-1.736101 -10.239217,-0.609981 z"
|
||||
style="opacity:0.20081967;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
|
||||
<path
|
||||
style="opacity:0.20081967;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 90.312362,28.060759 c -0.444879,0.160875 -0.863106,0.357775 -1.252933,0.572866 -1.973503,1.088903 -2.658722,2.61258 -2.072613,4.019316 -0.110112,-1.174485 0.658612,-2.360808 2.28127,-3.256128 3.118624,-1.720737 8.247248,-1.702176 11.492144,0.03712 1.13319,0.607392 1.88685,1.33499 2.25009,2.107659 -0.1525,-1.039538 -0.96304,-2.069141 -2.45874,-2.870847 -2.839292,-1.52188 -7.125047,-1.736101 -10.239218,-0.609982 z"
|
||||
id="path2265" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
id="path3674"
|
||||
d="m 77.08844,56.915281 37.08864,-22.331703 c 5.59118,-3.097618 10.02975,-0.486059 9.95196,5.855507 l -0.50832,41.436025 c -0.0778,6.341565 -4.64162,13.940612 -10.23281,17.03823 l -37.088639,23.3317 c -5.591181,3.09763 -10.029752,0.48606 -9.951956,-5.8555 l 0.508319,-42.43603 c 0.0778,-6.341566 4.641626,-13.940614 10.232806,-17.038229 z"
|
||||
style="fill:url(#linearGradient3678);fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3574)"
|
||||
transform="matrix(-0.88958423,0.00696863,0,0.88958423,123.04786,8.3972843)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 38 KiB |
@@ -1,12 +1,12 @@
|
||||
[Desktop Entry]
|
||||
Name=KeePassX
|
||||
GenericName=Password Manager
|
||||
Name=KeePassXC
|
||||
GenericName=Community Password Manager
|
||||
GenericName[de]=Passwortverwaltung
|
||||
GenericName[es]=Gestor de contraseñas
|
||||
GenericName[fr]=Gestionnaire de mot de passe
|
||||
GenericName[ru]=менеджер паролей
|
||||
Exec=keepassx %f
|
||||
Icon=keepassx
|
||||
Exec=keepassxc %f
|
||||
Icon=keepassxc
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Qt;Utility;
|
||||
@@ -3,6 +3,6 @@
|
||||
<mime-type type="application/x-keepass2">
|
||||
<comment>KeePass 2 database</comment>
|
||||
<glob pattern="*.kdbx"/>
|
||||
<icon name="application-x-keepassx"/>
|
||||
<icon name="application-x-keepassxc"/>
|
||||
</mime-type>
|
||||
</mime-info>
|
||||
@@ -11,9 +11,9 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${PROGNAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>keepassx.icns</string>
|
||||
<string>keepassxc.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.keepassx.keepassx</string>
|
||||
<string>org.keepassx.keepassxc</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
@@ -21,13 +21,13 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${KEEPASSX_VERSION}</string>
|
||||
<string>${KEEPASSXC_VERSION}</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>KEPX</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${KEEPASSX_VERSION_NUM}</string>
|
||||
<string>${KEEPASSXC_VERSION_NUM}</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright 2010-2012 KeePassX Development Team</string>
|
||||
<string>Copyright 2016 KeePassXC Development Team</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
@@ -36,9 +36,9 @@
|
||||
<string>kdbx</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>keepassx.icns</string>
|
||||
<string>keepassxc.icns</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>KeePassX Password Database</string>
|
||||
<string>KeePassXC Password Database</string>
|
||||
<key>CFBundleTypeOSTypes</key>
|
||||
<array>
|
||||
<string>kdbx</string>
|
||||
|
||||
BIN
share/macosx/keepassxc.icns
Normal file
@@ -17,9 +17,9 @@ file(GLOB TRANSLATION_FILES *.ts)
|
||||
get_filename_component(TRANSLATION_EN_ABS keepassx_en.ts ABSOLUTE)
|
||||
list(REMOVE_ITEM TRANSLATION_FILES keepassx_en.ts)
|
||||
list(REMOVE_ITEM TRANSLATION_FILES ${TRANSLATION_EN_ABS})
|
||||
message(STATUS ${TRANSLATION_FILES})
|
||||
message(STATUS "${TRANSLATION_FILES}")
|
||||
|
||||
qt4_add_translation(QM_FILES ${TRANSLATION_FILES})
|
||||
qt5_add_translation(QM_FILES ${TRANSLATION_FILES})
|
||||
|
||||
install(FILES ${QM_FILES} DESTINATION ${DATA_INSTALL_DIR}/translations)
|
||||
add_custom_target(translations DEPENDS ${QM_FILES})
|
||||
|
||||
@@ -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>
|
||||
@@ -332,6 +373,10 @@ Do you want to save it anyway?</source>
|
||||
<translation>Databasen som du prøver at gemme er låst af en anden instans af KeePassX.
|
||||
Vil du alligevel gemme?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -383,6 +428,14 @@ Vil du alligevel gemme?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Kan ikke beregne hovednøgle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -696,6 +749,14 @@ Vil du alligevel gemme?</translation>
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>Kan ikke slette ikonet. Det anvendes stadig af %n element.</numerusform><numerusform>Kan ikke slette ikonet. Det anvendes stadig af %n elementer.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@@ -809,6 +870,10 @@ Vil du alligevel gemme?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Kan ikke beregne hovednøgle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -828,6 +893,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 +1081,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>
|
||||
@@ -1226,6 +1325,14 @@ Vil du alligevel gemme?</translation>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Husk de sidste nøglefiler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
|
||||
@@ -7,12 +7,16 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassX is distributed under the term of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>KeePassX διανέμεται υπό τον όρο από το GNU γενικής δημόσιας άδειας (GPL) έκδοση 2 ή (κατ ' επιλογή σας) έκδοση 3.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Revision</source>
|
||||
<translation>Αναθεώρηση</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>Χρήση:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -127,7 +131,7 @@
|
||||
<name>DatabaseOpenWidget</name>
|
||||
<message>
|
||||
<source>Enter master key</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Εισαγάγετε το πρωτεύον κλειδί</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key File:</source>
|
||||
@@ -166,6 +170,42 @@
|
||||
<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>
|
||||
@@ -194,7 +234,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Benchmark</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Σημείο αναφοράς</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Max. history items:</source>
|
||||
@@ -209,7 +249,7 @@
|
||||
<name>DatabaseTabWidget</name>
|
||||
<message>
|
||||
<source>Root</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ρίζα</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
@@ -263,7 +303,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Εγγραφή της βάσης δεδομένων απέτυχε.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save database as</source>
|
||||
@@ -331,12 +371,16 @@ Do you want to save it anyway?</source>
|
||||
<translation>Η βάση δεδομένων που πρασπαθείται να αποθηκεύσετε είναι κλειδωμένη από μία άλλη διεργασία KeePassX.
|
||||
Θέλετε να την αποθηκεύσετε ούτως η άλλως;</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Δεν είναι δυνατό να ανοίξει τη βάση δεδομένων.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
<message>
|
||||
<source>Change master key</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Αλλαγή πρωτεύοντος κλειδιού</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete entry?</source>
|
||||
@@ -380,7 +424,15 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Σε θέση να υπολογίσει το κύριο κλειδί</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entry to recycle bin?</source>
|
||||
<translation>Κίνηση εισόδου στον κάδο ανακύκλωσης;</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation>Θέλετε πραγματικά να κινηθεί εισόδου "%1" στον κάδο ανακύκλωσης;</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -624,7 +676,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Inherit from parent group (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Κληρονομούν από γονική ομάδα (%1)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -696,6 +748,14 @@ Do you want to save it anyway?</source>
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Σφάλμα</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation>Δεν μπορεί να διαβάσει το εικονίδιο:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@@ -713,7 +773,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Uuid:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>UUID:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -803,11 +863,15 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Root</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ρίζα</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Σε θέση να υπολογίσει το κύριο κλειδί</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>Λάθος κλειδί ή βάση δεδομένων αρχείο είναι κατεστραμμένο.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -826,6 +890,13 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<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 type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@@ -833,7 +904,7 @@ Do you want to save it anyway?</source>
|
||||
<name>Main</name>
|
||||
<message>
|
||||
<source>Fatal error while testing the cryptographic functions.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ανεπανόρθωτο σφάλμα κατά τον έλεγχο των κρυπτογραφικών λειτουργιών.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassX - Error</source>
|
||||
@@ -924,7 +995,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change master key</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Αλλαγή πρωτεύοντος κλειδιού</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database settings</source>
|
||||
@@ -1006,6 +1077,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>Εγγραφή της βάσης δεδομένων απέτυχε.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1062,19 +1157,19 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown option '%1'.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Άγνωστη επιλογή '%1'.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown options: %1.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Άγνωστο επιλογές: %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Missing value after '%1'.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Τιμή που λείπει μετά από '%1'.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unexpected value after '%1'.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Μη αναμενόμενη τιμή μετά από '%1'.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>[options]</source>
|
||||
@@ -1097,11 +1192,11 @@ Do you want to save it anyway?</source>
|
||||
<name>QSaveFile</name>
|
||||
<message>
|
||||
<source>Existing file %1 is not writable</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Υπάρχον αρχείο %1 δεν είναι εγγράψιμο</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing canceled by application</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Γράψιμο ακυρώθηκε από την εφαρμογή</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Partial write. Partition full?</source>
|
||||
@@ -1116,15 +1211,15 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error writing to underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Σφάλμα κατά την εγγραφή για την υποκείμενη συσκευή: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error opening underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Σφάλμα άνοιγμα υποκείμενη συσκευή: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading data from underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Σφάλμα κατά την ανάγνωση δεδομένων από υποκείμενη συσκευή: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal zlib error when decompressing: </source>
|
||||
@@ -1150,7 +1245,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Case sensitive</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Διάκριση πεζών-κεφαλαίων</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Current group</source>
|
||||
@@ -1158,7 +1253,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Root group</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ομάδα ρίζα</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1169,7 +1264,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>General</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Γενικά</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Security</source>
|
||||
@@ -1180,7 +1275,7 @@ Do you want to save it anyway?</source>
|
||||
<name>SettingsWidgetGeneral</name>
|
||||
<message>
|
||||
<source>Remember last databases</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Θυμηθείτε την τελευταία βάσεις δεδομένων</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open previous databases on startup</source>
|
||||
@@ -1208,7 +1303,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>Χρησιμοποιήστε εγγραφή τίτλου ώστε να ταιριάζει με windows για παγκόσμια αυτόματος-τύπο</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Language</source>
|
||||
@@ -1216,7 +1311,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show a system tray icon</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Δείχνουν ένα εικονίδιο του δίσκου συστήματος</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
@@ -1226,6 +1321,14 @@ Do you want to save it anyway?</source>
|
||||
<source>Remember last key files</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="en_US">
|
||||
<TS version="2.1" language="en_US">
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
<message numerus="yes">
|
||||
@@ -32,7 +32,7 @@
|
||||
<name>EditWidgetIcons</name>
|
||||
<message numerus="yes">
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation>
|
||||
<translation type="vanished">
|
||||
<numerusform>Can't delete icon. Still used by %n item.</numerusform>
|
||||
<numerusform>Can't delete icon. Still used by %n items.</numerusform>
|
||||
</translation>
|
||||
|
||||
@@ -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,16 @@ 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>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -373,6 +428,14 @@ Discard changes and close anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>No se puede calcular la llave maestra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -687,6 +750,14 @@ Discard changes and close anyway?</source>
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>No se puede eliminar el icono. Utilizado aún en %n elemento</numerusform><numerusform>No se puede eliminar el icono. Utilizado aún en %n elementos</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@@ -800,6 +871,10 @@ 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>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -819,6 +894,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 +1082,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>
|
||||
@@ -1217,6 +1326,14 @@ Discard changes and close anyway?</source>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Recordar últimos archivos clave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@@ -1269,10 +1386,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>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>
|
||||
@@ -332,6 +373,10 @@ Do you want to save it anyway?</source>
|
||||
<translation>Basis data yang Anda coba buka terkunci oleh KeePassX lain yang sedang berjalan.
|
||||
Apakah Anda tetap ingin menyimpannya?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -383,6 +428,14 @@ Apakah Anda tetap ingin menyimpannya?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Tidak bisa mengkalkulasi kunci utama</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -428,7 +481,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 +639,7 @@ Apakah Anda tetap ingin menyimpannya?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Presets</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Prasetel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Notes:</source>
|
||||
@@ -697,6 +750,14 @@ Apakah Anda tetap ingin menyimpannya?</translation>
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>Tidak bisa menghapus ikon. Masih digunakan oleh %n item.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@@ -810,6 +871,10 @@ Apakah Anda tetap ingin menyimpannya?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Tidak bisa mengkalkulasi kunci utama</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -829,6 +894,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 +1082,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 +1216,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>
|
||||
@@ -1227,6 +1326,14 @@ Apakah Anda tetap ingin menyimpannya?</translation>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Ingat berkas kunci terakhir</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
|
||||
@@ -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,20 +365,24 @@ 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>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<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>
|
||||
@@ -382,6 +428,14 @@ Vuoi salvare comunque?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Impossibile calcolare la chiave principale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -457,15 +511,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 +530,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 +546,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 +581,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 +623,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repeat:</source>
|
||||
<translation>Ripetere:</translation>
|
||||
<translation>Ripeti:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gen.</source>
|
||||
@@ -585,7 +639,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Presets</source>
|
||||
<translation>Presets</translation>
|
||||
<translation>Preimpostazioni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Notes:</source>
|
||||
@@ -624,7 +678,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 +697,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search</source>
|
||||
<translation>Cercare</translation>
|
||||
<translation>Cerca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-type</source>
|
||||
@@ -651,30 +705,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 +740,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 +748,26 @@ 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>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"/>
|
||||
</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 +775,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Uuid:</source>
|
||||
<translation>Uuid:</translation>
|
||||
<translation>UUID:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -754,7 +816,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 +834,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 +849,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 +869,11 @@ 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>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -822,11 +888,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 +948,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 +972,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 +1008,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 +1016,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 +1032,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 +1082,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 +1139,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 +1201,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 +1246,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 +1284,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 +1308,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 +1324,22 @@ 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>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</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 +1347,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 +1380,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,34 +332,49 @@ 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>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>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@@ -329,7 +390,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 +398,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>
|
||||
@@ -367,6 +428,14 @@ Discard changes and close anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>マスターキーを計算できませんでした</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -412,7 +481,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 +511,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 +565,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 +615,7 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username:</source>
|
||||
<translation>ユーザ名</translation>
|
||||
<translation>ユーザ名:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password:</source>
|
||||
@@ -679,7 +748,15 @@ 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>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -705,7 +782,7 @@ Discard changes and close anyway?</source>
|
||||
<name>EntryAttributesModel</name>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>名前</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -794,6 +871,10 @@ Discard changes and close anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>マスターキーを計算できませんでした</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -813,6 +894,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 +1064,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 +1072,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 +1154,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 +1197,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 +1205,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 +1228,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 +1308,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,12 +1320,20 @@ 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>
|
||||
<translation>最後のキーファイルを記憶</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@@ -1261,11 +1384,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>
|
||||
@@ -330,6 +371,10 @@ Do you want to save it anyway?</source>
|
||||
<translation>저장하려고 하는 데이터베이스를 다른 KeePassX 인스턴스에서 잠갔습니다.
|
||||
그래도 저장하시겠습니까?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -381,6 +426,14 @@ Do you want to save it anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>마스터 키를 계산할 수 없음</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -694,6 +747,14 @@ Do you want to save it anyway?</source>
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>아이콘을 삭제할 수 없습니다. 항목 %n개에서 사용 중입니다.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@@ -807,6 +868,10 @@ Do you want to save it anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>마스터 키를 계산할 수 없음</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -826,6 +891,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 +1079,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>
|
||||
@@ -1224,6 +1323,14 @@ Do you want to save it anyway?</source>
|
||||
<source>Remember last key files</source>
|
||||
<translation>마지막 키 파일 기억</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
|
||||
@@ -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>
|
||||
@@ -332,6 +373,10 @@ Do you want to save it anyway?</source>
|
||||
<translation>De database die u op probeert te slaan is vergrendeld door een andere instantie van KeePassX.
|
||||
Wilt u toch doorgaan met opslaan?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -383,6 +428,14 @@ 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>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -697,6 +750,14 @@ Wilt u toch doorgaan met opslaan?</translation>
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>Kan icoon niet verwijderen. Het wordt nog gebruikt door %n element.</numerusform><numerusform>Kan icoon niet verwijderen. Het wordt nog gebruikt door %n elementen.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@@ -810,6 +871,10 @@ 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>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -829,6 +894,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 +1082,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 +1296,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>
|
||||
@@ -1227,6 +1326,14 @@ Wilt u toch doorgaan met opslaan?</translation>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Onthoud laatste sleutelbestanden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
|
||||
@@ -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,6 +370,11 @@ 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>Baza, którą próbujesz zapisać jest zablokowana przez inną instancję KeePassX.
|
||||
Czy chcesz zapisać mimo to?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@@ -352,7 +406,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>
|
||||
@@ -374,6 +428,14 @@ 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>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -407,7 +469,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 +481,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 +627,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 +639,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 +748,15 @@ 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>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -801,6 +871,10 @@ 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>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -820,6 +894,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 +1064,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 +1082,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 +1119,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 +1143,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 +1182,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 +1197,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 +1205,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 +1216,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 +1258,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 +1308,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>
|
||||
@@ -1218,6 +1326,14 @@ Do you want to save it anyway?</source>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Zapamiętaj ostatni plik klucza</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@@ -1227,7 +1343,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 +1376,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>
|
||||
|
||||
@@ -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,15 @@ 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>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -373,6 +426,14 @@ Fechar e Ignorar alterações ?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Impossível calcular ficheiro chave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -686,6 +747,14 @@ Fechar e Ignorar alterações ?</translation>
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>Impossível apagar icon. Ainda em uso por %n item(s).</numerusform><numerusform>Impossível apagar icon. Ainda em uso por %n item(s).</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@@ -799,6 +868,10 @@ Fechar e Ignorar alterações ?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Impossível calcular chave mestra:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -818,6 +891,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 +1076,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>
|
||||
@@ -1216,6 +1320,14 @@ Fechar e Ignorar alterações ?</translation>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Lembrar os últimos ficheiro chave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@@ -1268,10 +1380,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 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>
|
||||
@@ -331,6 +371,10 @@ Zavrži spremembe in zapri?</translation>
|
||||
Do you want to save it anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -382,6 +426,14 @@ 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>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -695,6 +747,14 @@ Do you want to save it anyway?</source>
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>Ikone ni mogoče izbrisati. Uporablja jo še %n vnos.</numerusform><numerusform>Ikone ni mogoče izbrisati. Uporabljata jo še %n vnosa.</numerusform><numerusform>Ikone ni mogoče izbrisati. Uporabljajo jo še %n vnosi.</numerusform><numerusform>Ikone ni mogoče izbrisati. Uporablja jo še %n vnosov.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@@ -808,6 +868,10 @@ 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>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -827,6 +891,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 +1076,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>
|
||||
@@ -1225,6 +1320,14 @@ Do you want to save it anyway?</source>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Zapomni si zadnje datoteke s ključi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</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>
|
||||
@@ -332,6 +373,10 @@ Do you want to save it anyway?</source>
|
||||
<translation>Databasen du försöker spara som är låst av en annan instans av KeePassX.
|
||||
Vill du spara endå?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -383,6 +428,14 @@ Vill du spara endå?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Kunde inte räkna nu master-nyckeln</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -697,6 +750,14 @@ Vill du spara endå?</translation>
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>Kan inte ta bort ikonen. Den används fortfarande av %n post</numerusform><numerusform>Kan inte ta bort ikonen. Den används fortfarande av %n poster</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@@ -810,6 +871,10 @@ Vill du spara endå?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Kunde inte räkna nu master-nyckeln</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -829,6 +894,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 +924,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 +1082,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 +1284,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>
|
||||
@@ -1227,6 +1326,14 @@ Vill du spara endå?</translation>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Komihåg senaste nyckel-filen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
|
||||
@@ -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>
|
||||
@@ -331,6 +371,10 @@ Do you want to save it anyway?</source>
|
||||
<translation>Це сховище заблоковано іншою запущеною копією KeePassX.
|
||||
Ви впевнені, що хочете зберегти його?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -382,6 +426,14 @@ Do you want to save it anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Неможливо вирахувати майстер-пароль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -696,6 +748,14 @@ Do you want to save it anyway?</source>
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>Ви дійсно хочете перемістити %n запис в смітник?</numerusform><numerusform>Ви дійсно хочете перемістити %n записи в смітник?</numerusform><numerusform>Ви дійсно хочете перемістити %n записів в смітник?</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@@ -809,6 +869,10 @@ Do you want to save it anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Неможливо вирахувати майстер-пароль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -828,6 +892,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 +1080,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>
|
||||
@@ -1226,6 +1324,14 @@ Do you want to save it anyway?</source>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Пам’ятати останні файл-ключі</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray instead of App Exit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray on App start</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
|
||||