Compare commits
1610 Commits
v1.1.0
...
thegrannyc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf8c63aa25 | ||
|
|
be48306ca2 | ||
|
|
ab81e21341 | ||
|
|
b7f94102da | ||
|
|
9e7b27afe6 | ||
|
|
c24523e8e6 | ||
|
|
b58330ed35 | ||
|
|
dde40f39e9 | ||
|
|
d2b3017de9 | ||
|
|
64f4dad7cc | ||
|
|
154d211b21 | ||
|
|
7905ef6c10 | ||
|
|
b09f2c055f | ||
|
|
2c5b3b4ffa | ||
|
|
fdefc0c165 | ||
|
|
47ca2535e3 | ||
|
|
f706836a43 | ||
|
|
d8158bb80e | ||
|
|
4e422bdf91 | ||
|
|
4be3db8007 | ||
|
|
29b64237ed | ||
|
|
d481164bf3 | ||
|
|
138f33e0c3 | ||
|
|
be3c78f584 | ||
|
|
be1d9825d3 | ||
|
|
981116f221 | ||
|
|
26aad178ee | ||
|
|
56c8349899 | ||
|
|
0b2c407770 | ||
|
|
d2e3d48ef8 | ||
|
|
153291f89f | ||
|
|
ae3daa4c79 | ||
|
|
1397e3932d | ||
|
|
0f5db4f34e | ||
|
|
75c8f69e81 | ||
|
|
aa253466a3 | ||
|
|
b8bd786c45 | ||
|
|
c9c585f820 | ||
|
|
9e11d6c098 | ||
|
|
2f83c2c9da | ||
|
|
dc94a886e6 | ||
|
|
7deabc4889 | ||
|
|
e57200d024 | ||
|
|
7a13739d49 | ||
|
|
f8cbbc64f0 | ||
|
|
9096eb5e0e | ||
|
|
eebb5fec61 | ||
|
|
88cfd0d095 | ||
|
|
a43768ce67 | ||
|
|
16a8c28935 | ||
|
|
1cc5a5b209 | ||
|
|
a39082d326 | ||
|
|
0c1a75eedd | ||
|
|
dd23358a95 | ||
|
|
8f00254dc2 | ||
|
|
449b34d3dd | ||
|
|
9870213fff | ||
|
|
de237b7c39 | ||
|
|
8a5d4e38b6 | ||
|
|
77152a32ab | ||
|
|
c57c8dc477 | ||
|
|
455d80da3e | ||
|
|
d61c535c6f | ||
|
|
23308a7780 | ||
|
|
05ec01178b | ||
|
|
84e279cc14 | ||
|
|
8eca067aed | ||
|
|
05e4934f9f | ||
|
|
ec0439e41b | ||
|
|
b61fd1e61a | ||
|
|
6d4f47df38 | ||
|
|
0eaf629d37 | ||
|
|
c12f16f59e | ||
|
|
ac27438a35 | ||
|
|
d3787b4525 | ||
|
|
ec8a0f75ac | ||
|
|
7e85ac5b43 | ||
|
|
a4644e7501 | ||
|
|
ed978af3ae | ||
|
|
4bd2174bf3 | ||
|
|
c27182c618 | ||
|
|
1ceabb00be | ||
|
|
2a44313d84 | ||
|
|
e0dca85825 | ||
|
|
ec8ccf7728 | ||
|
|
e88088cca4 | ||
|
|
75b69f38fc | ||
|
|
50a1ba1dea | ||
|
|
2229151795 | ||
|
|
041fce027e | ||
|
|
1d5004ecb4 | ||
|
|
363bcf16a4 | ||
|
|
b1532a52c8 | ||
|
|
a3f7d3c59e | ||
|
|
f1fecb684b | ||
|
|
9c99e56b70 | ||
|
|
7be626b3dd | ||
|
|
96e96cd8aa | ||
|
|
13644c60e8 | ||
|
|
a1e41ea464 | ||
|
|
41dc504660 | ||
|
|
a0cc15b5d8 | ||
|
|
7cd121cb80 | ||
|
|
ccaea88a88 | ||
|
|
d90888c7ba | ||
|
|
9f9ea6ee88 | ||
|
|
c26315219e | ||
|
|
c1c06c2d20 | ||
|
|
328b7cb137 | ||
|
|
82f72071f9 | ||
|
|
d9ed2403ed | ||
|
|
d447942f84 | ||
|
|
05cfdefc84 | ||
|
|
e4020d5b6a | ||
|
|
1a047547fc | ||
|
|
47ab35421c | ||
|
|
e08aa9c299 | ||
|
|
e44049ff63 | ||
|
|
7aa02f9d64 | ||
|
|
3fe6ab469b | ||
|
|
ccd1d18981 | ||
|
|
906e801036 | ||
|
|
63c13e17cb | ||
|
|
c1297530f6 | ||
|
|
ac10e755b8 | ||
|
|
1f17dda2f8 | ||
|
|
94284a427f | ||
|
|
7fe8a6425b | ||
|
|
2e1eb9e9b7 | ||
|
|
fe33045b9e | ||
|
|
2020663ee5 | ||
|
|
2b51b82d03 | ||
|
|
13b691aaad | ||
|
|
e10f9f829c | ||
|
|
936881e570 | ||
|
|
0c826cb6f7 | ||
|
|
2a27c37a25 | ||
|
|
3fd9776987 | ||
|
|
e93b0a786e | ||
|
|
7a6d8ece63 | ||
|
|
51c56f7536 | ||
|
|
87f5e7eb26 | ||
|
|
2a3fda90b3 | ||
|
|
9d11cac680 | ||
|
|
42209b51a6 | ||
|
|
170826ad5d | ||
|
|
11dffd1b7a | ||
|
|
37eddbaeeb | ||
|
|
66d03197f4 | ||
|
|
d62d73e04a | ||
|
|
c055dcfeb4 | ||
|
|
22c8fdfe66 | ||
|
|
16a4680029 | ||
|
|
2e66e88609 | ||
|
|
c8482b3852 | ||
|
|
9bef2341be | ||
|
|
f219634b78 | ||
|
|
6d3b04fc3c | ||
|
|
1b2b8c8218 | ||
|
|
be5f045a06 | ||
|
|
c31935de0b | ||
|
|
fbcacd7c39 | ||
|
|
dcdc6a7114 | ||
|
|
9da67920b6 | ||
|
|
9a1b42a29f | ||
|
|
37b9eca0e1 | ||
|
|
92a3061f8d | ||
|
|
edc90d9ebe | ||
|
|
ebda8eccc6 | ||
|
|
6e2136e155 | ||
|
|
ac9df910f8 | ||
|
|
a615ff35cb | ||
|
|
d4cb3ef857 | ||
|
|
9ef6329799 | ||
|
|
458acb0b70 | ||
|
|
cee6f373eb | ||
|
|
519022525e | ||
|
|
fb416b6483 | ||
|
|
2f4d1396a9 | ||
|
|
8afb3c27dc | ||
|
|
b115bf632a | ||
|
|
9e9fb26deb | ||
|
|
0ac17e95ff | ||
|
|
93298f0bc2 | ||
|
|
4ab54780e0 | ||
|
|
92e6dfabff | ||
|
|
5bd8e35b9e | ||
|
|
68227278f5 | ||
|
|
beba2cf3e5 | ||
|
|
7a7afef799 | ||
|
|
98bef62a2f | ||
|
|
9eff4010d7 | ||
|
|
57de748ad3 | ||
|
|
7b453852b6 | ||
|
|
48a6b6e31d | ||
|
|
abe9e3099f | ||
|
|
adcb505ab7 | ||
|
|
468af807b0 | ||
|
|
c928d6fd4b | ||
|
|
8aa02e33f5 | ||
|
|
9de7d4a61e | ||
|
|
633bb7820b | ||
|
|
67f8b609ba | ||
|
|
a02eac4ecb | ||
|
|
973db98090 | ||
|
|
4744d1ed52 | ||
|
|
48e05dcaa5 | ||
|
|
f019820458 | ||
|
|
e092d701b4 | ||
|
|
d347991e0b | ||
|
|
b3ca63c62a | ||
|
|
6b6b472315 | ||
|
|
0fe57fbc3b | ||
|
|
570259c5c7 | ||
|
|
94a25a2383 | ||
|
|
b1b48e2ec0 | ||
|
|
8a9892bdbe | ||
|
|
71d79a4a15 | ||
|
|
b60d9aa4db | ||
|
|
e4f1abaa5a | ||
|
|
c01c589f2a | ||
|
|
678f63fdef | ||
|
|
6b31586734 | ||
|
|
188fe4537a | ||
|
|
884ba47b9b | ||
|
|
33c827d6ec | ||
|
|
5944fc5c4b | ||
|
|
54c419804c | ||
|
|
571947cd23 | ||
|
|
800e99fda0 | ||
|
|
4f32043966 | ||
|
|
fc8e62cdea | ||
|
|
b337fd8d64 | ||
|
|
c6da57995d | ||
|
|
56c3607400 | ||
|
|
4a59a52174 | ||
|
|
e933cec888 | ||
|
|
e56a8209e1 | ||
|
|
0805728a79 | ||
|
|
93c6ef8510 | ||
|
|
335ae5b3dc | ||
|
|
887d97fd20 | ||
|
|
17cfc7bb02 | ||
|
|
6b03705d54 | ||
|
|
4dd0e43611 | ||
|
|
dc662b1c7d | ||
|
|
ee094dd7af | ||
|
|
61c5fc3957 | ||
|
|
1fb1c9e81a | ||
|
|
1ef8e3fce3 | ||
|
|
e42ba4d527 | ||
|
|
411a08247f | ||
|
|
191023ac38 | ||
|
|
50d9b9f022 | ||
|
|
c1d1dec49d | ||
|
|
aa33635912 | ||
|
|
3b2b78dc7c | ||
|
|
2e5a324669 | ||
|
|
dce2f1b333 | ||
|
|
2c9129c7b6 | ||
|
|
944f3891bf | ||
|
|
634fc61c09 | ||
|
|
ca81281f1f | ||
|
|
b07451e91d | ||
|
|
ab4cf23f97 | ||
|
|
6179fb9cf6 | ||
|
|
cf84bf56b3 | ||
|
|
1eef86a40c | ||
|
|
a8624058e4 | ||
|
|
eea19d43c2 | ||
|
|
9c37711bbf | ||
|
|
30fb588d3c | ||
|
|
27ef85f653 | ||
|
|
e467bbff66 | ||
|
|
59b2096d06 | ||
|
|
3b40413257 | ||
|
|
af69509c61 | ||
|
|
19c45644d6 | ||
|
|
7eb69f6e16 | ||
|
|
c01ed86071 | ||
|
|
7fc376b47f | ||
|
|
da5cc11bff | ||
|
|
79ca354da1 | ||
|
|
b3e2346808 | ||
|
|
2ae10decf7 | ||
|
|
e14e49cdcc | ||
|
|
ce13f6aa21 | ||
|
|
15176a12de | ||
|
|
16f862d389 | ||
|
|
e7ba7b87b6 | ||
|
|
524bfe91ef | ||
|
|
63e74648c4 | ||
|
|
d048d562a3 | ||
|
|
05cb66f2a4 | ||
|
|
8b8494ee64 | ||
|
|
ab5e6c1f7a | ||
|
|
54d137e3ae | ||
|
|
38e6f010d6 | ||
|
|
16c4460011 | ||
|
|
1bf2c8faf9 | ||
|
|
1f72bb6138 | ||
|
|
32566e5dfc | ||
|
|
55c214eae6 | ||
|
|
3ac06fbce5 | ||
|
|
76259c2b54 | ||
|
|
aeaeb1f086 | ||
|
|
1997dbcd5d | ||
|
|
e8a1aa0616 | ||
|
|
ca21d8afe6 | ||
|
|
fa2a92d5ed | ||
|
|
d05150a078 | ||
|
|
6b2549ed13 | ||
|
|
c8fa8f99d2 | ||
|
|
ee7b139093 | ||
|
|
3f0a1207e9 | ||
|
|
56f0439aaf | ||
|
|
83122bb864 | ||
|
|
4e73009997 | ||
|
|
b8895afc0a | ||
|
|
a974141360 | ||
|
|
8fad9b05e6 | ||
|
|
1797abb2da | ||
|
|
9e5118d1dc | ||
|
|
7bbaae91c9 | ||
|
|
ba08e0b112 | ||
|
|
f21a8bf784 | ||
|
|
81f2e509c5 | ||
|
|
d31d056e5e | ||
|
|
aa21f7815d | ||
|
|
e5a261e75f | ||
|
|
a8f9478815 | ||
|
|
50665b4472 | ||
|
|
42eff5e906 | ||
|
|
0b8cc4e335 | ||
|
|
55d1bfb34d | ||
|
|
713a3f4c50 | ||
|
|
95ce191533 | ||
|
|
33e9caf614 | ||
|
|
5cd497d0c9 | ||
|
|
9840418257 | ||
|
|
c68cb3211d | ||
|
|
4d37dddcab | ||
|
|
d29f266ca1 | ||
|
|
abd33d737d | ||
|
|
bc82cf2539 | ||
|
|
8c1851bb4c | ||
|
|
bcef86fd94 | ||
|
|
d2aef7ca98 | ||
|
|
4b97639972 | ||
|
|
bf33fa7ed9 | ||
|
|
53f4394a49 | ||
|
|
2af875fc51 | ||
|
|
9e2e317938 | ||
|
|
ac5ad7e962 | ||
|
|
4a194b3be5 | ||
|
|
d700e2706c | ||
|
|
80a25bf409 | ||
|
|
ca73316ee9 | ||
|
|
cc9a38acf8 | ||
|
|
dc8276bb34 | ||
|
|
e3d0ef598b | ||
|
|
c7d72b0adc | ||
|
|
2e427b33e2 | ||
|
|
f1b30eb969 | ||
|
|
d8446263eb | ||
|
|
9eef445b1a | ||
|
|
163b17324e | ||
|
|
97abef740c | ||
|
|
6946fd3bd0 | ||
|
|
8669c1d660 | ||
|
|
ceb8f164b7 | ||
|
|
08eda5573d | ||
|
|
cead92d900 | ||
|
|
3a86e3569a | ||
|
|
c6105bcdfd | ||
|
|
81a3ede4bd | ||
|
|
b51b185323 | ||
|
|
f5055c42aa | ||
|
|
7013f7c65d | ||
|
|
b7a61f4567 | ||
|
|
0faca5c9a1 | ||
|
|
06d2733fc5 | ||
|
|
4f4ada8d54 | ||
|
|
58dff75f64 | ||
|
|
1494d64da4 | ||
|
|
95a7922806 | ||
|
|
de178d672e | ||
|
|
e8b28ccf90 | ||
|
|
45d8923561 | ||
|
|
086ee8ac04 | ||
|
|
6dfd7279dc | ||
|
|
4a4a800b07 | ||
|
|
366cb1ac2f | ||
|
|
87eaf021b4 | ||
|
|
6b8ab895e3 | ||
|
|
d123f63095 | ||
|
|
9eb90bac62 | ||
|
|
ef036d6f57 | ||
|
|
5b85a9f2b7 | ||
|
|
038cc377ec | ||
|
|
13a4708a02 | ||
|
|
42864a4bea | ||
|
|
581f7983aa | ||
|
|
48b6d1c941 | ||
|
|
2c26fed478 | ||
|
|
7ac7d92a28 | ||
|
|
3f50738e37 | ||
|
|
d6e57c20c7 | ||
|
|
1290d25ae5 | ||
|
|
c7ae4db79d | ||
|
|
4f34743f94 | ||
|
|
76fc992d65 | ||
|
|
588cb983c2 | ||
|
|
73b4b2c13c | ||
|
|
d70b46d475 | ||
|
|
0b68ddda78 | ||
|
|
34e6947a6a | ||
|
|
ea923d5082 | ||
|
|
4559e23610 | ||
|
|
5afe78467e | ||
|
|
0ea2cd39db | ||
|
|
7ec082be23 | ||
|
|
3da751a67b | ||
|
|
b32f1f9210 | ||
|
|
6eed76268b | ||
|
|
c6242fa3e1 | ||
|
|
467ea29ec2 | ||
|
|
4b1248b865 | ||
|
|
577c2da6e5 | ||
|
|
8fccbb6d81 | ||
|
|
3aa20aa7d9 | ||
|
|
0722868c35 | ||
|
|
1dd13303d5 | ||
|
|
485ee11449 | ||
|
|
5a85033486 | ||
|
|
eb3eb88f23 | ||
|
|
3a16eb2913 | ||
|
|
59066117c9 | ||
|
|
28de50b244 | ||
|
|
48e07370e4 | ||
|
|
299cf801ea | ||
|
|
a9e2996e90 | ||
|
|
334d487be6 | ||
|
|
8a1c3ac642 | ||
|
|
062bc6cf19 | ||
|
|
d505ccb4c5 | ||
|
|
8bdd70e7d3 | ||
|
|
7ebd91a652 | ||
|
|
b742a464c9 | ||
|
|
5f08fd0f5e | ||
|
|
fc9990bb72 | ||
|
|
4ea04b3dbc | ||
|
|
e45991cb7c | ||
|
|
078d18c75e | ||
|
|
5528330265 | ||
|
|
89464f4d3e | ||
|
|
a29562641c | ||
|
|
227eb6ff2d | ||
|
|
2038bd1fbe | ||
|
|
4ba82d3e82 | ||
|
|
95a0d55426 | ||
|
|
45f30a9208 | ||
|
|
81f453d60f | ||
|
|
f88cd61a23 | ||
|
|
0cdb25e705 | ||
|
|
2138aa9711 | ||
|
|
fdd7f753b3 | ||
|
|
a354d76652 | ||
|
|
521921d90e | ||
|
|
e93f02ca76 | ||
|
|
e83e7dc680 | ||
|
|
a9edb5a9cf | ||
|
|
257d331343 | ||
|
|
6b4e0108f1 | ||
|
|
290f305ee0 | ||
|
|
61580d5765 | ||
|
|
5f292bc53a | ||
|
|
2a02936648 | ||
|
|
eaa5b46b1f | ||
|
|
8705efc9b6 | ||
|
|
1bfb90f1a0 | ||
|
|
2de142dd73 | ||
|
|
2e41d16afe | ||
|
|
b66f58d120 | ||
|
|
42d36a01ea | ||
|
|
bbd11bb0b7 | ||
|
|
d62039fba1 | ||
|
|
5e019c41f4 | ||
|
|
8543aecda8 | ||
|
|
9308982eaa | ||
|
|
3690154cb6 | ||
|
|
37b5cb6b60 | ||
|
|
08bdad8bfd | ||
|
|
ddd9ea69df | ||
|
|
244db861a4 | ||
|
|
94a517bdfb | ||
|
|
9980e2f737 | ||
|
|
c9cb279213 | ||
|
|
e6829ca39b | ||
|
|
1171e95b87 | ||
|
|
84c746ef35 | ||
|
|
50c3503e37 | ||
|
|
a34a774fb7 | ||
|
|
4d61b8586d | ||
|
|
077f78c252 | ||
|
|
0a7ebc5c78 | ||
|
|
0751d6093f | ||
|
|
34a44e7fa9 | ||
|
|
d353002eab | ||
|
|
ffb3d79954 | ||
|
|
85516c1744 | ||
|
|
08a336b392 | ||
|
|
183b85d66a | ||
|
|
3dcd60d675 | ||
|
|
8b580ab789 | ||
|
|
ab14eb4bea | ||
|
|
aaedfb13f2 | ||
|
|
f14b4d25aa | ||
|
|
15d95a1ff2 | ||
|
|
7300d6383a | ||
|
|
a71958b550 | ||
|
|
0c97deaa48 | ||
|
|
7c1d9565ba | ||
|
|
d6ea0d817e | ||
|
|
2db32f270c | ||
|
|
f9996d0646 | ||
|
|
05bef7f80c | ||
|
|
85cb2a4cc8 | ||
|
|
f252abc7a7 | ||
|
|
bd9b4d3385 | ||
|
|
1299eecc12 | ||
|
|
cdd18a8ce2 | ||
|
|
179db348e1 | ||
|
|
016f47d17f | ||
|
|
dda8791f6d | ||
|
|
21305d3e39 | ||
|
|
965046db27 | ||
|
|
35e3339519 | ||
|
|
cbb48fbea6 | ||
|
|
c648ce3d59 | ||
|
|
b105dbfb77 | ||
|
|
8f6175b319 | ||
|
|
ff948016ea | ||
|
|
008f91f05a | ||
|
|
41d8f06112 | ||
|
|
67c39af6db | ||
|
|
b6e2b8e00c | ||
|
|
9aa106a63f | ||
|
|
2cf20332f4 | ||
|
|
0809104052 | ||
|
|
1e84a1558f | ||
|
|
5d9d4e5985 | ||
|
|
cd6a21d4f3 | ||
|
|
f859d51717 | ||
|
|
de2f61b592 | ||
|
|
06686c8a9b | ||
|
|
b16acd181d | ||
|
|
bbb4b8d16b | ||
|
|
1a2b415a27 | ||
|
|
7469c005d4 | ||
|
|
f68ce9248f | ||
|
|
5dfdbbe3e2 | ||
|
|
e9561080f3 | ||
|
|
4d72392f1d | ||
|
|
ee17b5106c | ||
|
|
e5cffbe598 | ||
|
|
43197ee153 | ||
|
|
d0b5fe54eb | ||
|
|
797a2ed456 | ||
|
|
86816dc3c3 | ||
|
|
d431c01d1b | ||
|
|
83c32de0c2 | ||
|
|
00ba2e01d1 | ||
|
|
274377f119 | ||
|
|
9af2e69b58 | ||
|
|
38255eb41d | ||
|
|
cf5710e461 | ||
|
|
5f8a5a857e | ||
|
|
36f1fc1242 | ||
|
|
b5f2650704 | ||
|
|
8572b02315 | ||
|
|
3b35d3fc52 | ||
|
|
0d43dcec8e | ||
|
|
952b10fb06 | ||
|
|
8f63bc5f15 | ||
|
|
676da22690 | ||
|
|
d8e8dceadf | ||
|
|
48cebe729e | ||
|
|
19e26cba28 | ||
|
|
cdb876fa72 | ||
|
|
a921887271 | ||
|
|
2099d72840 | ||
|
|
8924f25d7c | ||
|
|
7c9e15e75c | ||
|
|
5031ee47ca | ||
|
|
a240c3ae24 | ||
|
|
a21a381e2a | ||
|
|
0162ebd133 | ||
|
|
bffe74f0c7 | ||
|
|
bf97d744e2 | ||
|
|
d4bebd18e8 | ||
|
|
b3480eb70b | ||
|
|
e3da07141c | ||
|
|
7280429162 | ||
|
|
0b0d2d6b10 | ||
|
|
551b0b3c91 | ||
|
|
d20d3d0b77 | ||
|
|
a5dc101e6b | ||
|
|
8957b1b1dd | ||
|
|
42626efd05 | ||
|
|
69828e6926 | ||
|
|
9c28a6e9d0 | ||
|
|
a817a26be1 | ||
|
|
0b33cb339c | ||
|
|
41908433c5 | ||
|
|
fab15ccded | ||
|
|
5667c813d9 | ||
|
|
39ceb38ecd | ||
|
|
06f58291f7 | ||
|
|
07cfbab77f | ||
|
|
3670c4f0ff | ||
|
|
485d396b91 | ||
|
|
5aa6c72594 | ||
|
|
6fdb591784 | ||
|
|
ae6edaa058 | ||
|
|
3062b88f4a | ||
|
|
f90dd82cbd | ||
|
|
a8f072dd1b | ||
|
|
05a1cf9343 | ||
|
|
da607fe741 | ||
|
|
399d47ca9d | ||
|
|
317fe48927 | ||
|
|
4941709296 | ||
|
|
20bf7009e5 | ||
|
|
a01a105afa | ||
|
|
33c6203f29 | ||
|
|
b9f5baef34 | ||
|
|
811878e364 | ||
|
|
3b17953a82 | ||
|
|
484e79dba3 | ||
|
|
7eee942dcb | ||
|
|
a89e6760da | ||
|
|
e2257d7ca5 | ||
|
|
be13ecc5aa | ||
|
|
5b864367e8 | ||
|
|
0ccaed8d55 | ||
|
|
0491124a7d | ||
|
|
ac4956c25b | ||
|
|
c7920fe9f7 | ||
|
|
f31ae47ab2 | ||
|
|
3f305eaca0 | ||
|
|
9290d94e2a | ||
|
|
756cf19c23 | ||
|
|
7a13ecd2b7 | ||
|
|
19f022e0f6 | ||
|
|
026729e8c9 | ||
|
|
7f918aaaca | ||
|
|
d98a01df2f | ||
|
|
2cb76a9ad4 | ||
|
|
250c6901b7 | ||
|
|
e5fec91062 | ||
|
|
6fd38df79e | ||
|
|
d924c64710 | ||
|
|
6ae5f92ba9 | ||
|
|
4e1927a7eb | ||
|
|
1d4547c2c8 | ||
|
|
10943408e9 | ||
|
|
cdad2f5554 | ||
|
|
b0bf42f754 | ||
|
|
7e321ea9d1 | ||
|
|
01c3ddf167 | ||
|
|
f8770a03f7 | ||
|
|
3b7725d774 | ||
|
|
2679b143ed | ||
|
|
2b0f57f967 | ||
|
|
622107a6f1 | ||
|
|
5908544602 | ||
|
|
b330c94dca | ||
|
|
4b0f998830 | ||
|
|
d3d9315102 | ||
|
|
689fe5715e | ||
|
|
6a52c26874 | ||
|
|
60907cdc4b | ||
|
|
1b00e2ed57 | ||
|
|
6479049256 | ||
|
|
e739f3a483 | ||
|
|
d8937b3672 | ||
|
|
18f27e76d7 | ||
|
|
47018ace60 | ||
|
|
a8332c858e | ||
|
|
d93e580d0f | ||
|
|
0e7e62d596 | ||
|
|
1d05551f4e | ||
|
|
4908d07ef2 | ||
|
|
be4d13533c | ||
|
|
7231848bd8 | ||
|
|
fb5ed9aae3 | ||
|
|
e908cc6273 | ||
|
|
5e670aab24 | ||
|
|
75a9d56624 | ||
|
|
28bd70e745 | ||
|
|
38d652c507 | ||
|
|
539f444ab5 | ||
|
|
3cbbb71768 | ||
|
|
2034e0a157 | ||
|
|
653afa7210 | ||
|
|
72aa822655 | ||
|
|
a27a8644ea | ||
|
|
1a3e33cbc9 | ||
|
|
4e8f260b33 | ||
|
|
29d9c43834 | ||
|
|
d4be3ed4a0 | ||
|
|
16b9c9d340 | ||
|
|
f3f68e9009 | ||
|
|
2caf83b929 | ||
|
|
7a2b693397 | ||
|
|
97467705b0 | ||
|
|
cdb15a0493 | ||
|
|
b9d42ca43f | ||
|
|
3d89fc659b | ||
|
|
e5bc60c13d | ||
|
|
53e7053764 | ||
|
|
04a5dbb71d | ||
|
|
24c6a3ebe3 | ||
|
|
3b2fe183b5 | ||
|
|
ba6a41d8e1 | ||
|
|
4ef054175a | ||
|
|
642c2abfd6 | ||
|
|
f90ad4c377 | ||
|
|
20dab9c4c1 | ||
|
|
be6c255bc1 | ||
|
|
d5dfd7853f | ||
|
|
7bdf7f8c2d | ||
|
|
863f85f45d | ||
|
|
016c511cec | ||
|
|
05cc2a1206 | ||
|
|
125264ff42 | ||
|
|
dc7591ee28 | ||
|
|
5882d3697c | ||
|
|
8f3306fd87 | ||
|
|
95e802372f | ||
|
|
9c261551c3 | ||
|
|
4e9e9deec1 | ||
|
|
1c56227fa3 | ||
|
|
27ea6a54f8 | ||
|
|
2dc2e17d63 | ||
|
|
59b1f2d5a5 | ||
|
|
81ea790d73 | ||
|
|
d019f2ad07 | ||
|
|
6b7302ceac | ||
|
|
8e7cc154bc | ||
|
|
62c7e0373e | ||
|
|
c22a68561a | ||
|
|
7ea9403d39 | ||
|
|
51bd1a909b | ||
|
|
e421aa0c5a | ||
|
|
1c191206c6 | ||
|
|
9c6f0104d0 | ||
|
|
6027dfde21 | ||
|
|
72c3052e47 | ||
|
|
b7e7f4ad12 | ||
|
|
6665d904bc | ||
|
|
f7796c2846 | ||
|
|
15aa78de6b | ||
|
|
820cf65d13 | ||
|
|
b043ace106 | ||
|
|
d928b8c2dc | ||
|
|
429713dd46 | ||
|
|
268610e423 | ||
|
|
caceea70d4 | ||
|
|
14a2ac46b7 | ||
|
|
1780b889c9 | ||
|
|
e93159fbb9 | ||
|
|
7a219726c9 | ||
|
|
ab0518deb0 | ||
|
|
41bcbadc02 | ||
|
|
cf7367811d | ||
|
|
b5389c4a55 | ||
|
|
610f38ab95 | ||
|
|
5662ec6c0e | ||
|
|
c368d73e89 | ||
|
|
9a8f29cfff | ||
|
|
b7ff6fd323 | ||
|
|
c71eeb2b9b | ||
|
|
a02dfe49aa | ||
|
|
a19ce240af | ||
|
|
8cf5b5eaca | ||
|
|
ce4497a5a3 | ||
|
|
046d291585 | ||
|
|
819e8bc508 | ||
|
|
91fe56d810 | ||
|
|
1656e90c7c | ||
|
|
e953886635 | ||
|
|
3560295416 | ||
|
|
0d089bb5c4 | ||
|
|
76981b4fc8 | ||
|
|
755acbddb2 | ||
|
|
9671af12d0 | ||
|
|
a6bc937dda | ||
|
|
52d918e5cf | ||
|
|
70be619c2f | ||
|
|
d99bb7e46b | ||
|
|
2c8ef4e24e | ||
|
|
a46004494d | ||
|
|
dd537f9a08 | ||
|
|
d30e095dc4 | ||
|
|
914e0d82e6 | ||
|
|
ec77de5e1d | ||
|
|
0c4ddab432 | ||
|
|
942e774679 | ||
|
|
bdb58e0e59 | ||
|
|
c277d865a1 | ||
|
|
89a53f9b5b | ||
|
|
51129bfb76 | ||
|
|
30e0ed6498 | ||
|
|
301d9a5732 | ||
|
|
c9fe6a8684 | ||
|
|
ec5e28ba9f | ||
|
|
38b88d087b | ||
|
|
0e09f59412 | ||
|
|
0144e93045 | ||
|
|
2ba5c2b04f | ||
|
|
cc2231acd8 | ||
|
|
83f20dc577 | ||
|
|
d079f695ce | ||
|
|
2c8a60d1c2 | ||
|
|
741b02a119 | ||
|
|
a4bf62aaf0 | ||
|
|
5ab51e4547 | ||
|
|
d56698b728 | ||
|
|
388a6c458a | ||
|
|
d39ff3a3b5 | ||
|
|
effb2ed738 | ||
|
|
2e2962ef05 | ||
|
|
311ca1c990 | ||
|
|
2475d48bc4 | ||
|
|
601bb27a02 | ||
|
|
82edc6d438 | ||
|
|
aaa94a43bb | ||
|
|
ebcdf1af7a | ||
|
|
6c9f2547cc | ||
|
|
0d937bacc8 | ||
|
|
ff20d531c2 | ||
|
|
26db88966f | ||
|
|
f2af65d4cd | ||
|
|
e6b62399f7 | ||
|
|
713392ee29 | ||
|
|
c7da83cae1 | ||
|
|
f9343ca0c2 | ||
|
|
6053b7cd67 | ||
|
|
0333282915 | ||
|
|
23ab98294a | ||
|
|
27bff9d2e6 | ||
|
|
6b9f902b2c | ||
|
|
329309718b | ||
|
|
f726279d5f | ||
|
|
a65ec67820 | ||
|
|
cabec999ba | ||
|
|
4be685a7fc | ||
|
|
c9070bfdaf | ||
|
|
4616f69a29 | ||
|
|
5da39a2ffa | ||
|
|
02417dda40 | ||
|
|
5f468d5b2e | ||
|
|
0aa36c5a57 | ||
|
|
0cc3202f85 | ||
|
|
ad5e6c6313 | ||
|
|
1c7911c531 | ||
|
|
4302639220 | ||
|
|
05c6c7c64d | ||
|
|
86bca75b3f | ||
|
|
b0803fa28d | ||
|
|
a2790190e6 | ||
|
|
10b9cb2128 | ||
|
|
af86cf0852 | ||
|
|
ed2d75241f | ||
|
|
483f069d81 | ||
|
|
1c7c64a5a2 | ||
|
|
4015af1648 | ||
|
|
da255f7c61 | ||
|
|
9407eebf2d | ||
|
|
2f0cd24fb8 | ||
|
|
dce700b189 | ||
|
|
e55d41889d | ||
|
|
66456d858d | ||
|
|
53f0de945c | ||
|
|
62cff6ce84 | ||
|
|
418f62c15e | ||
|
|
000ead7e60 | ||
|
|
042dc77c4a | ||
|
|
2ce8f88a98 | ||
|
|
ac18b5388a | ||
|
|
eec61b8b97 | ||
|
|
2f77d881c4 | ||
|
|
4a7b7ea04a | ||
|
|
164c2dd4b9 | ||
|
|
9d3d7a61ab | ||
|
|
93b9547fa9 | ||
|
|
50a2185ad7 | ||
|
|
c29f28dbdd | ||
|
|
081823cd8c | ||
|
|
d7c6807370 | ||
|
|
b413c673fd | ||
|
|
13743cd7a5 | ||
|
|
73436d4472 | ||
|
|
b5e7ab5834 | ||
|
|
9e0b69d8aa | ||
|
|
7426c826f5 | ||
|
|
3bd8662b18 | ||
|
|
655af0b863 | ||
|
|
f378becc58 | ||
|
|
5acbbc9902 | ||
|
|
ae1e2f1f30 | ||
|
|
86eb76ccad | ||
|
|
9839259856 | ||
|
|
de4307e2a5 | ||
|
|
6ba8378152 | ||
|
|
2e5d2c55fe | ||
|
|
edf8be3a1e | ||
|
|
54feb14daf | ||
|
|
9c4ed98151 | ||
|
|
c5b5be9ff2 | ||
|
|
05135d6ff2 | ||
|
|
2415257a6e | ||
|
|
7529eb7196 | ||
|
|
5c4590f08f | ||
|
|
a02598bc8f | ||
|
|
ed3ef73064 | ||
|
|
6af6a6bac4 | ||
|
|
d6ba3f13e1 | ||
|
|
aed4b8ea00 | ||
|
|
13dd6184e0 | ||
|
|
a7492a8a11 | ||
|
|
9dcb931c6d | ||
|
|
7be283319a | ||
|
|
f1f98de03a | ||
|
|
27ea0218b0 | ||
|
|
2ef4464687 | ||
|
|
c63cc70b1f | ||
|
|
01b55baa01 | ||
|
|
4ce2f63b36 | ||
|
|
0a687d6bd5 | ||
|
|
9458aa4baf | ||
|
|
8f6922fc8a | ||
|
|
8ea6902a81 | ||
|
|
bd9f5698e4 | ||
|
|
ff6a204686 | ||
|
|
92f35bad9f | ||
|
|
b84df28f39 | ||
|
|
09bd7dcc36 | ||
|
|
06ed5e07bf | ||
|
|
ada218cea1 | ||
|
|
2662ba3875 | ||
|
|
58693fdb00 | ||
|
|
1872ff1d24 | ||
|
|
08c4906465 | ||
|
|
92f1773366 | ||
|
|
a0344ea491 | ||
|
|
02c4f0a0e6 | ||
|
|
5f94fa8bc7 | ||
|
|
e416f3da15 | ||
|
|
a122af2933 | ||
|
|
513d1f8851 | ||
|
|
44963d1c83 | ||
|
|
cb679e0a05 | ||
|
|
fd253625bc | ||
|
|
ffda39d323 | ||
|
|
1895751122 | ||
|
|
ba37002be9 | ||
|
|
0ce8ece1fc | ||
|
|
9dc9f12053 | ||
|
|
08c44099a3 | ||
|
|
c45b344ae1 | ||
|
|
10176c4a72 | ||
|
|
dc91ee45c1 | ||
|
|
bf8b02085d | ||
|
|
ca14c75a36 | ||
|
|
de522cd650 | ||
|
|
dc0eeaea9f | ||
|
|
df7a9f452d | ||
|
|
11921099c2 | ||
|
|
023e5ebb3e | ||
|
|
5ec56bda5b | ||
|
|
65f9964ef5 | ||
|
|
2d4639757f | ||
|
|
7c011064d4 | ||
|
|
e106f57cc5 | ||
|
|
072b4dc4d3 | ||
|
|
9e648fed28 | ||
|
|
53e5d2938c | ||
|
|
748f3457f2 | ||
|
|
97ef496703 | ||
|
|
7fb74bca47 | ||
|
|
b2791021c7 | ||
|
|
13be9c3814 | ||
|
|
170f9f0d08 | ||
|
|
63069f7bdc | ||
|
|
cf837abbb5 | ||
|
|
3c340d1667 | ||
|
|
8eab64178f | ||
|
|
e041d27988 | ||
|
|
8282d468e1 | ||
|
|
25509615c7 | ||
|
|
def79000ba | ||
|
|
cf0128321d | ||
|
|
31ad209dda | ||
|
|
92e937628a | ||
|
|
a748135365 | ||
|
|
0398164906 | ||
|
|
9cd8188f06 | ||
|
|
75ddc9276f | ||
|
|
8e74355cf7 | ||
|
|
9c3e44b015 | ||
|
|
ce5b7a337d | ||
|
|
adad23530e | ||
|
|
970a3be280 | ||
|
|
5b9af9e0ea | ||
|
|
94a7192c3e | ||
|
|
f5f3c7412f | ||
|
|
73c65640e1 | ||
|
|
f7f1a586d1 | ||
|
|
1c7f68d6ca | ||
|
|
74a99f5bc8 | ||
|
|
21296cba95 | ||
|
|
823712b7f3 | ||
|
|
3e47560048 | ||
|
|
e047ec924b | ||
|
|
1e5c0db46e | ||
|
|
77b975d456 | ||
|
|
de1d4c347f | ||
|
|
40adf3da0e | ||
|
|
6483698305 | ||
|
|
4ea1ef8a6b | ||
|
|
6d8f65bc84 | ||
|
|
1572e0a0b0 | ||
|
|
17bc5cd9ec | ||
|
|
878eead4d2 | ||
|
|
3c491200ec | ||
|
|
6f5e1a7a5b | ||
|
|
9165c82355 | ||
|
|
e6cf2149a2 | ||
|
|
58f58d0c63 | ||
|
|
11f1785432 | ||
|
|
73817691a0 | ||
|
|
2f30778d8a | ||
|
|
b6e8c7dd60 | ||
|
|
ea2c002419 | ||
|
|
e7ad71df14 | ||
|
|
cb0bed0bbc | ||
|
|
2033951505 | ||
|
|
d1973eba26 | ||
|
|
af4f3baf39 | ||
|
|
2bcc40278c | ||
|
|
0288db15e7 | ||
|
|
8caea2893d | ||
|
|
c44fb156f2 | ||
|
|
0a597acd26 | ||
|
|
8b304dc46c | ||
|
|
2a674ed988 | ||
|
|
f09a43a45f | ||
|
|
91b4784cff | ||
|
|
be10bc9cfc | ||
|
|
5fda06477d | ||
|
|
22633ba45f | ||
|
|
866ee7b30d | ||
|
|
ff189f7677 | ||
|
|
56ac59bce6 | ||
|
|
2b14b9dda0 | ||
|
|
4d32ff2ac2 | ||
|
|
e1955e11f5 | ||
|
|
86a21ea2c2 | ||
|
|
62b5b12397 | ||
|
|
1eb963679e | ||
|
|
1f2f269736 | ||
|
|
d7b92b472d | ||
|
|
473d4874ea | ||
|
|
ad112effda | ||
|
|
315d03ae69 | ||
|
|
9740726652 | ||
|
|
d454d0c00b | ||
|
|
94b7c8aefe | ||
|
|
8aed8f15d7 | ||
|
|
27e22917f1 | ||
|
|
601872a0e5 | ||
|
|
2ae3f95a73 | ||
|
|
1098418a3e | ||
|
|
64449910c5 | ||
|
|
30ed41be61 | ||
|
|
bdbcf830f3 | ||
|
|
a98a0eadd8 | ||
|
|
f6072eeb5c | ||
|
|
590ead9643 | ||
|
|
81fc79fc82 | ||
|
|
5ae7815e03 | ||
|
|
83e0a5f4da | ||
|
|
59ffab4731 | ||
|
|
c2d3f15712 | ||
|
|
7f03841f8a | ||
|
|
9d3b292a29 | ||
|
|
ffa55d983d | ||
|
|
53911757b7 | ||
|
|
193cc327cf | ||
|
|
5dd9ac9432 | ||
|
|
c41d748bf2 | ||
|
|
165edec292 | ||
|
|
2c3e768101 | ||
|
|
ae133889cd | ||
|
|
2f19094341 | ||
|
|
43bd72d02f | ||
|
|
8e8b232ed9 | ||
|
|
68f5dd16ae | ||
|
|
98a1f816cc | ||
|
|
4049ee5980 | ||
|
|
adfe2e529a | ||
|
|
f4ee88c075 | ||
|
|
cfdd09d9ac | ||
|
|
7a1d0b2eaf | ||
|
|
cce54f9937 | ||
|
|
f1c37a0aaf | ||
|
|
1569c3eb73 | ||
|
|
90a40d379a | ||
|
|
fb968310e0 | ||
|
|
7fe75a102e | ||
|
|
f38f574d04 | ||
|
|
d24e9f9b06 | ||
|
|
e6c9a2eaa9 | ||
|
|
69f0eccece | ||
|
|
cd1a157098 | ||
|
|
976616b5ac | ||
|
|
5a78eb903c | ||
|
|
7c7d390b5b | ||
|
|
42579b414d | ||
|
|
1cbaa53852 | ||
|
|
4282eca581 | ||
|
|
27bf3c92ec | ||
|
|
f14ddba807 | ||
|
|
15ba379152 | ||
|
|
de636533ca | ||
|
|
5d94958197 | ||
|
|
d3f891da16 | ||
|
|
e2feb5f056 | ||
|
|
c5dc8e17f3 | ||
|
|
040dc475e7 | ||
|
|
e79b6f1391 | ||
|
|
a16a30761e | ||
|
|
7ee5b73688 | ||
|
|
c5693e94af | ||
|
|
6d36db5446 | ||
|
|
c8fe984171 | ||
|
|
9aff88c768 | ||
|
|
483f8223b6 | ||
|
|
a6d515c49f | ||
|
|
f1d2a88442 | ||
|
|
06d334d2d7 | ||
|
|
d85fa66a87 | ||
|
|
d48789a7fa | ||
|
|
66ee78edc1 | ||
|
|
5e1c850c72 | ||
|
|
c2acc868da | ||
|
|
d0a9039c4b | ||
|
|
5fb33646ce | ||
|
|
5293038b82 | ||
|
|
5929155276 | ||
|
|
8289fb28ee | ||
|
|
f7c2c2630d | ||
|
|
a072487c55 | ||
|
|
580136c8ae | ||
|
|
0eae40793f | ||
|
|
8f606876ff | ||
|
|
cc91b38d6a | ||
|
|
5b74ef512a | ||
|
|
b19c673db3 | ||
|
|
be532d00fe | ||
|
|
e630a6129a | ||
|
|
926ed4574d | ||
|
|
354336319e | ||
|
|
872b7f38ce | ||
|
|
6b2a480fa6 | ||
|
|
8383cb9070 | ||
|
|
ac299ba061 | ||
|
|
4cc81fe6b9 | ||
|
|
cbfc822d73 | ||
|
|
d5444c2999 | ||
|
|
7bc4cd20cb | ||
|
|
77a53696bb | ||
|
|
acb9ff82b6 | ||
|
|
ea58e88e27 | ||
|
|
de26361e6a | ||
|
|
2f1a034f28 | ||
|
|
666b1afcb6 | ||
|
|
6bb22655e8 | ||
|
|
76a64fca4a | ||
|
|
3ef2f87412 | ||
|
|
6fa4c178a7 | ||
|
|
c6e4ba4789 | ||
|
|
12c90f9ba4 | ||
|
|
4519816b49 | ||
|
|
eb8dc38f1e | ||
|
|
6f1bfa0fb9 | ||
|
|
ab8721f2e5 | ||
|
|
733a471c9b | ||
|
|
0a23806ee8 | ||
|
|
dea52d317f | ||
|
|
d77c518fad | ||
|
|
5453246237 | ||
|
|
2ddc77cebe | ||
|
|
eafc68550d | ||
|
|
4a2c28d306 | ||
|
|
9c279c21bc | ||
|
|
464c1928ce | ||
|
|
0d899eb268 | ||
|
|
2e315e2df1 | ||
|
|
c4120fd5c6 | ||
|
|
268a2d7fdb | ||
|
|
238303b8b0 | ||
|
|
6bb69b8169 | ||
|
|
0fc1823a8d | ||
|
|
3f6c1e780e | ||
|
|
d19a191112 | ||
|
|
744dbe5a6f | ||
|
|
2f8c594c3e | ||
|
|
a7336d444e | ||
|
|
e79c845b78 | ||
|
|
c6d8f83780 | ||
|
|
04d7a46f82 | ||
|
|
615dea5b8e | ||
|
|
b26135dd2a | ||
|
|
3b5f3da2ab | ||
|
|
25fb4342d6 | ||
|
|
7bc14c7f5c | ||
|
|
ae6484b7b1 | ||
|
|
5bec457ba6 | ||
|
|
05177d5e9c | ||
|
|
7241869ed0 | ||
|
|
7e3f53a0d0 | ||
|
|
dd3709656a | ||
|
|
4a7100d92a | ||
|
|
79109afb89 | ||
|
|
57ac444f9c | ||
|
|
4636571a25 | ||
|
|
f865adc865 | ||
|
|
546a241c51 | ||
|
|
a471450d45 | ||
|
|
a03cbe1f39 | ||
|
|
1d2c6c61fe | ||
|
|
e6cc7a2861 | ||
|
|
7bdb549f08 | ||
|
|
208b82d6c9 | ||
|
|
12e5f96274 | ||
|
|
41f858124a | ||
|
|
0da18311aa | ||
|
|
84956e3c9c | ||
|
|
8b2a96d8d5 | ||
|
|
12a1cbaabd | ||
|
|
8754ad93a3 | ||
|
|
57a735f17a | ||
|
|
21eb92075d | ||
|
|
44e703b600 | ||
|
|
407f137bca | ||
|
|
58a777e41b | ||
|
|
6f0357ee74 | ||
|
|
67083839b9 | ||
|
|
df599d39b0 | ||
|
|
a4df6e9bab | ||
|
|
842dc22f3d | ||
|
|
5536ea1ddf | ||
|
|
90c49d60f7 | ||
|
|
632cd244b0 | ||
|
|
9c330c40a8 | ||
|
|
f14148861a | ||
|
|
4f0416763c | ||
|
|
bb9302908d | ||
|
|
1c6ffc8ce2 | ||
|
|
8c9ab2012b | ||
|
|
2a63d1f7ca | ||
|
|
4ffaa510cc | ||
|
|
49d9e5e8c0 | ||
|
|
0759813ed5 | ||
|
|
013aa20745 | ||
|
|
c32d75713c | ||
|
|
76faa0607d | ||
|
|
d84c665caf | ||
|
|
8eece72a81 | ||
|
|
5f3dc5d0ea | ||
|
|
f9fe68e550 | ||
|
|
a89686a45b | ||
|
|
7a48a0202c | ||
|
|
a8b236e02c | ||
|
|
2839d65526 | ||
|
|
15edc1698a | ||
|
|
dd757ccfce | ||
|
|
2904302c81 | ||
|
|
588dc5bb54 | ||
|
|
0b8ebcbfd8 | ||
|
|
7994b2a135 | ||
|
|
74a5d5c7f4 | ||
|
|
135c9be5f7 | ||
|
|
913699e4b6 | ||
|
|
4e3ee8747b | ||
|
|
5d8813a78f | ||
|
|
6328497372 | ||
|
|
5ede782acd | ||
|
|
4acb9938f3 | ||
|
|
170a58d3cd | ||
|
|
330dd9c218 | ||
|
|
1b2d857dd1 | ||
|
|
ac3234aad9 | ||
|
|
c9d678be11 | ||
|
|
523d711b49 | ||
|
|
b6c54c103d | ||
|
|
2426eab371 | ||
|
|
6132ddd2b7 | ||
|
|
d7810eec38 | ||
|
|
dacaf347fd | ||
|
|
6068c506c3 | ||
|
|
b4a960f069 | ||
|
|
5f06c3ec5e | ||
|
|
ec3039620d | ||
|
|
900e2b211c | ||
|
|
ffaccba896 | ||
|
|
5a24f5ba29 | ||
|
|
7d9119053f | ||
|
|
592ccb576a | ||
|
|
bcfa3bb795 | ||
|
|
0e38e7555a | ||
|
|
03e5941adb | ||
|
|
5af2f951ea | ||
|
|
a4edff3619 | ||
|
|
b781bd919c | ||
|
|
ffd9349ebe | ||
|
|
31772138f1 | ||
|
|
9b9eabd801 | ||
|
|
41ab9333a4 | ||
|
|
a66f5a845f | ||
|
|
bf218e9ce6 | ||
|
|
e15479cd6a | ||
|
|
decfe4369c | ||
|
|
aedb08d939 | ||
|
|
3b26d9ffdc | ||
|
|
2363a6d0b2 | ||
|
|
349acbc779 | ||
|
|
917c92602e | ||
|
|
1f6da223be | ||
|
|
7f7d4a1db3 | ||
|
|
5419376d09 | ||
|
|
4c644dfd90 | ||
|
|
42be20664d | ||
|
|
fd6ab62e13 | ||
|
|
315e06a7b8 | ||
|
|
02cce803ac | ||
|
|
2d88427c87 | ||
|
|
0bbd7d013f | ||
|
|
e4133e9a90 | ||
|
|
9229bf8236 | ||
|
|
2194a5ac21 | ||
|
|
854b23e4ef | ||
|
|
cb82424eb2 | ||
|
|
0bd977d9e9 | ||
|
|
b5d1c1a0b0 | ||
|
|
1620437d1e | ||
|
|
efab6a7c30 | ||
|
|
3a3db8cbc8 | ||
|
|
d779b315dc | ||
|
|
2675641f7b | ||
|
|
8a496d20ef | ||
|
|
43e51727ef | ||
|
|
33ad8e8bcf | ||
|
|
ecac6376d7 | ||
|
|
5cb81cd54f | ||
|
|
1822724df2 | ||
|
|
0a2d694634 | ||
|
|
5c9e1099b4 | ||
|
|
1c59e98fbf | ||
|
|
ff43648944 | ||
|
|
9908280269 | ||
|
|
f9223ad36d | ||
|
|
4b57ea48e8 | ||
|
|
486ae1f084 | ||
|
|
412766e0d0 | ||
|
|
c07f82ce49 | ||
|
|
b833e7e351 | ||
|
|
ab6091def5 | ||
|
|
b7afc3e9fa | ||
|
|
498a889f1d | ||
|
|
5dbc3b68c5 | ||
|
|
c9e15512aa | ||
|
|
1e52a21349 | ||
|
|
6ab42eee2d | ||
|
|
7eeb1a281c | ||
|
|
46a099118e | ||
|
|
6c6cdfaa76 | ||
|
|
219f532569 | ||
|
|
a40007f536 | ||
|
|
cce8705a21 | ||
|
|
e6208fbfbd | ||
|
|
e18200d796 | ||
|
|
76bd345c47 | ||
|
|
980082d659 | ||
|
|
d136e99765 | ||
|
|
a7cad41d36 | ||
|
|
9a2091f752 | ||
|
|
06efd199a7 | ||
|
|
be44d0f3db | ||
|
|
b3f22bd6eb | ||
|
|
017d4df3dd | ||
|
|
6f96d599e6 | ||
|
|
33ceb7aac5 | ||
|
|
816a37de85 | ||
|
|
5a3fcef268 | ||
|
|
bb98f691e4 | ||
|
|
4bd7aacf7c | ||
|
|
1016f1eb6d | ||
|
|
a063fce481 | ||
|
|
3d29e070d2 | ||
|
|
ba31886013 | ||
|
|
0e916084aa | ||
|
|
a7135733fb | ||
|
|
fc6cd710ac | ||
|
|
ca1b9b2170 | ||
|
|
22354f6cb5 | ||
|
|
61f3ad26a2 | ||
|
|
7789e128a1 | ||
|
|
db7dc724ac | ||
|
|
a0b8a6cd47 | ||
|
|
413e21786b | ||
|
|
6ad88e060b | ||
|
|
311676f96f | ||
|
|
97b90578d0 | ||
|
|
84fd1c5748 | ||
|
|
3717f6dcef | ||
|
|
3fa18a4376 | ||
|
|
f753bd5c96 | ||
|
|
83f304be9e | ||
|
|
86407e2a55 | ||
|
|
80f69f3600 | ||
|
|
b60c319dfd | ||
|
|
cc02bedd65 | ||
|
|
32f134ade5 | ||
|
|
0916cb29a5 | ||
|
|
6131c14067 | ||
|
|
11f2b99027 | ||
|
|
70d8f1072b | ||
|
|
11410585d5 | ||
|
|
d11c142032 | ||
|
|
e99f74f553 | ||
|
|
6b62d3e6bc | ||
|
|
1e51712f68 | ||
|
|
504dd5f6c2 | ||
|
|
594450f3a5 | ||
|
|
86a52043b9 | ||
|
|
35522cfbca | ||
|
|
7ba7391c83 | ||
|
|
9a73be47c4 | ||
|
|
a6884f727c | ||
|
|
0fa887fdc9 | ||
|
|
01c66d79af | ||
|
|
981b7266a3 | ||
|
|
08fbaf7b59 | ||
|
|
eedb8b14b7 | ||
|
|
f3c362e3f3 | ||
|
|
8e93ec9768 | ||
|
|
376c0810cd | ||
|
|
6c735e6d1b | ||
|
|
5bcce3eca2 | ||
|
|
1deb435b42 | ||
|
|
3d9c289e3f | ||
|
|
0cf9362f18 | ||
|
|
c1055463cc | ||
|
|
1aa0c215a8 | ||
|
|
dae566ce76 | ||
|
|
8ebb384418 | ||
|
|
1101c2010b | ||
|
|
b57f54d68b | ||
|
|
d9c6d8704d | ||
|
|
0f064ca8e6 | ||
|
|
bf85316800 | ||
|
|
e4015e78cd | ||
|
|
d1ad0ea31b | ||
|
|
b1a31cf5fd | ||
|
|
840e45033c | ||
|
|
1691e637c9 | ||
|
|
801abbf744 | ||
|
|
25887c3ba5 | ||
|
|
c6facbe253 | ||
|
|
673691f329 | ||
|
|
9fa88255a8 | ||
|
|
fd50e3e30b | ||
|
|
74075a014d | ||
|
|
e79e06adb7 | ||
|
|
67af138e5a | ||
|
|
e28dfcad83 | ||
|
|
8743db64a6 | ||
|
|
608ffa7ce5 | ||
|
|
f8947d4f49 | ||
|
|
a614d24976 | ||
|
|
3e5734343c | ||
|
|
bcd961b791 | ||
|
|
66a8349263 | ||
|
|
cf44acbf31 | ||
|
|
eebec51382 | ||
|
|
349f5d6f64 | ||
|
|
d7c955f753 | ||
|
|
6348813415 | ||
|
|
dbdb36999d | ||
|
|
d7ab50846d | ||
|
|
3603fc29fd | ||
|
|
ae364f78ca | ||
|
|
9a4b8f2f67 | ||
|
|
c82109a5bb | ||
|
|
fe17b2f50e | ||
|
|
d0d5b5974c | ||
|
|
ad179c9e12 | ||
|
|
4a1c9f2c4b | ||
|
|
072629fdef | ||
|
|
d7ac87e2e6 | ||
|
|
00bc8c5db2 | ||
|
|
fe26e9ed1f | ||
|
|
9694c7d668 | ||
|
|
4f0d00f510 | ||
|
|
0f60f5ca83 | ||
|
|
aadea11f28 | ||
|
|
f0bffaa72d | ||
|
|
cc5712171c | ||
|
|
d488a9858d | ||
|
|
62c92c6253 | ||
|
|
37e9ea71c6 | ||
|
|
4467fe33a7 | ||
|
|
aed8567174 | ||
|
|
4d548bb768 | ||
|
|
35927b8784 | ||
|
|
ba15699aab | ||
|
|
ecbfffb039 | ||
|
|
7f127fdc5c | ||
|
|
797f5ee0d8 | ||
|
|
a947b93669 | ||
|
|
791b50ccf4 | ||
|
|
8f4b0cf2df | ||
|
|
b5d79e9db0 | ||
|
|
66ab20adb9 | ||
|
|
1db5a9c295 | ||
|
|
18de7ca671 | ||
|
|
44583c4626 | ||
|
|
9627eae1d2 | ||
|
|
a242ea7f47 | ||
|
|
149c07c89d | ||
|
|
433e00bb50 | ||
|
|
fea8f44c17 | ||
|
|
95a26c805f | ||
|
|
934fb1145e | ||
|
|
5db7b97090 | ||
|
|
23f1eb82db | ||
|
|
521f23d410 | ||
|
|
db2b7dc08b | ||
|
|
93ff4b8f7a | ||
|
|
64842dc77d | ||
|
|
bed9c8f90c | ||
|
|
40c0fdc2fd | ||
|
|
fca84f7c90 | ||
|
|
1c0810b976 | ||
|
|
2442866bab | ||
|
|
d89e4cc32b | ||
|
|
e860b8aeaa | ||
|
|
41f7e5016d | ||
|
|
a6dbd648c2 | ||
|
|
2307e96823 | ||
|
|
12fb53908b | ||
|
|
98d883b7f1 | ||
|
|
2e53523076 | ||
|
|
362386ef17 | ||
|
|
86cdc121e8 | ||
|
|
433b05df36 | ||
|
|
bd2ad383c6 | ||
|
|
af715aa110 | ||
|
|
8343b66d67 | ||
|
|
7a3f0ef9e2 | ||
|
|
cacc4ca57a | ||
|
|
e10b04b78b | ||
|
|
ff6c73b95b | ||
|
|
0eed312410 | ||
|
|
12505cef82 | ||
|
|
730e560964 | ||
|
|
9d159dcf95 | ||
|
|
b1c7191ef6 | ||
|
|
348d927ca1 | ||
|
|
d9056ff0d6 | ||
|
|
74b424b025 | ||
|
|
6e8425d808 | ||
|
|
b2990039a0 | ||
|
|
cf3b7710e5 | ||
|
|
00011cf618 | ||
|
|
08c258c7d0 | ||
|
|
a65704e735 | ||
|
|
f8d6375126 | ||
|
|
761801e5d2 | ||
|
|
57922eaff0 | ||
|
|
14e30d64fa | ||
|
|
d953ae9c47 | ||
|
|
ebd0654595 | ||
|
|
f8228bfde0 | ||
|
|
d04af753ce | ||
|
|
4725a2e32a | ||
|
|
50da09f44e | ||
|
|
cf27a73149 | ||
|
|
407c736522 | ||
|
|
671c160e49 | ||
|
|
7d675f6acf | ||
|
|
733ad61d74 | ||
|
|
f710dcdd49 | ||
|
|
28d1aec413 | ||
|
|
f1bdec484e |
9
.editorconfig
Normal file
@@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
@@ -1,4 +1,3 @@
|
||||
STEAMGRIDDB_API_KEY=YOUR_API_KEY
|
||||
ONLINEFIX_USERNAME=YOUR_ONLINEFIX_USERNAME
|
||||
ONLINEFIX_PASSWORD=YOUR_ONLINEFIX_PASSWORD
|
||||
SENTRY_DSN=
|
||||
MAIN_VITE_STEAMGRIDDB_API_KEY=YOUR_API_KEY
|
||||
MAIN_VITE_API_URL=API_URL
|
||||
MAIN_VITE_SENTRY_DSN=YOUR_SENTRY_DSN
|
||||
|
||||
4
.eslintignore
Normal file
@@ -0,0 +1,4 @@
|
||||
node_modules
|
||||
dist
|
||||
out
|
||||
.gitignore
|
||||
29
.eslintrc.cjs
Normal file
@@ -0,0 +1,29 @@
|
||||
module.exports = {
|
||||
extends: [
|
||||
"eslint:recommended",
|
||||
"plugin:react/recommended",
|
||||
"plugin:react/jsx-runtime",
|
||||
"plugin:react-hooks/recommended",
|
||||
"plugin:jsx-a11y/recommended",
|
||||
"@electron-toolkit/eslint-config-ts/recommended",
|
||||
"plugin:prettier/recommended",
|
||||
],
|
||||
rules: {
|
||||
"@typescript-eslint/explicit-function-return-type": "off",
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"error",
|
||||
{
|
||||
argsIgnorePattern: "^_",
|
||||
varsIgnorePattern: "^_",
|
||||
caughtErrorsIgnorePattern: "^_",
|
||||
},
|
||||
],
|
||||
"@typescript-eslint/no-explicit-any": "warn",
|
||||
"prettier/prettier": [
|
||||
"error",
|
||||
{
|
||||
endOfLine: "auto",
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
46
.eslintrc.js
@@ -1,46 +0,0 @@
|
||||
module.exports = {
|
||||
env: {
|
||||
browser: true,
|
||||
es2021: true,
|
||||
},
|
||||
settings: {
|
||||
react: {
|
||||
version: "detect",
|
||||
},
|
||||
},
|
||||
extends: [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"plugin:react/jsx-runtime",
|
||||
"plugin:react-hooks/recommended",
|
||||
"prettier",
|
||||
],
|
||||
overrides: [
|
||||
{
|
||||
env: {
|
||||
node: true,
|
||||
},
|
||||
files: [".eslintrc.{js,cjs}"],
|
||||
parserOptions: {
|
||||
sourceType: "script",
|
||||
},
|
||||
},
|
||||
],
|
||||
parser: "@typescript-eslint/parser",
|
||||
parserOptions: {
|
||||
ecmaVersion: "latest",
|
||||
sourceType: "module",
|
||||
},
|
||||
plugins: ["@typescript-eslint", "react"],
|
||||
rules: {
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"error",
|
||||
{
|
||||
argsIgnorePattern: "^_",
|
||||
varsIgnorePattern: "^_",
|
||||
caughtErrorsIgnorePattern: "^_",
|
||||
},
|
||||
],
|
||||
"@typescript-eslint/no-explicit-any": "warn",
|
||||
},
|
||||
};
|
||||
58
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
name: Bug Report
|
||||
description: Create a report to help us improve. Write in English, please.
|
||||
title: "[BUG] "
|
||||
labels: ["bug"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for creating a bug report to help us improve!
|
||||
- type: textarea
|
||||
id: bug-description
|
||||
attributes:
|
||||
label: Describe the bug
|
||||
description: A clear and concise description of what the bug is.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: bug-reproduce
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: Steps to reproduce the behavior. For example, "1. Go to '...', 2. Click on '...', 3. See error"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: expected-behavior
|
||||
attributes:
|
||||
label: Expected behavior
|
||||
description: A clear and concise description of what you expected to happen.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: screenshots
|
||||
attributes:
|
||||
label: Screenshots
|
||||
description: If applicable, add screenshots to help explain your problem.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: OS
|
||||
attributes:
|
||||
label: Operating System
|
||||
description: Which operating system are you using (e.g., Windows 11/Linux Distro/Steam Deck)?
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: hydra-version
|
||||
attributes:
|
||||
label: Hydra Version
|
||||
description: Please provide the version of Hydra you are using.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: additional-info
|
||||
attributes:
|
||||
label: Additional Information
|
||||
description: Please provide any additional information and context about your problem.
|
||||
validations:
|
||||
required: false
|
||||
37
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
name: Feature Request
|
||||
description: Request a new feature.
|
||||
title: "[REQUEST] "
|
||||
labels: ["enhancement"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for taking the time to suggest a new feature!
|
||||
- type: textarea
|
||||
id: problem-related
|
||||
attributes:
|
||||
label: Is your feature request related to a problem? Please describe.
|
||||
description: A clear and concise description of what the problem is.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: solution
|
||||
attributes:
|
||||
label: Describe the solution you'd like
|
||||
description: A clear and concise description of what you want to happen.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: Describe alternatives you've considered
|
||||
description: A clear and concise description of any alternative solutions or features you've considered.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: additional-context
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context or screenshots about the feature request here.
|
||||
validations:
|
||||
required: false
|
||||
62
.github/workflows/build.yml
vendored
@@ -1,28 +1,14 @@
|
||||
name: Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: "**"
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
[
|
||||
{
|
||||
name: windows-latest,
|
||||
build_path: out/Hydra-win32-x64,
|
||||
artifact: Hydra-win32-x64,
|
||||
},
|
||||
{
|
||||
name: ubuntu-latest,
|
||||
build_path: out/Hydra-linux-x64,
|
||||
artifact: Hydra-linux-x64,
|
||||
},
|
||||
]
|
||||
os: [windows-latest, ubuntu-latest]
|
||||
|
||||
runs-on: ${{ matrix.os.name }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- name: Check out Git repository
|
||||
@@ -36,9 +22,6 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: yarn
|
||||
|
||||
- name: Lint
|
||||
run: yarn lint
|
||||
|
||||
- name: Install Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
@@ -50,18 +33,39 @@ jobs:
|
||||
- name: Build with cx_Freeze
|
||||
run: python torrent-client/setup.py build
|
||||
|
||||
- name: Publish
|
||||
run: yarn run publish
|
||||
- name: Build Linux
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: yarn build:linux
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
STEAMGRIDDB_API_KEY: ${{ secrets.STEAMGRIDDB_API_KEY }}
|
||||
MAIN_VITE_ONLINEFIX_USERNAME: ${{ secrets.ONLINEFIX_USERNAME }}
|
||||
MAIN_VITE_ONLINEFIX_PASSWORD: ${{ secrets.ONLINEFIX_PASSWORD }}
|
||||
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
SENTRY_DSN: ${{ vars.SENTRY_DSN }}
|
||||
ONLINEFIX_USERNAME: ${{ secrets.ONLINEFIX_USERNAME }}
|
||||
ONLINEFIX_PASSWORD: ${{ secrets.ONLINEFIX_PASSWORD }}
|
||||
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Build Windows
|
||||
if: matrix.os == 'windows-latest'
|
||||
run: yarn build:win
|
||||
env:
|
||||
MAIN_VITE_ONLINEFIX_USERNAME: ${{ secrets.ONLINEFIX_USERNAME }}
|
||||
MAIN_VITE_ONLINEFIX_PASSWORD: ${{ secrets.ONLINEFIX_PASSWORD }}
|
||||
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Create artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.os.artifact }}
|
||||
path: ${{ matrix.os.build_path }}
|
||||
name: Build-${{ matrix.os }}
|
||||
path: |
|
||||
dist/win-unpacked/**
|
||||
dist/*-portable.exe
|
||||
dist/*.zip
|
||||
dist/*.dmg
|
||||
dist/*.deb
|
||||
dist/*.rpm
|
||||
dist/*.tar.gz
|
||||
dist/*.yml
|
||||
dist/*.blockmap
|
||||
|
||||
15
.github/workflows/lint.yml
vendored
@@ -1,10 +1,6 @@
|
||||
name: Lint
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "**"
|
||||
- "!main"
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
@@ -22,5 +18,14 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: yarn
|
||||
|
||||
- name: Validate current commit (last commit) with commitlint
|
||||
run: npx commitlint --last --verbose
|
||||
|
||||
- name: Typecheck
|
||||
run: yarn typecheck
|
||||
|
||||
- name: Lint
|
||||
run: yarn lint
|
||||
|
||||
- name: Format check
|
||||
run: yarn format-check
|
||||
|
||||
76
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-latest, ubuntu-latest]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- name: Check out Git repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.11.1
|
||||
|
||||
- name: Install dependencies
|
||||
run: yarn
|
||||
|
||||
- name: Install Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: 3.9
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip install -r requirements.txt
|
||||
|
||||
- name: Build with cx_Freeze
|
||||
run: python torrent-client/setup.py build
|
||||
|
||||
- name: Build Linux
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: yarn build:linux
|
||||
env:
|
||||
MAIN_VITE_ONLINEFIX_USERNAME: ${{ secrets.ONLINEFIX_USERNAME }}
|
||||
MAIN_VITE_ONLINEFIX_PASSWORD: ${{ secrets.ONLINEFIX_PASSWORD }}
|
||||
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Build Windows
|
||||
if: matrix.os == 'windows-latest'
|
||||
run: yarn build:win
|
||||
env:
|
||||
MAIN_VITE_ONLINEFIX_USERNAME: ${{ secrets.ONLINEFIX_USERNAME }}
|
||||
MAIN_VITE_ONLINEFIX_PASSWORD: ${{ secrets.ONLINEFIX_PASSWORD }}
|
||||
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
draft: true
|
||||
files: |
|
||||
dist/*.exe
|
||||
dist/*.zip
|
||||
dist/*.dmg
|
||||
dist/*.AppImage
|
||||
dist/*.snap
|
||||
dist/*.deb
|
||||
dist/*.rpm
|
||||
dist/*.tar.gz
|
||||
dist/*.yml
|
||||
dist/*.blockmap
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
119
.gitignore
vendored
@@ -1,108 +1,13 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
.DS_Store
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# TypeScript v1 declaration files
|
||||
typings/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
.env.test
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
|
||||
# next.js build output
|
||||
.next
|
||||
|
||||
# nuxt.js build output
|
||||
.nuxt
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# Webpack
|
||||
.webpack/
|
||||
|
||||
# Vite
|
||||
.vite/
|
||||
|
||||
# Electron-Forge
|
||||
out/
|
||||
|
||||
.vscode/
|
||||
|
||||
.venv
|
||||
|
||||
dev.db
|
||||
|
||||
.vscode
|
||||
node_modules
|
||||
hydra-download-manager/
|
||||
aria2/
|
||||
fastlist.exe
|
||||
__pycache__
|
||||
|
||||
# pyinstaller
|
||||
build/
|
||||
resources/dist/
|
||||
*.spec
|
||||
|
||||
# Sentry Config File
|
||||
.env.sentry-build-plugin
|
||||
dist
|
||||
out
|
||||
.DS_Store
|
||||
*.log*
|
||||
.env
|
||||
.vite
|
||||
sentry.properties
|
||||
|
||||
1
.husky/pre-commit
Normal file
@@ -0,0 +1 @@
|
||||
yarn format
|
||||
2
.husky/pre-push
Normal file
@@ -0,0 +1,2 @@
|
||||
yarn lint
|
||||
yarn typecheck
|
||||
7
.prettierignore
Normal file
@@ -0,0 +1,7 @@
|
||||
out
|
||||
dist
|
||||
seeds
|
||||
pnpm-lock.yaml
|
||||
LICENSE.md
|
||||
tsconfig.json
|
||||
tsconfig.*.json
|
||||
183
README.be.md
Normal file
@@ -0,0 +1,183 @@
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra - гэта гульнявы лаўнчар з уласным убудаваным кліентам BitTorrent і самастойным scraper`ам для рэпакаў.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.pt-BR.md)
|
||||
[](README.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.be.md)
|
||||
[](README.es.md)
|
||||
[](README.fr.md)
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## Змест
|
||||
|
||||
- [Апісанне](#апісанне)
|
||||
- [Асаблівасці](#асаблівасці)
|
||||
- [Усталёўка](#усталёўка)
|
||||
- [Уклад](#contributing)
|
||||
- [Далучайцеся да нашага Telegram](#join-our-telegram)
|
||||
- [Форк і кланаванне рэпазітара](#форк-і-кланаванне-рэпазітара)
|
||||
- [Спосабы ўнесці свой уклад](#спосабы-ўнесці-свой-уклад)
|
||||
- [Структура праекту](#структура-праекту)
|
||||
- [Зборка з зыходнага коду](#зборка-з-зыходнага-коду)
|
||||
- [Усталёўка Node.js](#усталёўка-nodejs)
|
||||
- [Усталёўка Yarn](#усталёўка-yarn)
|
||||
- [Усталёўка залежнасцяў Node](#усталёўка-залежнасцяў-node)
|
||||
- [Усталёўка Python 3.9](#усталёўка-python-39)
|
||||
- [Усталёўка залежнасцяў Python](#усталёўка-залежнасцяў-python)
|
||||
- [Пераменныя асяроддзі](#пераменныя-асяроддзі)
|
||||
- [Запуск](#запуск)
|
||||
- [Зборка](#зборка)
|
||||
- [Зборка кліента BitTorrent](#зборка-кліента-bittorrent)
|
||||
- [Зборка прыкладання Electron](#зборка-прыкладання-electron)
|
||||
- [Удзельнікі](#удзельнікі)
|
||||
|
||||
## Апісанне
|
||||
|
||||
**Hydra** - гэта **гульнявы лаўнчар** з уласным убудаваным **кліентам BitTorrent** і **самастойным scraper`ом для рэпакаў**.
|
||||
<br>
|
||||
Лаўнчар напісаны на TypeScript (Electron) і Python, які кіруе сістэмай торэнтаў з дапамогай libtorrent.
|
||||
|
||||
## Асаблівасці
|
||||
|
||||
- Самастойны scraper рэпакаў сярод усіх найбольш надзейных вэб-сайтаў у [Megathread](https://www.reddit.com/r/Piracy/wiki/megathread/)
|
||||
- Убудаваны кліент BitTorrent
|
||||
- Інтэграцыя How Long To Beat (HLTB) на старонцы гульні
|
||||
- Настройка шляху сцягвання
|
||||
- Паведамленні аб абнаўленні спісу рэпакаў
|
||||
- Падтрымка Windows і Linux
|
||||
- Рэгулярныя абнаўленні
|
||||
- І многае іншае...
|
||||
|
||||
## Усталёўка
|
||||
|
||||
Каб усталяваць, выканайце наступныя крокі:
|
||||
|
||||
1. Спампуйце апошнюю версію Hydra з [старонкі рэлізаў](https://github.com/hydralauncher/hydra/releases/latest).
|
||||
- Загрузіце толькі .exe, калі жадаеце ўсталяваць Hydra на Windows.
|
||||
- Загрузіце .deb ці .rpm ці .zip, калі жадаеце ўсталяваць Hydra на Linux (у залежнасці ад вашага дыстрыбутыва Linux).
|
||||
2. Запусціце спампаваны файл.
|
||||
3. Атрымлівайце асалоду ад Hydra!
|
||||
|
||||
## <a name="contributing"> Уклад
|
||||
|
||||
### <a name="join-our-telegram"></a> Далучайцеся да нашага Telegram
|
||||
|
||||
Мы засяроджваем нашы абмеркаванні ў нашым канале [Telegram](https://t.me/hydralauncher).
|
||||
|
||||
### Форк і кланаванне рэпазітара
|
||||
|
||||
1. Форкніце рэпазітар [(націсніце тут, каб зрабіць форк зараз)](https://github.com/hydralauncher/hydra/fork)
|
||||
2. Склануйце свой форкнуты код `git clone https://github.com/ваше_имя_пользователя/hydra`
|
||||
3. Стварыце новую галіну
|
||||
4. Адпраўце свае каміты
|
||||
5. Адпраўце Pull Request
|
||||
|
||||
### Спосабы ўнесці свой уклад
|
||||
|
||||
- Пераклад: Мы хочам, каб Hydra была даступная як мага большай колькасці людзей. Не саромейцеся дапамагаць перакладаць на новыя мовы ці абнаўляць і паляпшаць тыя, якія ўжо даступныя ў Hydra.
|
||||
- Код: Hydra створаны з выкарыстаннем TypeScript, Electron і крыху Python. Калі хочаце ўнесці свой уклад, далучайцеся да нашага канала [Telegram](https://t.me/hydralauncher)!
|
||||
|
||||
### Структура праекту
|
||||
|
||||
- torrent-client: Мы выкарыстоўваем libtorrent, бібліятэку Python, для кіравання торэнт-загрузкамі.
|
||||
- src/renderer: Карыстацкі інтэрфейс прыкладання.
|
||||
- src/main: Увесь асноўны функцыянал тут.
|
||||
|
||||
## Зборка з зыходнага коду
|
||||
|
||||
### Усталёўка Node.js
|
||||
|
||||
Упэўніцеся, што ў вас усталяваны Node.js на вашым кампутары. Калі не, загрузіце і ўсталюйце яго з [nodejs.org](https://nodejs.org/).
|
||||
|
||||
### Усталёўка Yarn
|
||||
|
||||
Yarn - мэнэджэр пакетаў для Node.js. Калі вы яшчэ не ўсталявалі Yarn, зрабіце гэта, прытрымліваючыся інструкцыям на [yarnpkg.com](https://classic.yarnpkg.com/lang/en/docs/install/).
|
||||
|
||||
### Усталёўка залежнасцяў Node
|
||||
|
||||
Перайдзіце ў каталог праекта і ўсталюйце залежнасці Node, выкарыстоўваючы Yarn:
|
||||
|
||||
```bash
|
||||
cd hydra
|
||||
yarn
|
||||
```
|
||||
|
||||
### Усталёўка Python 3.9
|
||||
|
||||
Упэўніцеся, што ў вас усталяваны Python 3.9 на вашым кампутары. Вы можаце загрузіць і ўсталяваць яго з [python.org](https://www.python.org/downloads/release/python-3913/).
|
||||
|
||||
### Усталёўка залежнасцяў Python
|
||||
|
||||
Усталюйце неабходныя залежнасці Python, выкарыстоўваючы pip:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Пераменныя асяроддзі
|
||||
|
||||
Вам спатрэбіцца ключ API SteamGridDB, каб атрымаць значкі гульняў пры ўсталёўкі.
|
||||
Калі вы жадаеце выкарыстоўваць onlinefix у якасці рэпака, вам трэба дадаць вашыя ўліковыя дадзеныя ў файл .env.
|
||||
|
||||
Як толькі вы атрымаеце ключ, вы зможаце скапіяваць або пераназваць файл `.env.example` у `.env` і змясціць у яго `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
|
||||
|
||||
## Запуск
|
||||
|
||||
Пасля таго як усё наладжана, вы можаце выканаць наступную каманду, каб запусціць працэс Electron і кліента BitTorrent:
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## Зборка
|
||||
|
||||
### Зборка кліента BitTorrent
|
||||
|
||||
Збярыце кліент BitTorrent з дапамогай гэтай каманды:
|
||||
|
||||
```bash
|
||||
python torrent-client/setup.py build
|
||||
```
|
||||
|
||||
### Зборка прыкладання Electron
|
||||
|
||||
Збярыце прыкладанне Electron, выкарыстоўваючы гэтую каманду:
|
||||
|
||||
На Windows:
|
||||
|
||||
```bash
|
||||
yarn build:win
|
||||
```
|
||||
|
||||
На Linux:
|
||||
|
||||
```bash
|
||||
yarn build:linux
|
||||
```
|
||||
|
||||
## Удзельнікі
|
||||
|
||||
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
|
||||
</a>
|
||||
|
||||
## Ліцэнзія
|
||||
|
||||
Hydra ліцэнзавана ў адпаведнасці з [MIT License](LICENSE).
|
||||
183
README.es.md
Normal file
@@ -0,0 +1,183 @@
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra es un launcher de juegos con su propio cliente de bittorrent y gestor propio de repacks.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.be.md)
|
||||
[](README.pl.md)
|
||||
[](README.pt-BR.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.md)
|
||||
[](README.fr.md)
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## Tabla de Contenidos
|
||||
|
||||
- [Acerca de](#acerca-de)
|
||||
- [Características](#caracteristicas)
|
||||
- [Instalación](#Instalacion)
|
||||
- [Contribuir](#contribuir)
|
||||
- [Únete a nuestro Telegram](#unete-a-nuestro-telegram)
|
||||
- [Haz un fork y clona tu repositorio](#haz-un-fork-y-clona-tu-repositorio)
|
||||
- [Maneras en las que puedes contribuir](#maneras-en-las-que-puedes-contribuir)
|
||||
- [Estructura del proyecto](#estructura-del-proyecto)
|
||||
- [Compilar desde el código fuente](#compilar-desde-el-código-fuente)
|
||||
- [Instalar Node.js](#instalar-nodejs)
|
||||
- [Instalar Yarn](#instalar-yarn)
|
||||
- [Instalar Dependencias de Node](#instalar-dependencias-de-node)
|
||||
- [Instalar Python 3.9](#instalar-python-39)
|
||||
- [Instalar Dependencias de Python](#Instalar-dependencias-de-python)
|
||||
- [Variables del Entorno](#variables-del-entorno)
|
||||
- [Ejecución](#ejecucion)
|
||||
- [Compilación](#compilacion)
|
||||
- [Compilar el cliente de bittorrent](#compilar-el-cliente-de-bittorrent)
|
||||
- [Compilar la aplicación Electron](#compilar-la-aplicacion-electron)
|
||||
- [Colaboradores](#colaboradores)
|
||||
|
||||
## Acerca de
|
||||
|
||||
**Hydra** es un **Launcher de Juegos** con su propio **Cliente Bittorrent** y **autogestor de Repacks**.
|
||||
<br>
|
||||
El launcher está escrito en TypeScript (Electron) y Python, el cuál se encarga del sistema de torrent usando libtorrent.
|
||||
|
||||
## Caracteristicas
|
||||
|
||||
- Buscador e instalador autogestionado de repacks a través de las páginas más confiables en él [Megahilo](https://www.reddit.com/r/Piracy/wiki/megathread/)
|
||||
- Cliente propio de bittorrent integrado
|
||||
- Integración de How Long To Beat (HLTB) en la página del juego
|
||||
- Customización de rutas de descargas
|
||||
- Notificaciones en actualizaciones a listas de repacks
|
||||
- Soporte a Windows y Linux
|
||||
- En constante actualización
|
||||
- Y mucho más ...
|
||||
|
||||
## Instalacion
|
||||
|
||||
Sigue los pasos de abajo para instalar:
|
||||
|
||||
1. Descarga la última versión de Hydra desde la página de [Releases](https://github.com/hydralauncher/hydra/releases/latest).
|
||||
- Descarga solo el .exe si quieres instalar Hydra en Windows.
|
||||
- Descarga el .deb o .rpm o .zip si quieres instalar Hydra en Linux. (Depende de tu distro de Linux)
|
||||
2. Ejecuta el archivo descargado.
|
||||
3. ¡Disfruta de Hydra!
|
||||
|
||||
## <a name="contribuir"> Contribuir
|
||||
|
||||
### <a name="unete-a-nuestro-telegram"></a> Unete a nuestro Telegram
|
||||
|
||||
Puedes unirte a nuestra conversación y discusiones en nuestro canal de [Telegram](https://t.me/hydralauncher).
|
||||
|
||||
### Haz un fork y clona tu repositorio
|
||||
|
||||
1. Realiza un fork del repositorio [(Haz click acá para hacer un fork ahora)](https://github.com/hydralauncher/hydra/fork)
|
||||
2. Clona el código forkeado `git clone https://github.com/tu_nombredeusuario/hydra`
|
||||
3. Crea una nueva rama
|
||||
4. Sube tus commits
|
||||
5. Envía nuevas solicitudes de pull
|
||||
|
||||
### Maneras en las que puedes contribuir
|
||||
|
||||
- Traducción: Queremos que Hydra esté disponible para todas las personas que sean posible. Siéntete libre de ayudarnos a traducirlo a nuevos lenguajes o actualizar y mejorar las ya disponibles en Hydra.
|
||||
- Código: Hydra está hecho con Typescript, Electron y un poquito de Python. Si quieres contribuir, ¡únete a nuestro [Telegram](https://t.me/hydralauncher)!
|
||||
|
||||
### Estructura del proyecto
|
||||
|
||||
- torrent-client: Usamos libtorrent, una librería de Python que se encarga de manejar las descargas torrent
|
||||
- src/renderer: El UI de la aplicación
|
||||
- src/main: El resto de la lógica va acá.
|
||||
|
||||
## Compilar desde el código fuente
|
||||
|
||||
### Instalar Node.js
|
||||
|
||||
Asegúrate que tienes Node.js instalado en tú máquina. Si no es así, puedes descargarlo e instalarlo desde [nodejs.org](https://nodejs.org/).
|
||||
|
||||
### Instalar Yarn
|
||||
|
||||
Yarn es un gestor de paquetes para Node.js. Si no tienes aún instalado Yarn todavía, puedes hacerlo siguiendo las instrucciones en [yarnpkg.com](https://classic.yarnpkg.com/lang/en/docs/install/).
|
||||
|
||||
### Instalar Dependencias de Node
|
||||
|
||||
Dirígete hasta el directorio del proyecto e instala las dependencias de Node usando Yarn:
|
||||
|
||||
```bash
|
||||
cd hydra
|
||||
yarn
|
||||
```
|
||||
|
||||
### Instalar Python 3.9
|
||||
|
||||
Asegúrate que tienes Python 3.9 instalado en tu máquina. Puedes descargarlo e instalarlo desde [python.org](https://www.python.org/downloads/release/python-3913/).
|
||||
|
||||
### Instalar Dependencias de Python
|
||||
|
||||
Instala las dependencias de Python requeridas usando pip:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Variables del Entorno
|
||||
|
||||
Necesitas una llave API de SteamGridDB para así poder obtener los íconos de los juegos en la instalación.
|
||||
Si quieres también tener los repacks de onlinefix, necesitarás añadir tus credenciales al .env
|
||||
|
||||
Una vez que los tengas, puedes copiar o renombrar el archivo `.env.example` cómo `.env` y colocarlo en `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
|
||||
|
||||
## Ejecucion
|
||||
|
||||
Una vez que tengas todas las cosas listas, puedes ejecutar el siguiente comando para así iniciar el proceso de Electron y el cliente de bittorrent:
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## Compilacion
|
||||
|
||||
### Compilar el cliente de bittorrent
|
||||
|
||||
Crea el cliente bittorrent usando este comando:
|
||||
|
||||
```bash
|
||||
python torrent-client/setup.py build
|
||||
```
|
||||
|
||||
### Compilar la aplicacion Electron
|
||||
|
||||
Crea la aplicación de Electron usando este comando:
|
||||
|
||||
En Windows:
|
||||
|
||||
```bash
|
||||
yarn build:win
|
||||
```
|
||||
|
||||
En Linux:
|
||||
|
||||
```bash
|
||||
yarn build:linux
|
||||
```
|
||||
|
||||
## Colaboradores
|
||||
|
||||
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
|
||||
</a>
|
||||
|
||||
## Licencia
|
||||
|
||||
Hydra está licenciado bajo la [MIT License](LICENSE).
|
||||
183
README.fr.md
Normal file
@@ -0,0 +1,183 @@
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra est un lanceur de jeux avec son propre client bittorrent intégré et un scraper de repack auto-géré.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.md)
|
||||
[](README.be.md)
|
||||
[](README.pl.md)
|
||||
[](README.pt-BR.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.es.md)
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## Table des Matières
|
||||
|
||||
- [À propos](#à-propos)
|
||||
- [Fonctionnalités](#fonctionnalités)
|
||||
- [Installation](#installation)
|
||||
- [Contribuer](#contribuer)
|
||||
- [Rejoindre notre Telegram](#rejoindre-notre-telegram)
|
||||
- [Fork et Cloner votre dépôt](#fork-et-cloner-votre-dépôt)
|
||||
- [Manières de contribuer](#manières-de-contribuer)
|
||||
- [Structure du projet](#structure-du-projet)
|
||||
- [Compiler depuis les sources](#compiler-depuis-les-sources)
|
||||
- [Installer Node.js](#installer-nodejs)
|
||||
- [Installer Yarn](#installer-yarn)
|
||||
- [Installer les dépendances Node](#installer-les-dépendances-node)
|
||||
- [Installer Python 3.9](#installer-python-39)
|
||||
- [Installer les dépendances Python](#installer-les-dépendances-python)
|
||||
- [Variables d'environnement](#variables-denvironnement)
|
||||
- [Lancement](#lancement)
|
||||
- [Compilation](#compilation)
|
||||
- [Compiler le client bittorrent](#compiler-le-client-bittorrent)
|
||||
- [Compiler l'application Electron](#compiler-lapplication-electron)
|
||||
- [Contributeurs](#contributeurs)
|
||||
|
||||
## À propos
|
||||
|
||||
**Hydra** est un **lanceur de jeux** avec son propre **client BitTorrent** intégré et un **scraper de repack auto-géré**.
|
||||
<br>
|
||||
Le lanceur est écrit en TypeScript (Electron) et Python, qui gère le système de torrent en utilisant libtorrent.
|
||||
|
||||
## Fonctionnalités
|
||||
|
||||
- Scraper de repack auto-géré parmi tous les sites les plus fiables sur le [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/")
|
||||
- Client bittorrent intégré
|
||||
- Intégration How Long To Beat (HLTB) sur la page du jeu
|
||||
- Personnalisation des chemins de téléchargement
|
||||
- Notifications de mise à jour de la liste de repack
|
||||
- Support pour Windows et Linux
|
||||
- Constamment mis à jour
|
||||
- Et plus encore ...
|
||||
|
||||
## Installation
|
||||
|
||||
Suivez les étapes ci-dessous pour installer :
|
||||
|
||||
1. Téléchargez la dernière version de Hydra depuis la page [Releases](https://github.com/hydralauncher/hydra/releases/latest).
|
||||
- Téléchargez uniquement le .exe si vous voulez installer Hydra sur Windows.
|
||||
- Téléchargez .deb ou .rpm ou .zip si vous voulez installer Hydra sur Linux (cela dépend de votre distribution Linux).
|
||||
2. Exécutez le fichier téléchargé.
|
||||
3. Profitez de Hydra !
|
||||
|
||||
## Contribuer
|
||||
|
||||
### Rejoindre notre Telegram
|
||||
|
||||
Nous concentrons nos discussions sur notre [Telegram](https://t.me/hydralauncher).
|
||||
|
||||
### Fork et Cloner votre dépôt
|
||||
|
||||
1. Forkez le dépôt [(cliquez ici pour forker maintenant)](https://github.com/hydralauncher/hydra/fork)
|
||||
2. Clonez votre code forké `git clone https://github.com/votre_nom_utilisateur/hydra`
|
||||
3. Créez une nouvelle branche
|
||||
4. Pushez vos commits
|
||||
5. Créez une nouvelle Pull Request
|
||||
|
||||
### Manières de contribuer
|
||||
|
||||
- Traduction : Nous voulons que Hydra soit disponible pour le plus grand nombre de personnes possible. N'hésitez pas à aider à traduire dans de nouvelles langues ou à mettre à jour et améliorer celles qui sont déjà disponibles sur Hydra.
|
||||
- Code : Hydra est construit avec Typescript, Electron et un peu de Python. Si vous voulez contribuer, rejoignez notre [Telegram](https://t.me/hydralauncher) !
|
||||
|
||||
### Structure du projet
|
||||
|
||||
- torrent-client : Nous utilisons libtorrent, une bibliothèque Python, pour gérer les téléchargements torrent.
|
||||
- src/renderer : l'interface utilisateur de l'application.
|
||||
- src/main : toute la logique repose ici.
|
||||
|
||||
## Compiler depuis les sources
|
||||
|
||||
### Installer Node.js
|
||||
|
||||
Assurez-vous que Node.js est installé sur votre machine. Sinon, téléchargez et installez-le depuis [nodejs.org](https://nodejs.org/).
|
||||
|
||||
### Installer Yarn
|
||||
|
||||
Yarn est un gestionnaire de paquets pour Node.js. Si vous n'avez pas encore installé Yarn, vous pouvez le faire en suivant les instructions sur [yarnpkg.com](https://classic.yarnpkg.com/lang/en/docs/install/).
|
||||
|
||||
### Installer les dépendances Node
|
||||
|
||||
Naviguez vers le répertoire du projet et installez les dépendances Node en utilisant Yarn :
|
||||
|
||||
```bash
|
||||
cd hydra
|
||||
yarn
|
||||
```
|
||||
|
||||
### Installer Python 3.9
|
||||
|
||||
Assurez-vous que Python 3.9 est installé sur votre machine. Vous pouvez le télécharger et l'installer depuis [python.org](https://www.python.org/downloads/release/python-3913/).
|
||||
|
||||
### Installer les dépendances Python
|
||||
|
||||
Installez les dépendances Python requises en utilisant pip :
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Variables d'environnement
|
||||
|
||||
Vous aurez besoin d'une clé API SteamGridDB pour récupérer les icônes de jeux lors de l'installation.
|
||||
Si vous voulez avoir onlinefix comme repacker, vous devrez ajouter vos identifiants au fichier .env.
|
||||
|
||||
Une fois que vous l'avez, vous pouvez copier ou renommer le fichier `.env.example` en `.env` et y mettre `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
|
||||
|
||||
## Lancement
|
||||
|
||||
Une fois que vous avez tout configuré, vous pouvez exécuter la commande suivante pour démarrer à la fois le processus Electron et le client bittorrent :
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## Compilation
|
||||
|
||||
### Compiler le client bittorrent
|
||||
|
||||
Compilez le client bittorrent en utilisant cette commande :
|
||||
|
||||
```bash
|
||||
python torrent-client/setup.py build
|
||||
```
|
||||
|
||||
### Compiler l'application Electron
|
||||
|
||||
Compilez l'application Electron en utilisant cette commande :
|
||||
|
||||
Sur Windows :
|
||||
|
||||
```bash
|
||||
yarn build:win
|
||||
```
|
||||
|
||||
Sur Linux :
|
||||
|
||||
```bash
|
||||
yarn build:linux
|
||||
```
|
||||
|
||||
## Contributeurs
|
||||
|
||||
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
|
||||
</a>
|
||||
|
||||
## License
|
||||
|
||||
Hydra est sous [License MIT](LICENSE).
|
||||
127
README.md
@@ -1,16 +1,107 @@
|
||||
# Hydra
|
||||
<br>
|
||||
|
||||
<a href="https://discord.gg/hydralauncher" target="_blank"></a>
|
||||

|
||||

|
||||
<div align="center">
|
||||
|
||||
Hydra is a game launcher with its own embedded bittorrent client and a self-managed repack scraper.
|
||||
The launcher is written in TypeScript (Electron) and Python, which handles the torrenting system by using [libtorrent](https://www.libtorrent.org/).
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra is a game launcher with its own embedded bittorrent client and a self-managed repack scraper.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.be.md)
|
||||
[](README.pl.md)
|
||||
[](README.pt-BR.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.es.md)
|
||||
[](README.fr.md)
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [About](#about)
|
||||
- [Features](#features)
|
||||
- [Installation](#installation)
|
||||
- [Contributing](#contributing)
|
||||
- [Join our Telegram](#join-our-telegram)
|
||||
- [Fork and clone your repository](#fork-and-clone-your-repository)
|
||||
- [Ways you can contribute](#ways-you-can-contribute)
|
||||
- [Project Structure](#project-structure)
|
||||
- [Build from source](#build-from-source)
|
||||
- [Install Node.js](#install-nodejs)
|
||||
- [Install Yarn](#install-yarn)
|
||||
- [Install Node Dependencies](#install-node-dependencies)
|
||||
- [Install Python 3.9](#install-python-39)
|
||||
- [Install Python Dependencies](#install-python-dependencies)
|
||||
- [Environment variables](#environment-variables)
|
||||
- [Running](#running)
|
||||
- [Build](#build)
|
||||
- [Build the bittorrent client](#build-the-bittorrent-client)
|
||||
- [Build the Electron application](#build-the-electron-application)
|
||||
- [Contributors](#contributors)
|
||||
|
||||
## About
|
||||
|
||||
**Hydra** is a **Game Launcher** with its own embedded **BitTorrent Client** and a **self-managed repack scraper**.
|
||||
<br>
|
||||
The launcher is written in TypeScript (Electron) and Python, which handles the torrenting system by using libtorrent.
|
||||
|
||||
## Features
|
||||
|
||||
- Self-Managed repack scraper among all the most reliable websites on the [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/")
|
||||
- Own embedded bittorrent client
|
||||
- How Long To Beat (HLTB) integration on game page
|
||||
- Downloads path customization
|
||||
- Repack list update notifications
|
||||
- Windows and Linux support
|
||||
- Constantly updated
|
||||
- And more ...
|
||||
|
||||
## Installation
|
||||
|
||||
Follow the steps below to install:
|
||||
|
||||
1. Download the latest version of Hydra from the [Releases](https://github.com/hydralauncher/hydra/releases/latest) page.
|
||||
- Download only .exe if you want to install Hydra on Windows.
|
||||
- Download .deb or .rpm or .zip if you want to install Hydra on Linux. (depends on your Linux distro)
|
||||
2. Run the downloaded file.
|
||||
3. Enjoy Hydra!
|
||||
|
||||
## <a name="contributing"> Contributing
|
||||
|
||||
### <a name="join-our-telegram"></a> Join our Telegram
|
||||
|
||||
We concentrate our discussions on our [Telegram](https://t.me/hydralauncher) channel.
|
||||
|
||||
### Fork and clone your repository
|
||||
|
||||
1. Fork the repository [(click here to fork now)](https://github.com/hydralauncher/hydra/fork)
|
||||
2. Clone your forked code `git clone https://github.com/your_username/hydra`
|
||||
3. Create a new branch
|
||||
4. Push your commits
|
||||
5. Submit a new Pull Request
|
||||
|
||||
### Ways you can contribute
|
||||
|
||||
- Translation: We want Hydra to be available to as many people as possible. Feel free to help translate to new languages or update and improve the ones that are already available on Hydra.
|
||||
- Code: Hydra is built with Typescript, Electron and a little bit of Python. If you want to contribute, join our [Telegram](https://t.me/hydralauncher)!
|
||||
|
||||
### Project Structure
|
||||
|
||||
- torrent-client: We use libtorrent, a Python library, to manage torrent downloads
|
||||
- src/renderer: the UI of the application
|
||||
- src/main: all the logic rests here.
|
||||
|
||||
## Build from source
|
||||
|
||||
### Install Node.js
|
||||
|
||||
Ensure you have Node.js installed on your machine. If not, download and install it from [nodejs.org](https://nodejs.org/).
|
||||
@@ -19,12 +110,6 @@ Ensure you have Node.js installed on your machine. If not, download and install
|
||||
|
||||
Yarn is a package manager for Node.js. If you haven't installed Yarn yet, you can do so by following the instructions on [yarnpkg.com](https://classic.yarnpkg.com/lang/en/docs/install/).
|
||||
|
||||
### Clone the Repository
|
||||
|
||||
```bash
|
||||
git clone https://github.com/hydralauncher/hydra.git
|
||||
```
|
||||
|
||||
### Install Node Dependencies
|
||||
|
||||
Navigate to the project directory and install the Node dependencies using Yarn:
|
||||
@@ -36,7 +121,7 @@ yarn
|
||||
|
||||
### Install Python 3.9
|
||||
|
||||
Ensure you have Python installed on your machine. You can download and install it from [python.org](https://www.python.org/downloads/release/python-3919/).
|
||||
Ensure you have Python 3.9 installed on your machine. You can download and install it from [python.org](https://www.python.org/downloads/release/python-3913/).
|
||||
|
||||
### Install Python Dependencies
|
||||
|
||||
@@ -51,14 +136,14 @@ pip install -r requirements.txt
|
||||
You'll need an SteamGridDB API Key in order to fetch the game icons on installation.
|
||||
If you want to have onlinefix as a repacker you'll need to add your credentials to the .env
|
||||
|
||||
Once you have it, you can paste the `.env.example` file and put it on `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
|
||||
Once you have it, you can copy or rename the `.env.example` file to `.env` and put it on`STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
|
||||
|
||||
## Running
|
||||
|
||||
Once you've got all things set up, you can run the following command to start both the Electron process and the bittorrent client:
|
||||
|
||||
```bash
|
||||
yarn start
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## Build
|
||||
@@ -75,8 +160,16 @@ python torrent-client/setup.py build
|
||||
|
||||
Build the Electron application by using this command:
|
||||
|
||||
On Windows:
|
||||
|
||||
```bash
|
||||
yarn make
|
||||
yarn build:win
|
||||
```
|
||||
|
||||
On Linux:
|
||||
|
||||
```bash
|
||||
yarn build:linux
|
||||
```
|
||||
|
||||
## Contributors
|
||||
@@ -85,8 +178,6 @@ yarn make
|
||||
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
|
||||
</a>
|
||||
|
||||
Made with [contrib.rocks](https://contrib.rocks).
|
||||
|
||||
## License
|
||||
|
||||
Hydra is licensed under the [MIT License](LICENSE).
|
||||
|
||||
187
README.pl.md
Normal file
@@ -0,0 +1,187 @@
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra - to program uruchamiający gry z własnym wbudowanym klientem bittorrent i samodzielnie zarządzanym repackagerem..</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.be.md)
|
||||
[](README.md)
|
||||
[](README.pt-BR.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.es.md)
|
||||
[](README.fr.md)
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## Zawartość.
|
||||
|
||||
- [O nas](#o-nas)
|
||||
- [Cechy.](#cechy)
|
||||
- [Instalacja](#instalacja)
|
||||
- [Dokonaj wpłaty](#dokonaj-wpłaty)
|
||||
- [Dołącz do naszego kanału Telegram](#dołącz-do-naszego-kanału-telegram)
|
||||
- [Rozwidlenie i sklonowanie repozytorium](#rozwidlenie-i-sklonowanie-repozytorium)
|
||||
- [Jak możesz wnieść swój wkład](#jak-możesz-pomóc)
|
||||
- [Struktura projektu](#struktura-projektu)
|
||||
- [Utwórz kompilację z kodu źródłowego](#utwórz-kompilację-z-kodu-źródłowego)
|
||||
- [Instalacja Node.js](#zainstaluj-nodejs)
|
||||
- [Instalacja Yarn](#zainstaluj-yarn)
|
||||
- [Instalacja Node zależności](#zainstaluj-zależności-node)
|
||||
- [Instalacja Python 3.9](#zainstaluj-python-39)
|
||||
- [Instalacja Python zależności](#zainstaluj-zależności-pythona)
|
||||
- [Zmienne środowiskowe](#zmienne-środowiskowe)
|
||||
- [Uruchomienie](#utwórz-kompilację-z-kodu-źródłowego)
|
||||
- [Tworzenie kompilacji](#tworzenie-kompilacji)
|
||||
- [Tworzenie klienta bittorrent](#zbuduj-klienta-bittorrent)
|
||||
- [Tworzenie kompilacji aplikacji Electron](#tworzenie-aplikacji-electron)
|
||||
- [Współtwórcy](#współtwórcy)
|
||||
|
||||
## O nas
|
||||
|
||||
**Hydra** - jest **programem uruchamiającym gry** z wbudowanym **klientem BitTorrent** i **samozarządzającym się repackagerem**.
|
||||
<br>
|
||||
Ten launcher jest napisany w TypeScript (Electron) i Pythonie, który współpracuje z systemem torrent przy użyciu libtorrent.
|
||||
|
||||
## Cechy
|
||||
|
||||
- Samodzielnie zarządzany repackager wśród wszystkich najbardziej zaufanych stron na [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/").
|
||||
- Własny wbudowany klient bittorrent
|
||||
- Integracja funkcji How Long To Beat (HLTB) na stronie gry
|
||||
- Personalizacja folderu pobierania
|
||||
- Powiadomienia o aktualizacjach listy repacków
|
||||
- Wsparcie dla systemów Windows i Linux
|
||||
- Stała aktualizacja
|
||||
- I nie tylko ...
|
||||
|
||||
## Instalacja
|
||||
|
||||
Aby zainstalować, wykonaj poniższe czynności:
|
||||
|
||||
1. Pobierz najnowszą wersję programu Hydra ze strony [Wydania](https://github.com/hydralauncher/hydra/releases/latest).
|
||||
- Pobierz .exe tylko, jeśli chcesz zainstalować Hydrę w systemie Windows.
|
||||
- Pobierz .deb lub .rpm lub .zip, jeśli chcesz zainstalować Hydrę w systemie Linux (zależy od dystrybucji systemu Linux).
|
||||
2. Uruchom pobrany plik.
|
||||
3. Ciesz się Hydrą!
|
||||
|
||||
## <a name="contributing"> Dokonaj wpłaty
|
||||
|
||||
### <a name="join-our-telegram"></a> Dołącz do naszego kanału Telegram
|
||||
|
||||
Skupiamy nasze dyskusje na naszym kanale [Telegram](https://t.me/hydralauncher).
|
||||
|
||||
1. Dołącz do naszego kanału
|
||||
2. Przejdź do kanału ról i wybierz rolę Pracownik.
|
||||
3. Wejdź na kanał dev, komunikuj się z nami i dziel się swoimi pomysłami.
|
||||
|
||||
### Rozwidlenie i sklonowanie repozytorium
|
||||
|
||||
1. Rozwidlenie repozytorium [(kliknij tutaj, aby rozwidlić teraz)](https://github.com/hydralauncher/hydra/fork)
|
||||
2. Sklonuj swój rozwidlony kod `git clone https://github.com/your_username/hydra`.
|
||||
3. Utwórz nowy brunch
|
||||
4. Wypchnij swoje zatwierdzenia
|
||||
5. Wyślij nowy Pull Request
|
||||
|
||||
### Jak możesz pomóc
|
||||
|
||||
- Tłumaczenie: Chcemy, aby Hydra była dostępna dla jak największej liczby osób. Zachęcamy do pomocy w tłumaczeniu na nowe języki lub aktualizowaniu i ulepszaniu tych, które są już dostępne na Hydrze.
|
||||
- Kod: Hydra jest zbudowana przy użyciu Typescript, Electron i odrobiny Pythona. Jeśli chcesz wnieść swój wkład, dołącz do naszego kanału Telegram!
|
||||
|
||||
### Struktura projektu
|
||||
|
||||
- Klient torrent: Używamy libtorrent, biblioteki Pythona, do zarządzania pobieraniem torrentów.
|
||||
- src/renderer: interfejs aplikacji
|
||||
- src/main: cała logika jest tutaj.
|
||||
|
||||
## Utwórz kompilację z kodu źródłowego
|
||||
|
||||
### Zainstaluj Node.js
|
||||
|
||||
Upewnij się, że masz zainstalowany Node.js na swoim komputerze. Jeśli nie, pobierz i zainstaluj go ze strony [nodejs.org](https://nodejs.org/).
|
||||
|
||||
### Zainstaluj Yarn
|
||||
|
||||
Yarn to menedżer pakietów dla Node.js. Jeśli jeszcze nie zainstalowałeś Yarn, możesz to zrobić, postępując zgodnie z instrukcjami na stronie [yarnpkg.com](https://classic.yarnpkg.com/lang/en/docs/install/).
|
||||
|
||||
### Zainstaluj zależności Node
|
||||
|
||||
Przejdź do katalogu projektu i zainstaluj zależności Node za pomocą Yarn:
|
||||
|
||||
```bash
|
||||
cd hydra
|
||||
yarn
|
||||
```
|
||||
|
||||
### Zainstaluj Python 3.9
|
||||
|
||||
Upewnij się, że masz zainstalowany Python 3.9 na swoim komputerze. Można go pobrać i zainstalować ze strony [python.org](https://www.python.org/downloads/release/python-3913/).
|
||||
|
||||
### Zainstaluj zależności Pythona
|
||||
|
||||
Zainstaluj niezbędne zależności Pythona za pomocą pip:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Zmienne środowiskowe
|
||||
|
||||
Będziesz potrzebował klucza API SteamGridDB, aby uzyskać ikony gier podczas instalacji.
|
||||
Jeśli chcesz użyć onlinefix jako repackagera, musisz dodać swoje dane uwierzytelniające do .env
|
||||
|
||||
Po jego uzyskaniu można skopiować plik lub zmienić jego nazwę `.env.example` na `.env` i umieść go na`STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
|
||||
|
||||
## Run
|
||||
|
||||
Po skonfigurowaniu wszystkiego można uruchomić następujące polecenie, aby uruchomić zarówno proces Electron, jak i klienta bittorrent:
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## Tworzenie kompilacji
|
||||
|
||||
### Zbuduj klienta bittorrent
|
||||
|
||||
Zbuduj klienta bittorrent za pomocą tego poleceniaи:
|
||||
|
||||
```bash
|
||||
python torrent-client/setup.py build
|
||||
```
|
||||
|
||||
### Tworzenie aplikacji Electron
|
||||
|
||||
Zbuduj aplikację Electron za pomocą tego polecenia:
|
||||
|
||||
W systemie Windows:
|
||||
|
||||
```bash
|
||||
yarn build:win
|
||||
```
|
||||
|
||||
W systemie Linux:
|
||||
|
||||
```bash
|
||||
yarn build:linux
|
||||
```
|
||||
|
||||
## Współtwórcy
|
||||
|
||||
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
|
||||
</a>
|
||||
|
||||
## License
|
||||
|
||||
Hydra posiada licencję [MIT License](LICENSE).
|
||||
183
README.pt-BR.md
Normal file
@@ -0,0 +1,183 @@
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra é um Launcher de Jogos com seu próprio cliente de bittorrent integrado e um wrapper autogerenciado para busca de repacks.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.be.md)
|
||||
[](README.md)
|
||||
[](README.pl.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.es.md)
|
||||
[](README.fr.md)
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## Índice
|
||||
|
||||
- [Sobre](#about)
|
||||
- [Recursos](#features)
|
||||
- [Instalação](#installation)
|
||||
- [Contribuindo](#contributing)
|
||||
- [Junte-se ao nosso Telegram](#join-our-telegram)
|
||||
- [Fork e clone seu repositorio](#fork-and-clone-your-repository)
|
||||
- [Como contribuir](#ways-you-can-contribute)
|
||||
- [Estrutura do projeto](#project-structure)
|
||||
- [Compile a partir do código-fonte](#build-from-source)
|
||||
- [Instale Node.js](#install-nodejs)
|
||||
- [Instale Yarn](#install-yarn)
|
||||
- [Instale Node Dependencies](#install-node-dependencies)
|
||||
- [Instale Python 3.9](#install-python-39)
|
||||
- [Instale Python Dependencies](#install-python-dependencies)
|
||||
- [variaveis de ambiente](#environment-variables)
|
||||
- [Rodando o programa](#running)
|
||||
- [Compilando](#build)
|
||||
- [Compile o client bittorrent](#build-the-bittorrent-client)
|
||||
- [Compile a aplicação Electron](#build-the-electron-application)
|
||||
- [Contribuidores](#contributors)
|
||||
|
||||
## <a name="about"> Sobre
|
||||
|
||||
**Hydra** é um **Launcher de Jogos** com seu próprio **Cliente BitTorrent incorporado** e um **raspador de repack auto-gerenciado**.
|
||||
<br>
|
||||
O launcher é escrito em TypeScript (Electron) e Python, que lida com o sistema de torrent usando libtorrent.
|
||||
|
||||
## <a name="features"> Recursos
|
||||
|
||||
- Wrapper de repacks auto-gerenciado entre todos os sites mais confiáveis no [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/")
|
||||
- Cliente BitTorrent incorporado próprio
|
||||
- Integração com [How Long To Beat (HLTB)](https://howlongtobeat.com/) na página do jogo
|
||||
- Personalização do caminho de downloads
|
||||
- Notificações de atualização da lista de repacks
|
||||
- Suporte para Windows e Linux
|
||||
- Constantemente atualizado
|
||||
- E mais ...
|
||||
|
||||
## <a name="installation"> Instalação
|
||||
|
||||
Siga os passos abaixo para instalar:
|
||||
|
||||
1. Baixe a versão mais recente do Hydra na página de [Releases](https://github.com/hydralauncher/hydra/releases/latest).
|
||||
- Baixe apenas o .exe se quiser instalar o Hydra no Windows.
|
||||
- Baixe .deb ou .rpm ou .zip se quiser instalar o Hydra no Linux. (depende da sua distribuição Linux)
|
||||
2. Execute o arquivo baixado.
|
||||
3. Aproveite o Hydra!
|
||||
|
||||
## <a name="contributing"> Contribuindo
|
||||
|
||||
### <a name="join-our-telegram"></a> Junte-se ao nosso Telegram
|
||||
|
||||
Concentramos nossas discussões no nosso canal do [Telegram](https://t.me/hydralauncher).
|
||||
|
||||
### <a name="fork-and-clone-your-repository"></a> Fork e clone o seu repositório
|
||||
|
||||
1. Faça um fork do repositório [(clique aqui para fazer o fork agora)](https://github.com/hydralauncher/hydra/fork)
|
||||
2. Clone o código do seu fork `git clone https://github.com/seu_nome_de_usuário/hydra`
|
||||
3. Crie uma nova branch
|
||||
4. Faça o push dos seus commits
|
||||
5. Envie um novo Pull Request
|
||||
|
||||
### <a name="ways-you-can-contribute"></a> Formas de contribuir
|
||||
|
||||
- **Tradução**: Queremos que o Hydra esteja disponível para o maior número possível de pessoas. Sinta-se à vontade para ajudar a traduzir para novos idiomas ou atualizar e melhorar aqueles que já estão disponíveis no Hydra.
|
||||
- **Código**: O Hydra é construído com Typescript, Electron e um pouco de Python. Se você deseja contribuir, junte-se ao nosso [Telegram](https://t.me/hydralauncher)!
|
||||
|
||||
### <a name="project-structure"></a> Estrutura do Projeto
|
||||
|
||||
- torrent-client: Utilizamos o libtorrent, uma biblioteca Python, para gerenciar downloads via torrent.
|
||||
- src/renderer: A interface de usuário (UI) da aplicação.
|
||||
- src/main: Toda a lógica da aplicação reside aqui.
|
||||
|
||||
## <a name="build-from-source"></a> Compile a partir do código-fonte
|
||||
|
||||
### <a name="install-nodejs"></a> Instale Node.js
|
||||
|
||||
Certifique-se de ter o Node.js instalado em sua máquina. Se não, faça o download e instale-o em [nodejs.org](https://nodejs.org/).
|
||||
|
||||
### <a name="install-yarn"></a> Instale Yarn
|
||||
|
||||
Yarn é um gerenciador de pacotes para Node.js. Se você ainda não o instalou, pode fazê-lo seguindo as instruções em [yarnpkg.com](https://classic.yarnpkg.com/lang/en/docs/install/).
|
||||
|
||||
### <a name="install-node-dependencies"></a> Instale Dependencias do Node
|
||||
|
||||
Navegue até o diretório do projeto e instale as dependências do Node usando o Yarn:
|
||||
|
||||
```bash
|
||||
cd hydra
|
||||
yarn
|
||||
```
|
||||
|
||||
### <a name="install-python-39"></a> Instale Python 3.9
|
||||
|
||||
Certifique-se de ter o Python 3.9 instalado em sua máquina. Você pode baixá-lo e instalá-lo em [python.org](https://www.python.org/downloads/release/python-3913/).
|
||||
|
||||
### <a name="install-python-dependencies"></a> Instale Python Dependencies
|
||||
|
||||
Instale as dependências Python necessárias usando o pip:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## <a name="environment-variables"></a> Environment variables
|
||||
|
||||
Você precisará de uma chave da API SteamGridDB para buscar os ícones do jogo durante a instalação.
|
||||
Se você deseja ter o onlinefix como um repacker, precisará adicionar suas credenciais ao arquivo .env.
|
||||
|
||||
Depois de obtê-lo, você pode copiar ou renomear o arquivo `.env.example` para `.env` e inserir `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME` e `ONLINEFIX_PASSWORD`.
|
||||
|
||||
## <a name="running"></a> Running
|
||||
|
||||
Uma vez que você tenha configurado tudo, você pode executar o seguinte comando para iniciar tanto o processo Electron quanto o cliente BitTorrent:
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## <a name="build"></a> Build
|
||||
|
||||
### <a name="build-the-bittorrent-client"></a> Build the bittorrent client
|
||||
|
||||
Compile o cliente BitTorrent usando este comando
|
||||
|
||||
```bash
|
||||
python torrent-client/setup.py build
|
||||
```
|
||||
|
||||
### <a name="build-the-electron-application"></a> Build the Electron application
|
||||
|
||||
Compile a aplicação Electron usando este comando:
|
||||
|
||||
No Windows:
|
||||
|
||||
```bash
|
||||
yarn build:win
|
||||
```
|
||||
|
||||
No Linux:
|
||||
|
||||
```bash
|
||||
yarn build:linux
|
||||
```
|
||||
|
||||
## <a name="contributors"></a> Contributors
|
||||
|
||||
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
|
||||
</a>
|
||||
|
||||
## <a name="license"></a> Licença
|
||||
|
||||
O Hydra é licenciado sob a [Licença MIT](LICENSE).
|
||||
183
README.ru.md
Normal file
@@ -0,0 +1,183 @@
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra - это игровой лаунчер с собственным встроенным клиентом BitTorrent и самостоятельным scraper`ом для репаков.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.be.md)
|
||||
[](README.md)
|
||||
[](README.pl.md)
|
||||
[](README.pt-BR.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.es.md)
|
||||
[](README.fr.md)
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## Содержание
|
||||
|
||||
- [Описание](#описание)
|
||||
- [Особенности](#особенности)
|
||||
- [Установка](#установка)
|
||||
- [Вклад](#contributing)
|
||||
- [Присоединяйтесь к нашему Telegram](#join-our-telegram)
|
||||
- [Форк и клонирование репозитория](#форк-и-клонирование-репозитория)
|
||||
- [Способы внести свой вклад](#способы-внести-свой-вклад)
|
||||
- [Структура проекта](#структура-проекта)
|
||||
- [Сборка из исходного кода](#сборка-из-исходного-кода)
|
||||
- [Установка Node.js](#установка-nodejs)
|
||||
- [Установка Yarn](#установка-yarn)
|
||||
- [Установка зависимостей Node](#установка-зависимостей-node)
|
||||
- [Установка Python 3.9](#установка-python-39)
|
||||
- [Установка зависимостей Python](#установка-зависимостей-python)
|
||||
- [Переменные среды](#переменные-среды)
|
||||
- [Запуск](#запуск)
|
||||
- [Сборка](#сборка)
|
||||
- [Сборка клиента BitTorrent](#сборка-клиента-bittorrent)
|
||||
- [Сборка приложения Electron](#сборка-приложения-electron)
|
||||
- [Участники](#участники)
|
||||
|
||||
## Описание
|
||||
|
||||
**Hydra** - это **Игровой Лаунчер** с собственным встроенным **Клиентом BitTorrent** и **самостоятельным scraper`ом для репаков**.
|
||||
<br>
|
||||
Лаунчер написан на TypeScript (Electron) и Python, который управляет системой торрентов с помощью libtorrent.
|
||||
|
||||
## Особенности
|
||||
|
||||
- Самостоятельный scraper репаков среди всех наиболее надежных веб-сайтов в [Megathread](https://www.reddit.com/r/Piracy/wiki/megathread/)
|
||||
- Встроенный клиент BitTorrent
|
||||
- Интеграция How Long To Beat (HLTB) на странице игры
|
||||
- Настройка пути загрузки
|
||||
- Уведомления об обновлении списка репаков
|
||||
- Поддержка Windows и Linux
|
||||
- Постоянно обновляется
|
||||
- И многое другое...
|
||||
|
||||
## Установка
|
||||
|
||||
Чтобы установить, выполните следующие шаги:
|
||||
|
||||
1. Скачайте последнюю версию Hydra с [страницы релизов](https://github.com/hydralauncher/hydra/releases/latest).
|
||||
- Загрузите только .exe, если хотите установить Hydra на Windows.
|
||||
- Загрузите .deb или .rpm или .zip, если хотите установить Hydra на Linux (в зависимости от вашего дистрибутива Linux).
|
||||
2. Запустите скачанный файл.
|
||||
3. Наслаждайтесь Hydra!
|
||||
|
||||
## <a name="contributing"> Вклад
|
||||
|
||||
### <a name="join-our-telegram"></a> Присоединяйтесь к нашему Telegram
|
||||
|
||||
Мы сосредотачиваем наши обсуждения в нашем канале [Telegram](https://t.me/hydralauncher).
|
||||
|
||||
### Форк и клонирование репозитория
|
||||
|
||||
1. Форкните репозиторий [(нажмите здесь, чтобы сделать форк сейчас)](https://github.com/hydralauncher/hydra/fork)
|
||||
2. Склонируйте свой форкнутый код `git clone https://github.com/ваше_имя_пользователя/hydra`
|
||||
3. Создайте новую ветку
|
||||
4. Отправьте свои коммиты
|
||||
5. Отправьте Pull Request
|
||||
|
||||
### Способы внести свой вклад
|
||||
|
||||
- Перевод: Мы хотим, чтобы Hydra была доступна как можно большему количеству людей. Не стесняйтесь помогать переводить на новые языки или обновлять и улучшать те, которые уже доступны в Hydra.
|
||||
- Код: Hydra создан с использованием TypeScript, Electron и немного Python. Если хотите внести свой вклад, присоединяйтесь к нашему каналу [Telegram](https://t.me/hydralauncher)!
|
||||
|
||||
### Структура проекта
|
||||
|
||||
- torrent-client: Мы используем libtorrent, библиотеку Python, для управления загрузками торрентов.
|
||||
- src/renderer: пользовательский интерфейс приложения.
|
||||
- src/main: весь основной функционал здесь.
|
||||
|
||||
## Сборка из исходного кода
|
||||
|
||||
### Установка Node.js
|
||||
|
||||
Убедитесь, что у вас установлен Node.js на вашем компьютере. Если нет, загрузите и установите его с [nodejs.org](https://nodejs.org/).
|
||||
|
||||
### Установка Yarn
|
||||
|
||||
Yarn - менеджер пакетов для Node.js. Если вы еще не установили Yarn, сделайте это, следуя инструкциям на [yarnpkg.com](https://classic.yarnpkg.com/lang/en/docs/install/).
|
||||
|
||||
### Установка зависимостей Node
|
||||
|
||||
Перейдите в каталог проекта и установите зависимости Node, используя Yarn:
|
||||
|
||||
```bash
|
||||
cd hydra
|
||||
yarn
|
||||
```
|
||||
|
||||
### Установка Python 3.9
|
||||
|
||||
Убедитесь, что у вас установлен Python 3.9 на вашем компьютере. Вы можете загрузить и установить его с [python.org](https://www.python.org/downloads/release/python-3913/).
|
||||
|
||||
### Установка зависимостей Python
|
||||
|
||||
Установите необходимые зависимости Python, используя pip:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Переменные среды
|
||||
|
||||
Вам понадобится ключ API SteamGridDB, чтобы получить значки игр при установке.
|
||||
Если вы хотите использовать onlinefix в качестве репака, вам нужно добавить ваши учетные данные в файл .env.
|
||||
|
||||
Как только у вас будет ключ, вы можете скопировать или переименовать файл `.env.example` в `.env` и поместить в него `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
|
||||
|
||||
## Запуск
|
||||
|
||||
После того как все настроено, вы можете выполнить следующую команду, чтобы запустить процесс Electron и клиента BitTorrent:
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## Сборка
|
||||
|
||||
### Сборка клиента BitTorrent
|
||||
|
||||
Соберите клиент BitTorrent с помощью этой команды:
|
||||
|
||||
```bash
|
||||
python torrent-client/setup.py build
|
||||
```
|
||||
|
||||
### Сборка приложения Electron
|
||||
|
||||
Соберите приложение Electron, используя эту команду:
|
||||
|
||||
На Windows:
|
||||
|
||||
```bash
|
||||
yarn build:win
|
||||
```
|
||||
|
||||
На Linux:
|
||||
|
||||
```bash
|
||||
yarn build:linux
|
||||
```
|
||||
|
||||
## Участники
|
||||
|
||||
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
|
||||
</a>
|
||||
|
||||
## License
|
||||
|
||||
Hydra лицензирована в соответствии с [MIT License](LICENSE).
|
||||
187
README.uk-UA.md
Normal file
@@ -0,0 +1,187 @@
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra - це ігровий лаунчер з власним вбудованим bittorrent-клієнтом і самокерованим збирачем репаків.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.be.md)
|
||||
[](README.md)
|
||||
[](README.pl.md)
|
||||
[](README.pt-BR.md)
|
||||
[](README.ru.md)
|
||||
[](README.es.md)
|
||||
[](README.fr.md)
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## Зміст
|
||||
|
||||
- [Про нас](#про-нас)
|
||||
- [Функції](#функції)
|
||||
- [Встановлення](#встановлення)
|
||||
- [Зробити свій внесок](#contributing)
|
||||
- [Приєднуйтесь до нашого Telegram](#join-our-telegram)
|
||||
- [Форк і клонування вашого репозиторію](#форк-і-клонування-вашого-репозиторію)
|
||||
- [Як ви можете зробити свій внесок](#як-ви-можете-зробити-свій-внесок)
|
||||
- [Структура проекту](#структура-проекту)
|
||||
- [Зробити білд з вихідного коду](#зробити-білд-з-вихідного-коду)
|
||||
- [Встановіть Node.js](#встановіть-nodejs)
|
||||
- [Встановіть Yarn](#встановіть-yarn)
|
||||
- [Встановіть Node залежності](#встановіть-node-залежності)
|
||||
- [Встановіть Python 3.9](#встановіть-python-39)
|
||||
- [Встановіть Python залежності](#встановіть-python-залежності)
|
||||
- [Змінні середовища](#змінні-середовища)
|
||||
- [Запустіть](#запустіть)
|
||||
- [Зробіть білд](#зробіть-білд)
|
||||
- [Зробіть білд bittorrent client](#зробіть-білд-bittorrent-client)
|
||||
- [Зробіть білд Electron застосунку](#зробіть-білд-electron-застосунку)
|
||||
- [Контриб'ютори](#контрибютори)
|
||||
|
||||
## Про нас
|
||||
|
||||
**Hydra** - це **ігровий лаунчер** з власним вбудованим **BitTorrent-клієнтом** і **самокерованим збирачем репаків**.
|
||||
<br>
|
||||
Цей лаунчер написано мовами TypeScript (Electron) та Python, який працює з торрент-системою за допомогою libtorrent.
|
||||
|
||||
## Функції
|
||||
|
||||
- Самокерований збирач репаків серед усіх найнадійніших сайтів на [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/")
|
||||
- Власний вбудований клієнт bittorrent
|
||||
- Інтеграція How Long To Beat (HLTB) на сторінці гри
|
||||
- Налаштування теки завантаження
|
||||
- Сповіщення про оновлення списку репаків
|
||||
- Підтримка Windows і Linux
|
||||
- Постійно оновлюється
|
||||
- І не тільки ...
|
||||
|
||||
## Встановлення
|
||||
|
||||
Щоб встановити, виконайте наведені нижче кроки:
|
||||
|
||||
1. Завантажте останню версію Hydra зі сторінки [Releases](https://github.com/hydralauncher/hydra/releases/latest).
|
||||
- Завантажте лише .exe, якщо ви хочете встановити Hydra на Windows.
|
||||
- Завантажте .deb або .rpm або .zip, якщо ви хочете встановити Hydra на Linux. (залежить від вашого дистрибутива Linux)
|
||||
2. Запустіть завантажений файл.
|
||||
3. Насолоджуйтесь Гідрою!
|
||||
|
||||
## <a name="contributing"> Зробити свій внесок
|
||||
|
||||
### <a name="join-our-telegram"></a> Приєднуйтесь до нашого Telegram
|
||||
|
||||
Ми зосереджуємо наші дискусії на нашому каналі [Telegram](https://t.me/hydralauncher).
|
||||
|
||||
1. Приєднуйтесь до нашого канала
|
||||
2. Перейдіть на канал ролей і виберіть роль Співробітник
|
||||
3. Заходьте на dev-канал, спілкуйтеся з нами та діліться своїми ідеями.
|
||||
|
||||
### Форк і клонування вашого репозиторію
|
||||
|
||||
1. Зробіть форк репозиторію [(натисніть тут, щоб зробити форк зараз)](https://github.com/hydralauncher/hydra/fork)
|
||||
2. Клонуйте ваш форк-код `git clone https://github.com/your_username/hydra`
|
||||
3. Створіть новий бранч
|
||||
4. Зробіть пуш своїх комітів
|
||||
5. Надішліть новий Pull Request
|
||||
|
||||
### Як ви можете зробити свій внесок
|
||||
|
||||
- Переклад: Ми хочемо, щоб Hydra була доступна якомога більшій кількості людей. Не соромтеся допомагати перекладати на нові мови або оновлювати і покращувати ті, які вже доступні на Hydra.
|
||||
- Код: Hydra створена за допомогою Typescript, Electron і трохи Python. Якщо ви хочете зробити свій внесок, приєднуйтесь до нашого Telegram!
|
||||
|
||||
### Структура проекту
|
||||
|
||||
- torrent-client: Ми використовуємо libtorrent, бібліотеку Python, для керування завантаженнями з торрентів
|
||||
- src/renderer: інтерфейс програми
|
||||
- src/main: вся логіка тут.
|
||||
|
||||
## Зробити білд з вихідного коду
|
||||
|
||||
### Встановіть Node.js
|
||||
|
||||
Переконайтеся, що на вашому комп'ютері встановлено Node.js. Якщо ні, завантажте та встановіть його з [nodejs.org](https://nodejs.org/).
|
||||
|
||||
### Встановіть Yarn
|
||||
|
||||
Yarn - це менеджер пакетів для Node.js. Якщо ви ще не встановили Yarn, ви можете зробити це, дотримуючись інструкцій на сторінці [yarnpkg.com](https://classic.yarnpkg.com/lang/en/docs/install/).
|
||||
|
||||
### Встановіть Node залежності
|
||||
|
||||
Перейдіть до каталогу проекту і встановіть Node залежності за допомогою Yarn:
|
||||
|
||||
```bash
|
||||
cd hydra
|
||||
yarn
|
||||
```
|
||||
|
||||
### Встановіть Python 3.9
|
||||
|
||||
Переконайтеся, що на вашому комп'ютері встановлено Python 3.9. Ви можете завантажити та встановити його з [python.org](https://www.python.org/downloads/release/python-3913/).
|
||||
|
||||
### Встановіть Python залежності
|
||||
|
||||
Встановіть необхідні залежності Python за допомогою pip:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Змінні середовища
|
||||
|
||||
Вам знадобиться ключ API SteamGridDB, щоб отримати іконки ігор під час встановлення.
|
||||
Якщо ви хочете використовувати onlinefix як перепакувальник, вам потрібно додати свої облікові дані до .env
|
||||
|
||||
Отримавши його, ви можете скопіювати або перейменувати файл `.env.example` на `.env`і помістити його на`STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
|
||||
|
||||
## Запустіть
|
||||
|
||||
Після того, як ви все налаштували, ви можете запустити наступну команду, щоб запустити як процес Electron, так і клієнт bittorrent:
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## Зробіть білд
|
||||
|
||||
### Зробіть білд bittorrent client
|
||||
|
||||
Зробіть білд bittorrent client за допомогою цієї команди:
|
||||
|
||||
```bash
|
||||
python torrent-client/setup.py build
|
||||
```
|
||||
|
||||
### Зробіть білд Electron застосунку
|
||||
|
||||
Зробіть білд Electron застосунку за допомогою цієї команди:
|
||||
|
||||
На Windows:
|
||||
|
||||
```bash
|
||||
yarn build:win
|
||||
```
|
||||
|
||||
На Linux:
|
||||
|
||||
```bash
|
||||
yarn build:linux
|
||||
```
|
||||
|
||||
## Контриб'ютори
|
||||
|
||||
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
|
||||
</a>
|
||||
|
||||
## License
|
||||
|
||||
Hydra має ліцензію [MIT License](LICENSE).
|
||||
12
build/entitlements.mac.plist
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.cs.allow-jit</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
BIN
build/icon.icns
Normal file
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 188 KiB |
BIN
build/icons/512x512.png
Normal file
|
After Width: | Height: | Size: 188 KiB |
BIN
build/installerSidebar.bmp
Normal file
|
After Width: | Height: | Size: 151 KiB |
1
commitlint.config.js
Normal file
@@ -0,0 +1 @@
|
||||
export default { extends: ["@commitlint/config-conventional"] };
|
||||
|
Before Width: | Height: | Size: 390 KiB After Width: | Height: | Size: 830 KiB |
61
electron-builder.yml
Normal file
@@ -0,0 +1,61 @@
|
||||
appId: site.hydralauncher.hydra
|
||||
productName: Hydra
|
||||
directories:
|
||||
buildResources: build
|
||||
extraResources:
|
||||
- aria2
|
||||
- hydra-download-manager
|
||||
- seeds
|
||||
- from: node_modules/create-desktop-shortcuts/src/windows.vbs
|
||||
files:
|
||||
- "!**/.vscode/*"
|
||||
- "!src/*"
|
||||
- "!electron.vite.config.{js,ts,mjs,cjs}"
|
||||
- "!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}"
|
||||
- "!{.env,.env.*,.npmrc,pnpm-lock.yaml}"
|
||||
- "!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}"
|
||||
asarUnpack:
|
||||
- resources/**
|
||||
win:
|
||||
executableName: Hydra
|
||||
target:
|
||||
- nsis
|
||||
- portable
|
||||
nsis:
|
||||
artifactName: ${name}-${version}-setup.${ext}
|
||||
shortcutName: ${productName}
|
||||
uninstallDisplayName: ${productName}
|
||||
createDesktopShortcut: always
|
||||
oneClick: false
|
||||
allowToChangeInstallationDirectory: true
|
||||
portable:
|
||||
artifactName: ${name}-${version}-portable.${ext}
|
||||
mac:
|
||||
entitlementsInherit: build/entitlements.mac.plist
|
||||
extendInfo:
|
||||
- NSCameraUsageDescription: Application requests access to the device's camera.
|
||||
- NSMicrophoneUsageDescription: Application requests access to the device's microphone.
|
||||
- NSDocumentsFolderUsageDescription: Application requests access to the user's Documents folder.
|
||||
- NSDownloadsFolderUsageDescription: Application requests access to the user's Downloads folder.
|
||||
notarize: false
|
||||
dmg:
|
||||
artifactName: ${name}-${version}.${ext}
|
||||
linux:
|
||||
target:
|
||||
- AppImage
|
||||
- snap
|
||||
- deb
|
||||
- rpm
|
||||
maintainer: electronjs.org
|
||||
category: Game
|
||||
mimeTypes:
|
||||
- x-scheme-handler/hydralauncher
|
||||
appImage:
|
||||
artifactName: ${name}-${version}.${ext}
|
||||
npmRebuild: false
|
||||
publish:
|
||||
provider: github
|
||||
owner: hydralauncher
|
||||
repo: hydra
|
||||
electronDownload:
|
||||
mirror: https://npmmirror.com/mirrors/electron/
|
||||
57
electron.vite.config.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import { resolve } from "path";
|
||||
import {
|
||||
defineConfig,
|
||||
loadEnv,
|
||||
swcPlugin,
|
||||
externalizeDepsPlugin,
|
||||
} from "electron-vite";
|
||||
import react from "@vitejs/plugin-react";
|
||||
import { sentryVitePlugin } from "@sentry/vite-plugin";
|
||||
import { vanillaExtractPlugin } from "@vanilla-extract/vite-plugin";
|
||||
import svgr from "vite-plugin-svgr";
|
||||
|
||||
const sentryPlugin = sentryVitePlugin({
|
||||
authToken: process.env.SENTRY_AUTH_TOKEN,
|
||||
org: "hydra-launcher",
|
||||
project: "hydra-launcher",
|
||||
});
|
||||
|
||||
export default defineConfig(({ mode }) => {
|
||||
loadEnv(mode);
|
||||
|
||||
return {
|
||||
main: {
|
||||
build: {
|
||||
sourcemap: true,
|
||||
rollupOptions: {
|
||||
external: ["better-sqlite3"],
|
||||
},
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
"@main": resolve("src/main"),
|
||||
"@locales": resolve("src/locales"),
|
||||
"@resources": resolve("resources"),
|
||||
"@shared": resolve("src/shared"),
|
||||
},
|
||||
},
|
||||
plugins: [externalizeDepsPlugin(), swcPlugin(), sentryPlugin],
|
||||
},
|
||||
preload: {
|
||||
plugins: [externalizeDepsPlugin()],
|
||||
},
|
||||
renderer: {
|
||||
build: {
|
||||
sourcemap: true,
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
"@renderer": resolve("src/renderer/src"),
|
||||
"@locales": resolve("src/locales"),
|
||||
"@shared": resolve("src/shared"),
|
||||
},
|
||||
},
|
||||
plugins: [svgr(), react(), vanillaExtractPlugin(), sentryPlugin],
|
||||
},
|
||||
};
|
||||
});
|
||||
103
forge.config.ts
@@ -1,103 +0,0 @@
|
||||
import type { ForgeConfig } from "@electron-forge/shared-types";
|
||||
import { MakerSquirrel } from "@electron-forge/maker-squirrel";
|
||||
import { MakerZIP } from "@electron-forge/maker-zip";
|
||||
import { MakerDeb } from "@electron-forge/maker-deb";
|
||||
import { MakerRpm } from "@electron-forge/maker-rpm";
|
||||
import { AutoUnpackNativesPlugin } from "@electron-forge/plugin-auto-unpack-natives";
|
||||
import { WebpackPlugin } from "@electron-forge/plugin-webpack";
|
||||
import { FusesPlugin } from "@electron-forge/plugin-fuses";
|
||||
import { PublisherGithub } from "@electron-forge/publisher-github";
|
||||
import { FuseV1Options, FuseVersion } from "@electron/fuses";
|
||||
import { ElectronegativityPlugin } from "@electron-forge/plugin-electronegativity";
|
||||
|
||||
import { mainConfig } from "./webpack.main.config";
|
||||
import { rendererConfig } from "./webpack.renderer.config";
|
||||
|
||||
const linuxPkgConfig = {
|
||||
mimeType: ["x-scheme-handler/hydralauncher"],
|
||||
bin: "./Hydra",
|
||||
desktopTemplate: "./hydra-launcher.desktop",
|
||||
icon: "images/icon.png",
|
||||
genericName: "Games Launcher",
|
||||
name: "hydra-launcher",
|
||||
productName: "Hydra"
|
||||
};
|
||||
|
||||
const config: ForgeConfig = {
|
||||
packagerConfig: {
|
||||
asar: true,
|
||||
icon: "./images/icon.png",
|
||||
executableName: "Hydra",
|
||||
extraResource: [
|
||||
"./resources/hydra.db",
|
||||
"./resources/icon_tray.png",
|
||||
"./resources/dist",
|
||||
],
|
||||
protocols: [
|
||||
{
|
||||
name: "Hydra",
|
||||
schemes: ["hydralauncher"],
|
||||
},
|
||||
],
|
||||
win32metadata: {
|
||||
"requested-execution-level": "requireAdministrator",
|
||||
},
|
||||
},
|
||||
rebuildConfig: {},
|
||||
makers: [
|
||||
new MakerSquirrel({
|
||||
setupIcon: "./images/icon.ico",
|
||||
}),
|
||||
new MakerZIP({}, ["darwin", "linux"]),
|
||||
new MakerRpm({
|
||||
options: linuxPkgConfig
|
||||
}),
|
||||
new MakerDeb({
|
||||
options: linuxPkgConfig
|
||||
}),
|
||||
],
|
||||
publishers: [
|
||||
new PublisherGithub({
|
||||
repository: {
|
||||
owner: "hydralauncher",
|
||||
name: "hydra",
|
||||
},
|
||||
}),
|
||||
],
|
||||
plugins: [
|
||||
new AutoUnpackNativesPlugin({}),
|
||||
new WebpackPlugin({
|
||||
mainConfig,
|
||||
devContentSecurityPolicy: "connect-src 'self' * 'unsafe-eval'",
|
||||
renderer: {
|
||||
config: rendererConfig,
|
||||
entryPoints: [
|
||||
{
|
||||
html: "./src/index.html",
|
||||
js: "./src/renderer.ts",
|
||||
name: "main_window",
|
||||
preload: {
|
||||
js: "./src/preload.ts",
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
}),
|
||||
// Fuses are used to enable/disable various Electron functionality
|
||||
// at package time, before code signing the application
|
||||
new FusesPlugin({
|
||||
version: FuseVersion.V1,
|
||||
[FuseV1Options.RunAsNode]: false,
|
||||
[FuseV1Options.EnableCookieEncryption]: true,
|
||||
[FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
|
||||
[FuseV1Options.EnableNodeCliInspectArguments]: false,
|
||||
[FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
|
||||
[FuseV1Options.OnlyLoadAppFromAsar]: true,
|
||||
}),
|
||||
new ElectronegativityPlugin({
|
||||
isSarif: true,
|
||||
}),
|
||||
],
|
||||
};
|
||||
|
||||
export default config;
|
||||
@@ -1,11 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=Hydra
|
||||
Comment=No bullshit. Just play.
|
||||
GenericName=Games Launcher
|
||||
Exec=hydra-launcher %U
|
||||
Icon=hydra-launcher
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
Categories=GNOME;GTK;Utility;
|
||||
MimeType=x-scheme-handler/hydralauncher;
|
||||
StartupWMClass=Hydra
|
||||
178
package.json
@@ -1,108 +1,114 @@
|
||||
{
|
||||
"name": "hydra",
|
||||
"productName": "Hydra",
|
||||
"version": "1.1.0",
|
||||
"description": "No bullshit. Just play.",
|
||||
"main": ".webpack/main",
|
||||
"name": "hydralauncher",
|
||||
"version": "2.0.3",
|
||||
"description": "Hydra",
|
||||
"main": "./out/main/index.js",
|
||||
"author": "Los Broxas",
|
||||
"repository": {
|
||||
"url": "https://github.com/hydralauncher/hydra"
|
||||
"type": "git",
|
||||
"url": "https://github.com/hydralauncher/hydra.git"
|
||||
},
|
||||
"author": {
|
||||
"name": "Hydra",
|
||||
"email": "hydra@hydralauncher.site"
|
||||
"type": "module",
|
||||
"engines": {
|
||||
"npm": "please-use-yarn",
|
||||
"yarn": ">= 1.19.1"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "electron-forge start",
|
||||
"package": "electron-forge package",
|
||||
"make": "electron-forge make",
|
||||
"publish": "electron-forge publish",
|
||||
"lint": "eslint .",
|
||||
"format": "prettier . --write"
|
||||
"format": "prettier --write .",
|
||||
"format-check": "prettier --check .",
|
||||
"lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix",
|
||||
"typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false",
|
||||
"typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false",
|
||||
"typecheck": "npm run typecheck:node && npm run typecheck:web",
|
||||
"start": "electron-vite preview",
|
||||
"dev": "electron-vite dev",
|
||||
"build": "npm run typecheck && electron-vite build",
|
||||
"postinstall": "electron-builder install-app-deps && node ./postinstall.cjs",
|
||||
"build:unpack": "npm run build && electron-builder --dir",
|
||||
"build:win": "electron-vite build && electron-builder --win",
|
||||
"build:mac": "electron-vite build && electron-builder --mac",
|
||||
"build:linux": "electron-vite build && electron-builder --linux",
|
||||
"prepare": "husky",
|
||||
"typeorm:migration-create": "yarn typeorm migration:create"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@electron-forge/cli": "^7.3.0",
|
||||
"@electron-forge/maker-deb": "^7.3.0",
|
||||
"@electron-forge/maker-rpm": "^7.3.0",
|
||||
"@electron-forge/maker-squirrel": "^7.3.0",
|
||||
"@electron-forge/maker-zip": "^7.3.0",
|
||||
"@electron-forge/plugin-auto-unpack-natives": "^7.3.0",
|
||||
"@electron-forge/plugin-electronegativity": "^7.3.0",
|
||||
"@electron-forge/plugin-fuses": "^7.3.0",
|
||||
"@electron-forge/plugin-webpack": "^7.3.0",
|
||||
"@electron-forge/publisher-github": "^7.3.0",
|
||||
"@electron/fuses": "^1.7.0",
|
||||
"@sentry/webpack-plugin": "^2.16.1",
|
||||
"@svgr/webpack": "^8.1.0",
|
||||
"@types/color": "^3.0.6",
|
||||
"@types/dotenv-webpack": "^7.0.7",
|
||||
"@types/jsdom": "^21.1.6",
|
||||
"@types/lodash": "^4.17.0",
|
||||
"@types/react": "^18.2.66",
|
||||
"@types/react-dom": "^18.2.22",
|
||||
"@types/uuid": "^9.0.8",
|
||||
"@types/webtorrent": "^0.109.8",
|
||||
"@types/windows-1251": "^0.1.22",
|
||||
"@typescript-eslint/eslint-plugin": "^7.3.1",
|
||||
"@typescript-eslint/parser": "^7.3.1",
|
||||
"@vanilla-extract/webpack-plugin": "^2.3.7",
|
||||
"@vercel/webpack-asset-relocator-loader": "1.7.3",
|
||||
"css-loader": "^6.0.0",
|
||||
"dotenv-webpack": "^8.1.0",
|
||||
"electron": "29.1.4",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-react": "^7.34.1",
|
||||
"eslint-plugin-react-hooks": "^4.6.0",
|
||||
"fork-ts-checker-webpack-plugin": "^7.2.13",
|
||||
"node-loader": "^2.0.0",
|
||||
"prettier": "^3.2.5",
|
||||
"style-loader": "^3.0.0",
|
||||
"ts-loader": "^9.2.2",
|
||||
"ts-node": "^10.0.0",
|
||||
"tsconfig-paths-webpack-plugin": "^4.1.0",
|
||||
"typescript": "^5.4.3"
|
||||
},
|
||||
"keywords": [],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@fontsource/fira-mono": "^5.0.12",
|
||||
"@fontsource/fira-sans": "^5.0.19",
|
||||
"@primer/octicons-react": "^19.8.0",
|
||||
"@reduxjs/toolkit": "^2.2.2",
|
||||
"@sentry/electron": "^4.22.0",
|
||||
"@sentry/react": "^7.110.1",
|
||||
"@vanilla-extract/css": "^1.14.1",
|
||||
"@electron-toolkit/preload": "^3.0.0",
|
||||
"@electron-toolkit/utils": "^3.0.0",
|
||||
"@fontsource/fira-mono": "^5.0.13",
|
||||
"@fontsource/fira-sans": "^5.0.20",
|
||||
"@primer/octicons-react": "^19.9.0",
|
||||
"@reduxjs/toolkit": "^2.2.3",
|
||||
"@sentry/electron": "^5.1.0",
|
||||
"@vanilla-extract/css": "^1.14.2",
|
||||
"@vanilla-extract/recipes": "^0.5.2",
|
||||
"aria2": "^4.1.2",
|
||||
"auto-launch": "^5.0.6",
|
||||
"axios": "^1.6.8",
|
||||
"better-sqlite3": "^9.5.0",
|
||||
"check-disk-space": "^3.4.0",
|
||||
"classnames": "^2.5.1",
|
||||
"color": "^4.2.3",
|
||||
"color.js": "^1.2.0",
|
||||
"date-fns": "^3.5.0",
|
||||
"electron-squirrel-startup": "^1.0.0",
|
||||
"create-desktop-shortcuts": "^1.11.0",
|
||||
"date-fns": "^3.6.0",
|
||||
"electron-log": "^5.1.4",
|
||||
"electron-updater": "^6.1.8",
|
||||
"fetch-cookie": "^3.0.1",
|
||||
"file-type": "^19.0.0",
|
||||
"flexsearch": "^0.7.43",
|
||||
"got-scraping": "^4.0.5",
|
||||
"i18next": "^23.10.1",
|
||||
"i18next-browser-languagedetector": "^7.2.0",
|
||||
"i18next": "^23.11.2",
|
||||
"i18next-browser-languagedetector": "^7.2.1",
|
||||
"icojs": "^0.19.3",
|
||||
"iso-639-1": "3.1.2",
|
||||
"jsdom": "^24.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"lodash-es": "^4.17.21",
|
||||
"lottie-react": "^2.4.0",
|
||||
"parse-torrent": "9.1.5",
|
||||
"ps-list": "^8.1.1",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"parse-torrent": "^11.0.16",
|
||||
"piscina": "^4.5.1",
|
||||
"react-i18next": "^14.1.0",
|
||||
"react-loading-skeleton": "^3.4.0",
|
||||
"react-redux": "^9.1.0",
|
||||
"react-redux": "^9.1.1",
|
||||
"react-router-dom": "^6.22.3",
|
||||
"sqlite3": "^5.1.7",
|
||||
"tasklist": "^5.0.0",
|
||||
"tough-cookie": "^4.1.3",
|
||||
"sudo-prompt": "^9.2.1",
|
||||
"typeorm": "^0.3.20",
|
||||
"update-electron-app": "^3.0.0",
|
||||
"uuid": "^9.0.1",
|
||||
"windows-1251": "^3.0.4",
|
||||
"winston": "^3.12.0",
|
||||
"yaml": "^2.4.1"
|
||||
"user-agents": "^1.1.193",
|
||||
"yaml": "^2.4.1",
|
||||
"zod": "^3.23.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "^19.3.0",
|
||||
"@commitlint/config-conventional": "^19.2.2",
|
||||
"@electron-toolkit/eslint-config-prettier": "^2.0.0",
|
||||
"@electron-toolkit/eslint-config-ts": "^1.0.1",
|
||||
"@electron-toolkit/tsconfig": "^1.0.1",
|
||||
"@sentry/vite-plugin": "^2.20.1",
|
||||
"@swc/core": "^1.4.16",
|
||||
"@types/auto-launch": "^5.0.5",
|
||||
"@types/color": "^3.0.6",
|
||||
"@types/jsdom": "^21.1.6",
|
||||
"@types/jsonwebtoken": "^9.0.6",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/node": "^20.12.7",
|
||||
"@types/parse-torrent": "^5.8.7",
|
||||
"@types/react": "^18.2.48",
|
||||
"@types/react-dom": "^18.2.18",
|
||||
"@types/user-agents": "^1.0.4",
|
||||
"@vanilla-extract/vite-plugin": "^4.0.7",
|
||||
"@vitejs/plugin-react": "^4.2.1",
|
||||
"electron": "^30.0.9",
|
||||
"electron-builder": "^24.9.1",
|
||||
"electron-vite": "^2.0.0",
|
||||
"eslint": "^8.56.0",
|
||||
"eslint-plugin-jsx-a11y": "^6.8.0",
|
||||
"eslint-plugin-react": "^7.33.2",
|
||||
"eslint-plugin-react-hooks": "^4.6.0",
|
||||
"husky": "^9.0.11",
|
||||
"prettier": "^3.2.4",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"typescript": "^5.3.3",
|
||||
"vite": "^5.0.12",
|
||||
"vite-plugin-svgr": "^4.2.0"
|
||||
}
|
||||
}
|
||||
|
||||
50
postinstall.cjs
Normal file
@@ -0,0 +1,50 @@
|
||||
const { default: axios } = require("axios");
|
||||
const util = require("node:util");
|
||||
const fs = require("node:fs");
|
||||
|
||||
const exec = util.promisify(require("node:child_process").exec);
|
||||
|
||||
const downloadAria2 = async () => {
|
||||
if (fs.existsSync("aria2")) {
|
||||
console.log("Aria2 already exists, skipping download...");
|
||||
return;
|
||||
}
|
||||
|
||||
const file =
|
||||
process.platform === "win32"
|
||||
? "aria2-1.37.0-win-64bit-build1.zip"
|
||||
: "aria2-1.37.0-1-x86_64.pkg.tar.zst";
|
||||
|
||||
const downloadUrl =
|
||||
process.platform === "win32"
|
||||
? `https://github.com/aria2/aria2/releases/download/release-1.37.0/${file}`
|
||||
: "https://archlinux.org/packages/extra/x86_64/aria2/download/";
|
||||
|
||||
console.log(`Downloading ${file}...`);
|
||||
|
||||
const response = await axios.get(downloadUrl, { responseType: "stream" });
|
||||
|
||||
const stream = response.data.pipe(fs.createWriteStream(file));
|
||||
|
||||
stream.on("finish", async () => {
|
||||
console.log(`Downloaded ${file}, extracting...`);
|
||||
|
||||
if (process.platform === "win32") {
|
||||
await exec(`npx extract-zip ${file}`);
|
||||
console.log("Extracted. Renaming folder...");
|
||||
|
||||
fs.renameSync(file.replace(".zip", ""), "aria2");
|
||||
} else {
|
||||
await exec(`tar --zstd -xvf ${file} usr/bin/aria2c`);
|
||||
console.log("Extracted. Copying binary file...");
|
||||
fs.mkdirSync("aria2");
|
||||
fs.copyFileSync("usr/bin/aria2c", "aria2/aria2c");
|
||||
fs.rmSync("usr", { recursive: true });
|
||||
}
|
||||
|
||||
console.log(`Extracted ${file}, removing compressed downloaded file...`);
|
||||
fs.rmSync(file);
|
||||
});
|
||||
};
|
||||
|
||||
downloadAria2();
|
||||
@@ -3,3 +3,4 @@ cx_Freeze
|
||||
cx_Logging; sys_platform == 'win32'
|
||||
lief; sys_platform == 'win32'
|
||||
pywin32; sys_platform == 'win32'
|
||||
psutil
|
||||
|
||||
BIN
resources/icon.png
Normal file
|
After Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
BIN
resources/tray-icon.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
1
seeds/steam-games.json
Normal file
13
src/declaration.d.ts
vendored
@@ -1,13 +0,0 @@
|
||||
declare module "tasklist" {
|
||||
interface Task {
|
||||
imageName: string;
|
||||
pid: number;
|
||||
sessionName: string;
|
||||
sessionNumber: number;
|
||||
memUsage: number;
|
||||
}
|
||||
|
||||
function tasklist(): Promise<Task[]>;
|
||||
|
||||
export { tasklist };
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Hydra</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
</body>
|
||||
</html>
|
||||
110
src/index.ts
@@ -1,110 +0,0 @@
|
||||
import { app, BrowserWindow } from "electron";
|
||||
import { init } from "@sentry/electron/main";
|
||||
import i18n from "i18next";
|
||||
import path from "node:path";
|
||||
import { resolveDatabaseUpdates, WindowManager } from "@main/services";
|
||||
import { updateElectronApp } from "update-electron-app";
|
||||
import { dataSource } from "@main/data-source";
|
||||
import * as resources from "@locales";
|
||||
import { userPreferencesRepository } from "@main/repository";
|
||||
|
||||
const gotTheLock = app.requestSingleInstanceLock();
|
||||
if (!gotTheLock) app.quit();
|
||||
|
||||
// Handle creating/removing shortcuts on Windows when installing/uninstalling.
|
||||
if (require("electron-squirrel-startup")) app.quit();
|
||||
|
||||
if (process.platform !== "darwin") {
|
||||
updateElectronApp();
|
||||
}
|
||||
|
||||
if (process.env.SENTRY_DSN) {
|
||||
init({
|
||||
dsn: process.env.SENTRY_DSN,
|
||||
beforeSend: async (event) => {
|
||||
const userPreferences = await userPreferencesRepository.findOne({
|
||||
where: { id: 1 },
|
||||
});
|
||||
|
||||
if (userPreferences?.telemetryEnabled) return event;
|
||||
return null;
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
i18n.init({
|
||||
resources,
|
||||
lng: "en",
|
||||
fallbackLng: "en",
|
||||
interpolation: {
|
||||
escapeValue: false,
|
||||
},
|
||||
});
|
||||
|
||||
const PROTOCOL = "hydralauncher";
|
||||
|
||||
if (process.defaultApp) {
|
||||
if (process.argv.length >= 2) {
|
||||
app.setAsDefaultProtocolClient(PROTOCOL, process.execPath, [
|
||||
path.resolve(process.argv[1]),
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
app.setAsDefaultProtocolClient(PROTOCOL);
|
||||
}
|
||||
|
||||
// This method will be called when Electron has finished
|
||||
// initialization and is ready to create browser windows.
|
||||
// Some APIs can only be used after this event occurs.
|
||||
app.on("ready", () => {
|
||||
dataSource.initialize().then(async () => {
|
||||
await resolveDatabaseUpdates();
|
||||
|
||||
await import("./main");
|
||||
|
||||
const userPreferences = await userPreferencesRepository.findOne({
|
||||
where: { id: 1 },
|
||||
});
|
||||
|
||||
WindowManager.createMainWindow();
|
||||
WindowManager.createSystemTray(userPreferences?.language || "en");
|
||||
});
|
||||
});
|
||||
|
||||
app.on("second-instance", (_event, commandLine) => {
|
||||
// Someone tried to run a second instance, we should focus our window.
|
||||
if (WindowManager.mainWindow) {
|
||||
if (WindowManager.mainWindow.isMinimized())
|
||||
WindowManager.mainWindow.restore();
|
||||
|
||||
WindowManager.mainWindow.focus();
|
||||
} else {
|
||||
WindowManager.createMainWindow();
|
||||
}
|
||||
|
||||
const [, path] = commandLine.pop().split("://");
|
||||
if (path) WindowManager.redirect(path);
|
||||
});
|
||||
|
||||
app.on("open-url", (_event, url) => {
|
||||
const [, path] = url.split("://");
|
||||
WindowManager.redirect(path);
|
||||
});
|
||||
|
||||
// Quit when all windows are closed, except on macOS. There, it's common
|
||||
// for applications and their menu bar to stay active until the user quits
|
||||
// explicitly with Cmd + Q.
|
||||
app.on("window-all-closed", () => {
|
||||
WindowManager.mainWindow = null;
|
||||
});
|
||||
|
||||
app.on("activate", () => {
|
||||
// On OS X it's common to re-create a window in the app when the
|
||||
// dock icon is clicked and there are no other windows open.
|
||||
if (BrowserWindow.getAllWindows().length === 0) {
|
||||
WindowManager.createMainWindow();
|
||||
}
|
||||
});
|
||||
|
||||
// In this file you can include the rest of your app's specific main process
|
||||
// code. You can also put them in separate files and import them here.
|
||||
146
src/locales/ar/translation.json
Normal file
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "مميّز",
|
||||
"trending": "شائع",
|
||||
"surprise_me": "فاجئني",
|
||||
"no_results": "لم يتم العثور على نتائج"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "قائمة الألعاب",
|
||||
"downloads": "التحميلات",
|
||||
"settings": "إعدادات",
|
||||
"my_library": "مكتبتي",
|
||||
"downloading_metadata": "{{title}} (جارٍ تنزيل البيانات الوصفية...)",
|
||||
"paused": "{{title}} (متوقف)",
|
||||
"downloading": "{{title}} ({{percentage}} - جارٍ التنزيل...)",
|
||||
"filter": "بحث في المكتبة",
|
||||
"home": "الرئيسية"
|
||||
},
|
||||
"header": {
|
||||
"search": "ابحث عن الألعاب",
|
||||
"home": "الرئيسية",
|
||||
"catalogue": "قائمة الألعاب",
|
||||
"downloads": "التحميلات",
|
||||
"search_results": "نتائج البحث",
|
||||
"settings": "إعدادات"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "لا يوجد تنزيلات جارية",
|
||||
"downloading_metadata": "جارٍ تنزيل بيانات وصف {{title}}",
|
||||
"downloading": "جارٍ تنزيل {{title}}… ({{percentage}} مكتملة) - الانتهاء {{eta}} - {{speed}}"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "الصفحة التالية",
|
||||
"previous_page": "الصفحة السابقة"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "افتح خيارات التنزيل",
|
||||
"download_options_zero": "لا يوجد خيار تنزيل",
|
||||
"download_options_one": "{{count}} خيار تنزيل",
|
||||
"download_options_other": "{{count}} خيار تنزيل",
|
||||
"updated_at": "تم التحديث {{updated_at}}",
|
||||
"install": "تثبيت",
|
||||
"resume": "استئناف",
|
||||
"pause": "إيقاف",
|
||||
"cancel": "إلغاء",
|
||||
"remove": "إزالة",
|
||||
"space_left_on_disk": "{{space}} متبقية على القرص",
|
||||
"eta": "الوقت المتبقي {{eta}}",
|
||||
"downloading_metadata": "جاري تنزيل البيانات الوصفية...",
|
||||
"filter": "تصفية حزم إعادة التجميع",
|
||||
"requirements": "متطلبات النظام",
|
||||
"minimum": "الحد الأدنى",
|
||||
"recommended": "موصى به",
|
||||
"release_date": "تم الإصدار في {{date}}",
|
||||
"publisher": "نشر بواسطة {{publisher}}",
|
||||
"hours": "ساعات",
|
||||
"minutes": "دقائق",
|
||||
"amount_hours": "{{amount}} ساعات",
|
||||
"amount_minutes": "{{amount}} دقائق",
|
||||
"accuracy": "دقة {{accuracy}}%",
|
||||
"add_to_library": "إضافة إلى المكتبة",
|
||||
"remove_from_library": "إزالة من المكتبة",
|
||||
"no_downloads": "لا توجد تنزيلات متاحة",
|
||||
"play_time": "تم اللعب لمدة {{amount}}",
|
||||
"last_time_played": "آخر مرة لعبت {{period}}",
|
||||
"not_played_yet": "لم تلعب {{title}} بعد",
|
||||
"next_suggestion": "الاقتراح التالي",
|
||||
"play": "لعب",
|
||||
"deleting": "جاري حذف المثبت...",
|
||||
"close": "إغلاق",
|
||||
"playing_now": "قيد التشغيل الآن",
|
||||
"change": "تغيير",
|
||||
"repacks_modal_description": "اختر الحزمة التي تريد تنزيلها",
|
||||
"select_folder_hint": "لتغيير المجلد الافتراضي، انتقل إلى الإعدادات",
|
||||
"download_now": "تنزيل الآن",
|
||||
"no_shop_details": "لم يتم استرداد تفاصيل المتجر.",
|
||||
"download_options": "خيارات التنزيل",
|
||||
"download_path": "مسار التنزيل",
|
||||
"previous_screenshot": "لقطة الشاشة السابقة",
|
||||
"next_screenshot": "لقطة الشاشة التالية",
|
||||
"screenshot": "لقطة شاشة {{number}}",
|
||||
"open_screenshot": "افتح لقطة الشاشة {{number}}"
|
||||
},
|
||||
"activation": {
|
||||
"title": "تفعيل هايدرا",
|
||||
"installation_id": "معرف التثبيت:",
|
||||
"enter_activation_code": "أدخل رمز التفعيل الخاص بك",
|
||||
"message": "إذا كنت لا تعرف أين تسأل عن هذا ، فلا يجب أن يكون لديك هذا.",
|
||||
"activate": "تفعيل",
|
||||
"loading": "جار التحميل…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "استئناف",
|
||||
"pause": "إيقاف مؤقت",
|
||||
"eta": "الوقت المتبقي {{eta}}",
|
||||
"paused": "متوقفة مؤقتًا",
|
||||
"verifying": "جار التحقق…",
|
||||
"completed": "اكتمل",
|
||||
"cancel": "إلغاء",
|
||||
"filter": "تصفية الألعاب التي تم تنزيلها",
|
||||
"remove": "إزالة",
|
||||
"downloading_metadata": "جار تنزيل البيانات الوصفية…",
|
||||
"deleting": "جار حذف المثبت…",
|
||||
"delete": "إزالة المثبت",
|
||||
"delete_modal_title": "هل أنت متأكد؟",
|
||||
"delete_modal_description": "سيؤدي هذا إلى إزالة جميع ملفات التثبيت من جهاز الكمبيوتر الخاص بك",
|
||||
"install": "تثبيت"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "مسار التنزيلات",
|
||||
"change": "تحديث",
|
||||
"notifications": "الإشعارات",
|
||||
"enable_download_notifications": "عند اكتمال التنزيل",
|
||||
"enable_repack_list_notifications": "عند إضافة حزمة جديدة",
|
||||
"real_debrid_api_token_label": "رمز واجهة برمجة التطبيقات (API) لـReal-Debrid ",
|
||||
"quit_app_instead_hiding": "إنهاء هايدرا بدلاً من التصغير الى شريط الحالة",
|
||||
"launch_with_system": "تشغيل هايدرا عند بدء تشغيل النظام",
|
||||
"general": "عام",
|
||||
"behavior": "السلوك",
|
||||
"enable_real_debrid": "تفعيل Real-Debrid ",
|
||||
"real_debrid_api_token_hint": "يمكنك الحصول على مفتاح API الخاص بك هنا",
|
||||
"save_changes": "حفظ التغييرات"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "تم التحميل",
|
||||
"game_ready_to_install": "{{title}} جاهزة للتثبيت",
|
||||
"repack_list_updated": "قائمة التجميعات المحدثة",
|
||||
"repack_count_one": "{{count}} حزمة مضافة",
|
||||
"repack_count_other": "{{count}} حزم مُضافة"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "فتح هايدرا",
|
||||
"quit": "خروج"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "لا توجد تنزيلات متاحة"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "البرامج غير مثبتة",
|
||||
"description": "لم يتم العثور على ملفات Wine أو Lutris التنفيذية على نظامك",
|
||||
"instructions": "تحقق من الطريقة الصحيحة لتثبيت أي منها على توزيعة Linux الخاصة بك حتى تعمل اللعبة بشكل طبيعي"
|
||||
},
|
||||
"modal": {
|
||||
"close": "زر إغلاق"
|
||||
}
|
||||
}
|
||||
134
src/locales/be/translation.json
Normal file
@@ -0,0 +1,134 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "Рэкамэндаванае",
|
||||
"trending": "Актуальнае",
|
||||
"surprise_me": "Здзіві мяне",
|
||||
"no_results": "Няма вынікаў"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Каталог",
|
||||
"downloads": "Сцягванні",
|
||||
"settings": "Налады",
|
||||
"my_library": "Мая бібліятэка",
|
||||
"downloading_metadata": "{{title}} (Сцягванне мэтаданых…)",
|
||||
"paused": "{{title}} (Спынена)",
|
||||
"downloading": "{{title}} ({{percentage}} - Сцягванне…)",
|
||||
"filter": "Фільтар бібліятэкі",
|
||||
"home": "Галоўная"
|
||||
},
|
||||
"header": {
|
||||
"search": "Пошук",
|
||||
"home": "Галоўная",
|
||||
"catalogue": "Каталог",
|
||||
"downloads": "Сцягванні",
|
||||
"search_results": "Вынікі пошуку",
|
||||
"settings": "Налады"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Няма актыўных сцягванняў",
|
||||
"downloading_metadata": "Сцягванне мэтаданых {{title}}…",
|
||||
"downloading": "Сцягванне {{title}}… ({{percentage}} скончана) - Канчатак {{eta}} - {{speed}}"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Наступная старонка",
|
||||
"previous_page": "Папярэдняя старонка"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Адкрыць варыянты сцягвання",
|
||||
"download_options_zero": "Няма варыянтаў сцягвання",
|
||||
"download_options_one": "{{count}} варыянт сцягвання",
|
||||
"download_options_other": "{{count}} варыянтаў сцягвання",
|
||||
"updated_at": "Абноўлена {{updated_at}}",
|
||||
"install": "Усталяваць",
|
||||
"resume": "Працягнуць",
|
||||
"pause": "Спыніць",
|
||||
"cancel": "Скасаваць",
|
||||
"remove": "Выдаліць",
|
||||
"space_left_on_disk": "{{space}} засталося на дыску",
|
||||
"eta": "Канчатак {{eta}}",
|
||||
"downloading_metadata": "Сцягванне мэтаданых…",
|
||||
"filter": "Фільтар рэпакаў",
|
||||
"requirements": "Сістэмныя патрэбаванни",
|
||||
"minimum": "Мінімальныя",
|
||||
"recommended": "Рэкамендуемыя",
|
||||
"release_date": "Выпушчана {{date}}",
|
||||
"publisher": "Выдана {{publisher}}",
|
||||
"hours": "гадзін",
|
||||
"minutes": "хвілін",
|
||||
"amount_hours": "{{amount}} гадзін",
|
||||
"amount_minutes": "{{amount}} хвілін",
|
||||
"accuracy": "{{accuracy}}% дакладнасць",
|
||||
"add_to_library": "Дадаць да бібліятэкі",
|
||||
"remove_from_library": "Выдаліць з бібліятэкі",
|
||||
"no_downloads": "Няма даступных сцягванняў",
|
||||
"play_time": "Гулялі {{amount}}",
|
||||
"last_time_played": "Апошні раз гулялі {{period}}",
|
||||
"not_played_yet": "Вы яшчэ не гулялі ў {{title}}",
|
||||
"next_suggestion": "Наступная прапанова",
|
||||
"play": "Гуляць",
|
||||
"deleting": "Выдаленне ўсталёўшчыка…",
|
||||
"close": "Закрыць",
|
||||
"playing_now": "Зараз гуляе",
|
||||
"change": "Змяніць",
|
||||
"repacks_modal_description": "Абярыце рэпак, які хочаце сцягнуць",
|
||||
"select_folder_hint": "Каб змяніць папку па змоўчанні, адкрыйце",
|
||||
"download_now": "Сцягнуць зараз"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Актываваць Hydra",
|
||||
"installation_id": "ID усталёўкі:",
|
||||
"enter_activation_code": "Увядзіце ваш код актывацыі",
|
||||
"message": "Калі вы ня ведаеце, дзе яго атрымаць, то не мусіць гэтага рабіць.",
|
||||
"activate": "Актываваць",
|
||||
"loading": "Загрузка…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Працягнуць",
|
||||
"pause": "Спыніць",
|
||||
"eta": "Канчатак {{eta}}",
|
||||
"paused": "Спынена",
|
||||
"verifying": "Праверка…",
|
||||
"completed": "Скончана",
|
||||
"cancel": "Скасаваць",
|
||||
"filter": "Фільтар сцягнутых гульняў",
|
||||
"remove": "Выдаліць",
|
||||
"downloading_metadata": "Сцягванне мэтаданых…",
|
||||
"deleting": "Выдаленне ўсталёўшчыка…",
|
||||
"delete": "Выдаліць усталёўшчык",
|
||||
"delete_modal_title": "Вы ўпэўнены?",
|
||||
"delete_modal_description": "Гэта выдаліць усе файлы ўсталёвак з вашага кампутара",
|
||||
"install": "Усталяваць"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Шлях сцягвання",
|
||||
"change": "Змяніць шлях",
|
||||
"notifications": "Апавяшчэнні",
|
||||
"enable_download_notifications": "Па сканчэнні сцягванні",
|
||||
"enable_repack_list_notifications": "Пры даданні новага рэпака",
|
||||
"behavior": "Паводзіны",
|
||||
"quit_app_instead_hiding": "Закрываць праграму замест таго, каб хаваць яе ў трэй",
|
||||
"launch_with_system": "Запускаць праграму пры запуску сыстэмы"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Сцягванне скончана",
|
||||
"game_ready_to_install": "{{title}} гатова да ўсталёўкі",
|
||||
"repack_list_updated": "Спіс рэпакаў абноўлены",
|
||||
"repack_count_one": "{{count}} рэпак дададзены",
|
||||
"repack_count_other": "{{count}} рэпакаў дададзена"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Адкрыць Hydra",
|
||||
"quit": "Выйсьці"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Няма даступных сцягванняў"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Праграмы не ўсталяваныя",
|
||||
"description": "Выканальныя файлы Wine ці Lutris ня знойдзеныя ў вашай сістэме",
|
||||
"instructions": "Даведайцеся, як правільна ўсталяваць любы з іх на вашым дыстрыбутыве Linux, каб гульня магла працаваць нармальна"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Кнопка закрыцця"
|
||||
}
|
||||
}
|
||||
148
src/locales/ca/translation.json
Normal file
@@ -0,0 +1,148 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "Destacats",
|
||||
"trending": "Populars",
|
||||
"surprise_me": "Sorprèn-me",
|
||||
"no_results": "No s'ha trobat res"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Catàleg",
|
||||
"downloads": "Baixades",
|
||||
"settings": "Configuració",
|
||||
"my_library": "Biblioteca",
|
||||
"downloading_metadata": "{{title}} (S'estan baixant les metadades…)",
|
||||
"paused": "{{title}} (Pausat)",
|
||||
"downloading": "{{title}} ({{percentage}} - S'està baixant…)",
|
||||
"filter": "Filtra la biblioteca",
|
||||
"home": "Inici"
|
||||
},
|
||||
"header": {
|
||||
"search": "Cerca jocs",
|
||||
"home": "Inici",
|
||||
"catalogue": "Catàleg",
|
||||
"downloads": "Baixades",
|
||||
"search_results": "Resultats de la cerca",
|
||||
"settings": "Configuració",
|
||||
"version_available_install": "Hi ha disponible la versió {{version}}. Feu clic aquí per a reiniciar i instal·lar-la.",
|
||||
"version_available_download": "Hi ha disponible la versió {{version}}. Feu clic aquí per a baixar-la."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Cap baixada en curs",
|
||||
"downloading_metadata": "S'estan baixant les metadades de: {{title}}…",
|
||||
"downloading": "S'està baixant: {{title}}… ({{percentage}} complet) - Finalització: {{eta}} - {{speed}}"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Pàgina següent",
|
||||
"previous_page": "Pàgina anterior"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Obre les opcions de baixada",
|
||||
"download_options_zero": "No hi ha opcions de baixada",
|
||||
"download_options_one": "{{count}} opció de baixada",
|
||||
"download_options_other": "{{count}} opcions de baixada",
|
||||
"updated_at": "Actualitzat: {{updated_at}}",
|
||||
"install": "Instal·la",
|
||||
"resume": "Reprèn",
|
||||
"pause": "Pausa",
|
||||
"cancel": "Cancel·la",
|
||||
"remove": "Elimina",
|
||||
"space_left_on_disk": "{{space}} lliures al disc",
|
||||
"eta": "Finalització: {{eta}}",
|
||||
"downloading_metadata": "S'estan baixant les metadades…",
|
||||
"filter": "Filtra els reempaquetats",
|
||||
"requirements": "Requisits del sistema",
|
||||
"minimum": "Mínims",
|
||||
"recommended": "Recomanats",
|
||||
"release_date": "Publicat el {{date}}",
|
||||
"publisher": "Publicat per {{publisher}}",
|
||||
"hours": "hores",
|
||||
"minutes": "minuts",
|
||||
"amount_hours": "{{amount}} hores",
|
||||
"amount_minutes": "{{amount}} minuts",
|
||||
"accuracy": "{{accuracy}}% de precisió",
|
||||
"add_to_library": "Afegeix a la biblioteca",
|
||||
"remove_from_library": "Elimina de la biblioteca",
|
||||
"no_downloads": "No hi ha baixades disponibles",
|
||||
"play_time": "Jugat durant {{amount}}",
|
||||
"last_time_played": "Última partida: {{period}}",
|
||||
"not_played_yet": "Encara no has jugat al {{title}}",
|
||||
"next_suggestion": "Suggeriment següent",
|
||||
"play": "Inicia",
|
||||
"deleting": "S'està eliminant l'instal·lador…",
|
||||
"close": "Tanca",
|
||||
"playing_now": "S'està jugant",
|
||||
"change": "Canvia",
|
||||
"repacks_modal_description": "Tria quin reempaquetat vols baixar",
|
||||
"select_folder_hint": "Per a canviar la carpeta predefinida, vés a la <0>Configuració</0>",
|
||||
"download_now": "Baixa ara",
|
||||
"no_shop_details": "No s'han pogut recuperar els detalls de la tenda.",
|
||||
"download_options": "Opcions de baixada",
|
||||
"download_path": "Ruta de baixada",
|
||||
"previous_screenshot": "Captura anterior",
|
||||
"next_screenshot": "Captura següent",
|
||||
"screenshot": "Captura {{number}}",
|
||||
"open_screenshot": "Obre la captura {{number}}"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Activa l'Hydra",
|
||||
"installation_id": "ID d'instal·lació:",
|
||||
"enter_activation_code": "Introdueix el codi d'activació",
|
||||
"message": "Si no saps on demanar-ho, no ho hauries de tenir.",
|
||||
"activate": "Activa",
|
||||
"loading": "S'està carregant…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Reprèn",
|
||||
"pause": "Pausa",
|
||||
"eta": "Finalització {{eta}}",
|
||||
"paused": "Pausada",
|
||||
"verifying": "S'està verificant…",
|
||||
"completed": "Completada",
|
||||
"cancel": "Cancel·la",
|
||||
"filter": "Filtra els jocs baixats",
|
||||
"remove": "Elimina",
|
||||
"downloading_metadata": "S'estan baixant les metadades…",
|
||||
"deleting": "S'està eliminant l'instal·lador…",
|
||||
"delete": "Elimina l'instal·lador",
|
||||
"delete_modal_title": "N'estàs segur?",
|
||||
"delete_modal_description": "S'eliminaran de l'ordinador tots els fitxers d'instal·lació",
|
||||
"install": "Instal·la"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Ruta de baixades",
|
||||
"change": "Actualitza",
|
||||
"notifications": "Notificacions",
|
||||
"enable_download_notifications": "Quan finalitzi una baixada",
|
||||
"enable_repack_list_notifications": "Quan s'afegeixi un nou reempaquetat",
|
||||
"real_debrid_api_token_label": "Testimoni de l'API de Real Debrid",
|
||||
"quit_app_instead_hiding": "Tanca l'Hydra en compte de minimitzar-la a la safata",
|
||||
"launch_with_system": "Inicia l'Hydra quan s'iniciï el sistema",
|
||||
"general": "General",
|
||||
"behavior": "Comportament",
|
||||
"enable_real_debrid": "Activa el Real Debrid",
|
||||
"real_debrid_api_token_hint": "Pots obtenir la teva clau de l'API <0>aquí</0>.",
|
||||
"save_changes": "Desa els canvis"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "La baixada ha finalitzat",
|
||||
"game_ready_to_install": "{{title}} ja es pot instal·lar",
|
||||
"repack_list_updated": "S'ha actualitzat la llista de reempaquetats",
|
||||
"repack_count_one": "S'ha afegit {{count}} reempaquetat",
|
||||
"repack_count_other": "S'han afegit {{count}} reempaquetats"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Obre l'Hydra",
|
||||
"quit": "Tanca"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "No hi ha baixades disponibles"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programes no instal·lats",
|
||||
"description": "No s'ha trobat els executables del Wine o el Lutris al sistema.",
|
||||
"instructions": "Comprova quina és la manera correcta d'instal·lar qualsevol d'ells en la teva distribució de Linux perquè el joc pugui executar-se amb normalitat."
|
||||
},
|
||||
"modal": {
|
||||
"close": "Botó de tancar"
|
||||
}
|
||||
}
|
||||
138
src/locales/da/translation.json
Normal file
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "Anbefalet",
|
||||
"trending": "Trender",
|
||||
"surprise_me": "Overrask mig",
|
||||
"no_results": "Ingen resultater fundet"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Katalog",
|
||||
"downloads": "Downloads",
|
||||
"settings": "Indstillinger",
|
||||
"my_library": "Mit bibliotek",
|
||||
"downloading_metadata": "{{title}} (Downloader metadata…)",
|
||||
"paused": "{{title}} (Paused)",
|
||||
"downloading": "{{title}} ({{percentage}} - Downloading…)",
|
||||
"filter": "Filtrer bibliotek",
|
||||
"home": "Hjem"
|
||||
},
|
||||
"header": {
|
||||
"search": "Søg spil",
|
||||
"home": "Hjem",
|
||||
"catalogue": "Katalog",
|
||||
"downloads": "Downloads",
|
||||
"search_results": "Søge resultater",
|
||||
"settings": "Indstillinger"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Ingen downloads igang",
|
||||
"downloading_metadata": "Downloader {{title}} metadata…",
|
||||
"downloading": "Downloader {{title}}… ({{percentage}} færdig) - Konklusion {{eta}} - {{speed}}"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Næste side",
|
||||
"previous_page": "Tidligere side"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Åben download muligheder",
|
||||
"download_options_zero": "Ingen download mulighed",
|
||||
"download_options_one": "{{count}} download mulighed",
|
||||
"download_options_other": "{{count}} download muligheder",
|
||||
"updated_at": "Opdateret {{updated_at}}",
|
||||
"install": "Installér",
|
||||
"resume": "Fortsæt",
|
||||
"pause": "Pause",
|
||||
"cancel": "Annullér",
|
||||
"remove": "Fjern",
|
||||
"space_left_on_disk": "{{space}} tilbage på harddisken",
|
||||
"eta": "Konklusion {{eta}}",
|
||||
"downloading_metadata": "Downloader metadata…",
|
||||
"filter": "Filtrer repacks",
|
||||
"requirements": "System behov",
|
||||
"minimum": "Mindste",
|
||||
"recommended": "Anbefalet",
|
||||
"release_date": "Offentliggjort den {{date}}",
|
||||
"publisher": "Udgivet af {{publisher}}",
|
||||
"hours": "timer",
|
||||
"minutes": "minutter",
|
||||
"amount_hours": "{{amount}} timer",
|
||||
"amount_minutes": "{{amount}} minutter",
|
||||
"accuracy": "{{accuracy}}% nøjagtighed",
|
||||
"add_to_library": "Tilføj til bibliotek",
|
||||
"remove_from_library": "Fjern fra bibliotek",
|
||||
"no_downloads": "Ingen downloads tilgængelige",
|
||||
"play_time": "Spillet i {{amount}}",
|
||||
"last_time_played": "Sidst spillet {{period}}",
|
||||
"not_played_yet": "Du har ikke spillet {{title}} endnu",
|
||||
"next_suggestion": "Næste forslag",
|
||||
"play": "Spil",
|
||||
"deleting": "Sletter installatør…",
|
||||
"close": "Luk",
|
||||
"playing_now": "Spiller nu",
|
||||
"change": "Ændré",
|
||||
"repacks_modal_description": "Vælg den repack du vil downloade",
|
||||
"select_folder_hint": "For at ændre standard mappen, gå til <0>Instillingerne</0>",
|
||||
"download_now": "Download nu"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Aktivér Hydra",
|
||||
"installation_id": "Installations ID:",
|
||||
"enter_activation_code": "Indtast din aktiverings kode",
|
||||
"message": "Hvis du ikke ved hvor du skal spørge om dette, burde du ikke have dette.",
|
||||
"activate": "Aktivér",
|
||||
"loading": "Loader…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Fortsæt",
|
||||
"pause": "Pause",
|
||||
"eta": "Konklusion {{eta}}",
|
||||
"paused": "Pauset",
|
||||
"verifying": "Verificerer…",
|
||||
"completed": "Færdigt",
|
||||
"cancel": "Annullér",
|
||||
"filter": "Filtrer downloadet spil",
|
||||
"remove": "Fjern",
|
||||
"downloading_metadata": "Downloader metadata…",
|
||||
"deleting": "Sletter installatør…",
|
||||
"delete": "Fjern installatør",
|
||||
"delete_modal_title": "Er du sikker?",
|
||||
"delete_modal_description": "Dette vil fjerne alle installations filerne fra din computer",
|
||||
"install": "Installér"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Downloads sti",
|
||||
"change": "Opdatering",
|
||||
"notifications": "Notifikationer",
|
||||
"enable_download_notifications": "Når et download bliver færdigt",
|
||||
"enable_repack_list_notifications": "Når en ny repack bliver tilføjet",
|
||||
"quit_app_instead_hiding": "Afslut Hydra instedet for at minimere til processlinjen",
|
||||
"launch_with_system": "Åben Hydra ved start af systemet",
|
||||
"general": "Generelt",
|
||||
"behavior": "Opførsel",
|
||||
"enable_real_debrid": "Slå Real-Debrid til",
|
||||
"real_debrid_api_token_hint": "Du kan få din API nøgle <0>her</0>",
|
||||
"save_changes": "Gem ændringer"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Download færdig",
|
||||
"game_ready_to_install": "{{title}} er klar til at installeret",
|
||||
"repack_list_updated": "Repack liste opdateret",
|
||||
"repack_count_one": "{{count}} repack tilføjet",
|
||||
"repack_count_other": "{{count}} repacks tilføjet"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Åben Hydra",
|
||||
"quit": "Afslut"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Ingen downloads tilgængelig"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programmer ikke installeret",
|
||||
"description": "Wine eller Lutris eksekverbare blev ikke fundet på dit system",
|
||||
"instructions": "Tjek den korrekte måde at installere nogle af dem, på din Linux distribution, så spillet kan køre normalt"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Luk knap"
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
{
|
||||
"app": {
|
||||
"successfully_signed_in": "Successfully signed in"
|
||||
},
|
||||
"home": {
|
||||
"featured": "Featured",
|
||||
"recently_added": "Recently added",
|
||||
"trending": "Trending",
|
||||
"surprise_me": "Surprise me",
|
||||
"no_results": "No results found"
|
||||
@@ -12,26 +14,30 @@
|
||||
"settings": "Settings",
|
||||
"my_library": "My library",
|
||||
"downloading_metadata": "{{title}} (Downloading metadata…)",
|
||||
"checking_files": "{{title}} ({{percentage}} - Checking files…)",
|
||||
"paused": "{{title}} (Paused)",
|
||||
"downloading": "{{title}} ({{percentage}} - Downloading…)",
|
||||
"filter": "Filter library",
|
||||
"follow_us": "Follow us",
|
||||
"home": "Home"
|
||||
"home": "Home",
|
||||
"queued": "{{title}} (Queued)",
|
||||
"game_has_no_executable": "Game has no executable selected",
|
||||
"sign_in": "Sign in"
|
||||
},
|
||||
"header": {
|
||||
"search": "Search",
|
||||
"search": "Search games",
|
||||
"home": "Home",
|
||||
"catalogue": "Catalogue",
|
||||
"downloads": "Downloads",
|
||||
"search_results": "Search results",
|
||||
"settings": "Settings"
|
||||
"settings": "Settings",
|
||||
"version_available_install": "Version {{version}} available. Click here to restart and install.",
|
||||
"version_available_download": "Version {{version}} available. Click here to download."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "No downloads in progress",
|
||||
"downloading_metadata": "Downloading {{title}} metadata…",
|
||||
"checking_files": "Checking {{title}} files… ({{percentage}} complete)",
|
||||
"downloading": "Downloading {{title}}… ({{percentage}} complete) - Conclusion {{eta}} - {{speed}}"
|
||||
"downloading": "Downloading {{title}}… ({{percentage}} complete) - Conclusion {{eta}} - {{speed}}",
|
||||
"calculating_eta": "Downloading {{title}}… ({{percentage}} complete) - Calculating remaining time…",
|
||||
"checking_files": "Checking {{title}} files… ({{percentage}} complete)"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Next page",
|
||||
@@ -48,24 +54,21 @@
|
||||
"pause": "Pause",
|
||||
"cancel": "Cancel",
|
||||
"remove": "Remove",
|
||||
"remove_from_list": "Remove",
|
||||
"space_left_on_disk": "{{space}} left on disk",
|
||||
"eta": "Conclusion {{eta}}",
|
||||
"calculating_eta": "Calculating remaining time…",
|
||||
"downloading_metadata": "Downloading metadata…",
|
||||
"checking_files": "Checking files…",
|
||||
"filter": "Filter repacks",
|
||||
"requirements": "System requirements",
|
||||
"minimum": "Minimum",
|
||||
"recommended": "Recommended",
|
||||
"no_minimum_requirements": "{{title}} doesn't provide minimum requirements information",
|
||||
"no_recommended_requirements": "{{title}} doesn't provide recommended requirements information",
|
||||
"paused_progress": "{{progress}} (Paused)",
|
||||
"release_date": "Released in {{date}}",
|
||||
"paused": "Paused",
|
||||
"release_date": "Released on {{date}}",
|
||||
"publisher": "Published by {{publisher}}",
|
||||
"copy_link_to_clipboard": "Copy link",
|
||||
"copied_link_to_clipboard": "Link copied",
|
||||
"hours": "hours",
|
||||
"minutes": "minutes",
|
||||
"amount_hours": "{{amount}} hours",
|
||||
"amount_minutes": "{{amount}} minutes",
|
||||
"accuracy": "{{accuracy}}% accuracy",
|
||||
"add_to_library": "Add to library",
|
||||
"remove_from_library": "Remove from library",
|
||||
@@ -77,7 +80,40 @@
|
||||
"play": "Play",
|
||||
"deleting": "Deleting installer…",
|
||||
"close": "Close",
|
||||
"playing_now": "Playing now"
|
||||
"playing_now": "Playing now",
|
||||
"change": "Change",
|
||||
"repacks_modal_description": "Choose the repack you want to download",
|
||||
"select_folder_hint": "To change the default folder, go to the <0>Settings</0>",
|
||||
"download_now": "Download now",
|
||||
"no_shop_details": "Could not retrieve shop details.",
|
||||
"download_options": "Download options",
|
||||
"download_path": "Download path",
|
||||
"previous_screenshot": "Previous screenshot",
|
||||
"next_screenshot": "Next screenshot",
|
||||
"screenshot": "Screenshot {{number}}",
|
||||
"open_screenshot": "Open screenshot {{number}}",
|
||||
"download_settings": "Download settings",
|
||||
"downloader": "Downloader",
|
||||
"select_executable": "Select",
|
||||
"no_executable_selected": "No executable selected",
|
||||
"open_folder": "Open folder",
|
||||
"open_download_location": "See downloaded files",
|
||||
"create_shortcut": "Create desktop shortcut",
|
||||
"remove_files": "Remove files",
|
||||
"remove_from_library_title": "Are you sure?",
|
||||
"remove_from_library_description": "This will remove {{game}} from your library",
|
||||
"options": "Options",
|
||||
"executable_section_title": "Executable",
|
||||
"executable_section_description": "Path of the file that will be executed when \"Play\" is clicked",
|
||||
"downloads_secion_title": "Downloads",
|
||||
"downloads_section_description": "Check out updates or other versions of this game",
|
||||
"danger_zone_section_title": "Danger zone",
|
||||
"danger_zone_section_description": "Remove this game from your library or the files downloaded by Hydra",
|
||||
"download_in_progress": "Download in progress",
|
||||
"download_paused": "Download paused",
|
||||
"last_downloaded_option": "Last downloaded option",
|
||||
"create_shortcut_success": "Shortcut created successfully",
|
||||
"create_shortcut_error": "Error creating shortcut"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Activate Hydra",
|
||||
@@ -93,22 +129,24 @@
|
||||
"eta": "Conclusion {{eta}}",
|
||||
"paused": "Paused",
|
||||
"verifying": "Verifying…",
|
||||
"completed_at": "Completed in {{date}}",
|
||||
"completed": "Completed",
|
||||
"cancelled": "Cancelled",
|
||||
"download_again": "Download again",
|
||||
"removed": "Not downloaded",
|
||||
"cancel": "Cancel",
|
||||
"filter": "Filter downloaded games",
|
||||
"remove": "Remove",
|
||||
"downloading_metadata": "Downloading metadata…",
|
||||
"checking_files": "Checking files…",
|
||||
"starting_download": "Starting download…",
|
||||
"deleting": "Deleting installer…",
|
||||
"delete": "Remove installer",
|
||||
"remove_from_list": "Remove",
|
||||
"delete_modal_title": "Are you sure?",
|
||||
"delete_modal_description": "This will remove all the installation files from your computer",
|
||||
"install": "Install"
|
||||
"install": "Install",
|
||||
"download_in_progress": "In progress",
|
||||
"queued_downloads": "Queued downloads",
|
||||
"downloads_completed": "Completed",
|
||||
"queued": "Queued",
|
||||
"no_downloads_title": "Such empty",
|
||||
"no_downloads_description": "You haven't downloaded anything with Hydra yet, but it's never too late to start.",
|
||||
"checking_files": "Checking files…"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Downloads path",
|
||||
@@ -116,15 +154,54 @@
|
||||
"notifications": "Notifications",
|
||||
"enable_download_notifications": "When a download is complete",
|
||||
"enable_repack_list_notifications": "When a new repack is added",
|
||||
"telemetry": "Telemetry",
|
||||
"telemetry_description": "Enable anonymous usage statistics"
|
||||
"real_debrid_api_token_label": "Real-Debrid API token",
|
||||
"quit_app_instead_hiding": "Don't hide Hydra when closing",
|
||||
"launch_with_system": "Launch Hydra on system start-up",
|
||||
"general": "General",
|
||||
"behavior": "Behavior",
|
||||
"download_sources": "Download sources",
|
||||
"language": "Language",
|
||||
"real_debrid_api_token": "API Token",
|
||||
"enable_real_debrid": "Enable Real-Debrid",
|
||||
"real_debrid_description": "Real-Debrid is an unrestricted downloader that allows you to download files instantly and at the best of your Internet speed.",
|
||||
"real_debrid_invalid_token": "Invalid API token",
|
||||
"real_debrid_api_token_hint": "You can get your API token <0>here</0>",
|
||||
"real_debrid_free_account_error": "The account \"{{username}}\" is a free account. Please subscribe to Real-Debrid",
|
||||
"real_debrid_linked_message": "Account \"{{username}}\" linked",
|
||||
"save_changes": "Save changes",
|
||||
"changes_saved": "Changes successfully saved",
|
||||
"download_sources_description": "Hydra will fetch the download links from these sources. The source URL must be a direct link to a .json file containing the download links.",
|
||||
"validate_download_source": "Validate",
|
||||
"remove_download_source": "Remove",
|
||||
"add_download_source": "Add source",
|
||||
"download_count_zero": "No downloads in list",
|
||||
"download_count_one": "{{countFormatted}} download in list",
|
||||
"download_count_other": "{{countFormatted}} downloads in list",
|
||||
"download_options_zero": "No download available",
|
||||
"download_options_one": "{{countFormatted}} download available",
|
||||
"download_options_other": "{{countFormatted}} downloads available",
|
||||
"download_source_url": "Download source URL",
|
||||
"add_download_source_description": "Insert the URL containing the .json file",
|
||||
"download_source_up_to_date": "Up-to-date",
|
||||
"download_source_errored": "Errored",
|
||||
"sync_download_sources": "Sync sources",
|
||||
"removed_download_source": "Download source removed",
|
||||
"added_download_source": "Added download source",
|
||||
"download_sources_synced": "All download sources are synced",
|
||||
"insert_valid_json_url": "Insert a valid JSON url",
|
||||
"found_download_option_zero": "No download option found",
|
||||
"found_download_option_one": "Found {{countFormatted}} download option",
|
||||
"found_download_option_other": "Found {{countFormatted}} download options",
|
||||
"import": "Import"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Download complete",
|
||||
"game_ready_to_install": "{{title}} is ready to install",
|
||||
"repack_list_updated": "Repack list updated",
|
||||
"repack_count_one": "{{count}} repack added",
|
||||
"repack_count_other": "{{count}} repacks added"
|
||||
"repack_count_other": "{{count}} repacks added",
|
||||
"new_update_available": "Version {{version}} available",
|
||||
"restart_to_install_update": "Restart Hydra to install the update"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Open Hydra",
|
||||
@@ -137,5 +214,33 @@
|
||||
"title": "Programs not installed",
|
||||
"description": "Wine or Lutris executables were not found on your system",
|
||||
"instructions": "Check the correct way to install any of them on your Linux distro so that the game can run normally"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Close button"
|
||||
},
|
||||
"forms": {
|
||||
"toggle_password_visibility": "Toggle password visibility"
|
||||
},
|
||||
"user_profile": {
|
||||
"amount_hours": "{{amount}} hours",
|
||||
"amount_minutes": "{{amount}} minutes",
|
||||
"last_time_played": "Last played {{period}}",
|
||||
"activity": "Recent activity",
|
||||
"library": "Library",
|
||||
"total_play_time": "Total playtime: {{amount}}",
|
||||
"no_recent_activity_title": "Hmmm… nothing here",
|
||||
"no_recent_activity_description": "You haven't played any games recently. It's time to change that!",
|
||||
"display_name": "Display name",
|
||||
"saving": "Saving",
|
||||
"save": "Save",
|
||||
"edit_profile": "Edit Profile",
|
||||
"saved_successfully": "Saved successfully",
|
||||
"try_again": "Please, try again",
|
||||
"sign_out_modal_title": "Are you sure?",
|
||||
"cancel": "Cancel",
|
||||
"successfully_signed_out": "Successfully signed out",
|
||||
"sign_out": "Sign out",
|
||||
"playing_for": "Playing for {{amount}}",
|
||||
"sign_out_modal_text": "Your library is linked with your current account. When signing out, your library will not be visible anymore, and any progress will not be saved. Continue with sign out?"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
{
|
||||
"app": {
|
||||
"successfully_signed_in": "Sesión iniciada correctamente"
|
||||
},
|
||||
"home": {
|
||||
"featured": "Destacado",
|
||||
"recently_added": "Recién Añadidos",
|
||||
"trending": "Tendencias",
|
||||
"surprise_me": "¡Sorpréndeme!",
|
||||
"no_results": "No se encontraron resultados"
|
||||
@@ -12,26 +14,34 @@
|
||||
"settings": "Ajustes",
|
||||
"my_library": "Mi biblioteca",
|
||||
"downloading_metadata": "{{title}} (Descargando metadatos…)",
|
||||
"checking_files": "{{title}} ({{percentage}} - Analizando archivos…)",
|
||||
"paused": "{{title}} (Pausado)",
|
||||
"downloading": "{{title}} ({{percentage}} - Descargando…)",
|
||||
"filter": "Filtrar biblioteca",
|
||||
"home": "Hogar",
|
||||
"follow_us": "Síganos"
|
||||
"filter": "Buscar en la biblioteca",
|
||||
"home": "Inicio",
|
||||
"queued": "{{title}} (En Cola)",
|
||||
"game_has_no_executable": "El juego no tiene un ejecutable",
|
||||
"sign_in": "Iniciar sesión"
|
||||
},
|
||||
"header": {
|
||||
"search": "Buscar",
|
||||
"search": "Buscar juegos",
|
||||
"home": "Inicio",
|
||||
"catalogue": "Catálogo",
|
||||
"downloads": "Descargas",
|
||||
"search_results": "Resultados de búsqueda",
|
||||
"settings": "Ajustes",
|
||||
"home": "Início"
|
||||
"version_available_install": "Version {{version}} disponible. Haz clic aquí para reiniciar e instalar.",
|
||||
"version_available_download": "Version {{version}} disponible. Haz clic aquí para descargar."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Sin descargas en progreso",
|
||||
"downloading_metadata": "Descargando metadatos de {{title}}…",
|
||||
"checking_files": "Analizando archivos de {{title}} - ({{percentage}} completado)",
|
||||
"downloading": "Descargando {{title}}… ({{percentage}} completado) - Finalizando {{eta}} - {{speed}}"
|
||||
"downloading": "Descargando {{title}}… ({{percentage}} completado) - Finalizando {{eta}} - {{speed}}",
|
||||
"calculating_eta": "Descargando {{title}}… ({{percentage}} completado) - Calculando tiempo restante…",
|
||||
"checking_files": "Verificando archivos de {{title}}… ({{percentage}} completado)"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Siguiente página",
|
||||
"previous_page": "Pagina anterior"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Ver opciones de descargas",
|
||||
@@ -39,41 +49,71 @@
|
||||
"download_options_one": "{{count}} opción de descarga",
|
||||
"download_options_other": "{{count}} opciones de descargas",
|
||||
"updated_at": "Actualizado el {{updated_at}}",
|
||||
"install": "Instalar",
|
||||
"resume": "Continuar",
|
||||
"pause": "Pausa",
|
||||
"cancel": "Cancelar",
|
||||
"remove": "Eliminar",
|
||||
"remove_from_list": "Quitar",
|
||||
"space_left_on_disk": "{{space}} restantes en el disco",
|
||||
"eta": "Finalizando {{eta}}",
|
||||
"eta": "Tiempo restante: {{eta}}",
|
||||
"calculating_eta": "Calculando tiempo restante…",
|
||||
"downloading_metadata": "Descargando metadatos…",
|
||||
"checking_files": "Analizando archivos…",
|
||||
"filter": "Filtrar repacks",
|
||||
"filter": "Buscar repacks",
|
||||
"requirements": "Requisitos del Sistema",
|
||||
"minimum": "Mínimos",
|
||||
"recommended": "Recomendados",
|
||||
"no_minimum_requirements": "Sin requisitos mínimos para {{title}}",
|
||||
"no_recommended_requirements": "{{title}} no tiene requisitos recomendados",
|
||||
"paused_progress": "{{progress}} (Pausado)",
|
||||
"release_date": "Fecha de lanzamiento {{date}}",
|
||||
"publisher": "Publicado por {{publisher}}",
|
||||
"copy_link_to_clipboard": "Copiar enlace",
|
||||
"copied_link_to_clipboard": "Enlace copiado",
|
||||
"paused": "Pausado",
|
||||
"release_date": "Fecha de lanzamiento: {{date}}",
|
||||
"publisher": "Publicado por: {{publisher}}",
|
||||
"hours": "horas",
|
||||
"minutes": "minutos",
|
||||
"amount_hours": "{{amount}} horas",
|
||||
"amount_minutes": "{{amount}} minutos",
|
||||
"accuracy": "{{accuracy}}% precisión",
|
||||
"add_to_library": "Agregar a la biblioteca",
|
||||
"remove_from_library": "Eliminar de la biblioteca",
|
||||
"no_downloads": "No hay descargas disponibles",
|
||||
"next_suggestion": "Siguiente sugerencia",
|
||||
"play_time": "Jugado por {{cantidad}}",
|
||||
"install": "Instalar",
|
||||
"play": "Jugar",
|
||||
"play_time": "Jugado por {{amount}}",
|
||||
"last_time_played": "Jugado por última vez {{period}}",
|
||||
"not_played_yet": "Aún no has jugado a {{title}}",
|
||||
"close": "Cerca",
|
||||
"next_suggestion": "Siguiente sugerencia",
|
||||
"play": "Jugar",
|
||||
"deleting": "Eliminando instalador…",
|
||||
"close": "Cerrar",
|
||||
"playing_now": "Jugando ahora",
|
||||
"last_time_played": "Jugado por última vez {{period}}"
|
||||
"change": "Cambiar",
|
||||
"repacks_modal_description": "Selecciona el repack que quieres descargar",
|
||||
"select_folder_hint": "Para cambiar la carpeta predeterminada, ve a <0>Ajustes</0>",
|
||||
"download_now": "Descargar ahora",
|
||||
"no_shop_details": "No se pudieron obtener detalles de la tienda.",
|
||||
"download_options": "Opciones de descarga",
|
||||
"download_path": "Ruta de descarga",
|
||||
"previous_screenshot": "Anterior captura",
|
||||
"next_screenshot": "Siguiente captura",
|
||||
"screenshot": "Captura {{number}}",
|
||||
"open_screenshot": "Abrir captura {{number}}",
|
||||
"download_settings": "Ajustes de descarga",
|
||||
"downloader": "Método de descarga",
|
||||
"select_executable": "Seleccionar",
|
||||
"no_executable_selected": "No se seleccionó un ejecutable",
|
||||
"open_folder": "Abrir carpeta",
|
||||
"open_download_location": "Ver archivos descargados",
|
||||
"create_shortcut": "Crear acceso directo en el escritorio",
|
||||
"remove_files": "Eliminar archivos",
|
||||
"remove_from_library_title": "¿Estás seguro?",
|
||||
"remove_from_library_description": "Esto eliminará {{game}} de tu biblioteca",
|
||||
"options": "Opciones",
|
||||
"executable_section_title": "Ejecutable",
|
||||
"executable_section_description": "Ruta del archivo que se ejecutará cuando se presione \"Jugar\"",
|
||||
"downloads_secion_title": "Descargas",
|
||||
"downloads_section_description": "Buscar actualizaciones u otras versiones de este juego",
|
||||
"danger_zone_section_title": "Zona de Peligro",
|
||||
"danger_zone_section_description": "Eliminar este juego de tu librería o los archivos descargados por Hydra",
|
||||
"download_in_progress": "Descarga en progreso",
|
||||
"download_paused": "Descarga pausada",
|
||||
"last_downloaded_option": "Última opción descargada",
|
||||
"create_shortcut_success": "Atajo creado con éxito",
|
||||
"create_shortcut_error": "Error al crear un atajo"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Activar Hydra",
|
||||
@@ -86,25 +126,27 @@
|
||||
"downloads": {
|
||||
"resume": "Resumir",
|
||||
"pause": "Pausa",
|
||||
"eta": "Finalizando {{eta}}",
|
||||
"eta": "Finalizando en {{eta}}",
|
||||
"paused": "En Pausa",
|
||||
"verifying": "Verificando…",
|
||||
"completed_at": "Completado el {{date}}",
|
||||
"completed": "Completado",
|
||||
"cancelled": "Cancelado",
|
||||
"download_again": "Descargar de nuevo",
|
||||
"removed": "No descargado",
|
||||
"cancel": "Cancelar",
|
||||
"filter": "Buscar juegos descargados",
|
||||
"remove": "Eliminar",
|
||||
"downloading_metadata": "Descargando metadatos…",
|
||||
"checking_files": "Verificando archivos…",
|
||||
"starting_download": "Iniciando descarga…",
|
||||
"remove_from_list": "Eliminar",
|
||||
"delete": "Quitar instalador",
|
||||
"delete_modal_description": "Esto eliminará todos los archivos de instalación de su computadora.",
|
||||
"delete_modal_title": "¿Está seguro?",
|
||||
"deleting": "Eliminando instalador…",
|
||||
"install": "Instalar"
|
||||
"delete": "Eliminar instalador",
|
||||
"delete_modal_title": "¿Estás seguro?",
|
||||
"delete_modal_description": "Esto eliminará todos los archivos de instalación de tu computadora.",
|
||||
"install": "Instalar",
|
||||
"download_in_progress": "En progreso",
|
||||
"queued_downloads": "Descargas en cola",
|
||||
"downloads_completed": "Completado",
|
||||
"queued": "En cola",
|
||||
"no_downloads_title": "Esto está tan... vacío",
|
||||
"no_downloads_description": "No has descargado nada con Hydra... aún, ¡pero nunca es tarde para comenzar!.",
|
||||
"checking_files": "Verificando archivos…"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Ruta de descarga",
|
||||
@@ -112,15 +154,53 @@
|
||||
"notifications": "Notificaciones",
|
||||
"enable_download_notifications": "Cuando se completa una descarga",
|
||||
"enable_repack_list_notifications": "Cuando se añade un repack nuevo",
|
||||
"telemetry": "Telemetria",
|
||||
"telemetry_description": "Habilitar estadísticas de uso anónimas"
|
||||
"real_debrid_api_token_label": "Token API de Real-Debrid",
|
||||
"quit_app_instead_hiding": "Salir de Hydra en vez de minimizar en la bandeja del sistema",
|
||||
"launch_with_system": "Iniciar Hydra al inicio del sistema",
|
||||
"general": "General",
|
||||
"behavior": "Otros",
|
||||
"download_sources": "Fuentes de descarga",
|
||||
"language": "Idioma",
|
||||
"real_debrid_api_token": "Token API",
|
||||
"enable_real_debrid": "Activar Real-Debrid",
|
||||
"real_debrid_description": "Real-Debrid es una forma de descargar sin restricciones archivos instantáneamente con la máxima velocidad de tu internet.",
|
||||
"real_debrid_invalid_token": "Token de API inválido",
|
||||
"real_debrid_api_token_hint": "Puedes obtener tu clave de API <0>aquí</0>",
|
||||
"real_debrid_free_account_error": "La cuenta \"{{username}}\" es una cuenta gratuita. Por favor, suscríbete a Real-Debrid",
|
||||
"real_debrid_linked_message": "Cuenta \"{{username}}\" vinculada",
|
||||
"save_changes": "Guardar cambios",
|
||||
"changes_saved": "Ajustes guardados exitosamente",
|
||||
"download_sources_description": "Hydra buscará los enlaces de descarga de estas fuentes. La URL de origen debe ser un enlace directo a un archivo .json que contenga los enlaces de descarga",
|
||||
"validate_download_source": "Validar",
|
||||
"remove_download_source": "Eliminar",
|
||||
"add_download_source": "Añadir fuente de descarga",
|
||||
"download_count_zero": "No hay descargas en la lista",
|
||||
"download_count_one": "{{countFormatted}} descarga en la lista",
|
||||
"download_count_other": "{{countFormatted}} descargas en la lista",
|
||||
"download_options_zero": "No hay descargas disponibles",
|
||||
"download_options_one": "{{countFormatted}} descarga disponible",
|
||||
"download_options_other": "{{countFormatted}} descargas disponibles",
|
||||
"download_source_url": "Descargar URL de origen",
|
||||
"add_download_source_description": "Introduce la URL con el archivo .json",
|
||||
"download_source_up_to_date": "Al día",
|
||||
"download_source_errored": "Error",
|
||||
"sync_download_sources": "Sincronizar fuentes",
|
||||
"removed_download_source": "Fuente de descarga eliminada",
|
||||
"added_download_source": "Fuente de descarga añadida",
|
||||
"download_sources_synced": "Todas las fuentes de descargas están actualizadas.",
|
||||
"insert_valid_json_url": "Introduce una URL JSON válida",
|
||||
"found_download_option_zero": "No se encontró una opción de descarga",
|
||||
"found_download_option_one": "Se encontró {{countFormatted}} opción de descarga",
|
||||
"found_download_option_other": "Se encontraron {{countFormatted}} opciones de descarga",
|
||||
"import": "Importar"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Descarga completada",
|
||||
"game_ready_to_install": "{{title}} está listo para instalarse",
|
||||
"repack_list_updated": "Lista de repacks actualizadas",
|
||||
"repack_count_one": "{{count}} repack ha sido añadido",
|
||||
"repack_count_other": "{{count}} repacks añadidos"
|
||||
"repack_count_other": "{{count}} repacks añadidos",
|
||||
"new_update_available": "Version {{version}} disponible"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Abrir Hydra",
|
||||
@@ -132,10 +212,34 @@
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programas no instalados",
|
||||
"description": "Los ejecutables de Wine o Lutris no se encontraron en su sistema",
|
||||
"instructions": "Comprueba la forma correcta de instalar cualquiera de ellos en tu distro Linux para que el juego pueda ejecutarse con normalidad"
|
||||
"instructions": "Comprueba como instalar de forma correcta uno de los dos en tu distro de Linux para ejecutar el juego con normalidad"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Siguiente página",
|
||||
"previous_page": "Pagina anterior"
|
||||
"modal": {
|
||||
"close": "Botón de cierre"
|
||||
},
|
||||
"forms": {
|
||||
"toggle_password_visibility": "Cambiar visibilidad de contraseña"
|
||||
},
|
||||
"user_profile": {
|
||||
"amount_hours": "{{amount}} horas",
|
||||
"amount_minutes": "{{amount}} minutos",
|
||||
"last_time_played": "Última vez jugado {{period}}",
|
||||
"activity": "Actividad reciente",
|
||||
"library": "Biblioteca",
|
||||
"total_play_time": "Total de tiempo jugado: {{amount}}",
|
||||
"no_recent_activity_title": "Que raro, no hay nada por acá, ¿que tal si jugamos algo para empezar?",
|
||||
"no_recent_activity_description": "No has jugado ningún juego recientemente, ¡vamos a cambiar eso ahora!",
|
||||
"display_name": "Nombre a mostrar",
|
||||
"saving": "Guardando",
|
||||
"save": "Guardar",
|
||||
"edit_profile": "Editar perfil",
|
||||
"saved_successfully": "Guardado exitosamente",
|
||||
"try_again": "Por favor, intenta de nuevo",
|
||||
"sign_out_modal_title": "¿Estás seguro?",
|
||||
"cancel": "Cancelar",
|
||||
"successfully_signed_out": "Sesión cerrada exitosamente",
|
||||
"sign_out": "Cerrar sesión",
|
||||
"playing_for": "Jugando por {{amount}}",
|
||||
"sign_out_modal_text": "Tu biblioteca se ha vinculado con tu cuenta. Cuando cierres sesión, tú biblioteca ya no será visible y cualquier progreso no se guardará. ¿Continuar con el cierre de sesión?"
|
||||
}
|
||||
}
|
||||
|
||||
138
src/locales/fa/translation.json
Normal file
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "پیشنهادی",
|
||||
"trending": "پرطرفدار",
|
||||
"surprise_me": "سوپرایزم کن",
|
||||
"no_results": "اتمامای پیدا نشد"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "کاتالوگ",
|
||||
"downloads": "دانلودها",
|
||||
"settings": "تنظیمات",
|
||||
"my_library": "کتابخانهی من",
|
||||
"downloading_metadata": "{{title}} (در حال دانلود متادیتا...)",
|
||||
"paused": "{{title}} (متوقف شده)",
|
||||
"downloading": "{{title}} ({{percentage}} - در حال دانلود…)",
|
||||
"filter": "فیلتر کردن کتابخانه",
|
||||
"home": "خانه"
|
||||
},
|
||||
"header": {
|
||||
"search": "جستجوی بازیها",
|
||||
"home": "خانه",
|
||||
"catalogue": "کاتالوگ",
|
||||
"downloads": "دانلودها",
|
||||
"search_results": "نتایج جستجو",
|
||||
"settings": "تنظیمات"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "دانلودی در حال انجام نیست",
|
||||
"downloading_metadata": "درحال دانلود متادیتاهای {{title}}…",
|
||||
"downloading": "در حال دانلود {{title}}… ({{percentage}} تکمیل شده) - اتمام {{eta}} - {{speed}}"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "صفحهی بعدی",
|
||||
"previous_page": "صفحهی قبلی"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "بازکردن آپشنهای دانلود",
|
||||
"download_options_zero": "هیچ آپشن دانلودی وجود ندارد",
|
||||
"download_options_one": "{{count}} آپشن دانلود",
|
||||
"download_options_other": "{{count}} آپشن دانلود",
|
||||
"updated_at": "بروزرسانی شده در {{updated_at}}",
|
||||
"install": "نصب",
|
||||
"resume": "ادامه",
|
||||
"pause": "توقف",
|
||||
"cancel": "بیخیال",
|
||||
"remove": "حذف",
|
||||
"space_left_on_disk": "{{space}} فضا در دیسک باقیمانده",
|
||||
"eta": "اتمام {{eta}}",
|
||||
"downloading_metadata": "در حال دانلود متادیتاها…",
|
||||
"filter": "فیلترکردن ریپکها",
|
||||
"requirements": "سیستم مورد نیاز",
|
||||
"minimum": "حداقل",
|
||||
"recommended": "پیشنهادی",
|
||||
"release_date": "منتشر شده در {{date}}",
|
||||
"publisher": "منتشر شده توسط {{publisher}}",
|
||||
"hours": "ساعت",
|
||||
"minutes": "دقیقه",
|
||||
"amount_hours": "{{amount}} ساعت",
|
||||
"amount_minutes": "{{amount}} دقیقه",
|
||||
"accuracy": "{{accuracy}}% دقت",
|
||||
"add_to_library": "اضافه کردن به کتابخانه",
|
||||
"remove_from_library": "حذف کردن از کتابخانه",
|
||||
"no_downloads": "هیچ دانلودی نیست",
|
||||
"play_time": "{{amount}} بازی شده",
|
||||
"last_time_played": "آخرین بار بازی شده {{period}}",
|
||||
"not_played_yet": "شما هنوز {{title}} را بازی نکردهاید",
|
||||
"next_suggestion": "پیشنهاد بعدی",
|
||||
"play": "بازی",
|
||||
"deleting": "پاک کردن نصب کننده",
|
||||
"close": "بستن",
|
||||
"playing_now": "در حال بازی",
|
||||
"change": "تغییر",
|
||||
"repacks_modal_description": "ریپک مورد نظر برای دانلود را انتخاب کنید",
|
||||
"select_folder_hint": "برای تغییر پوشهی پیشفرض به <0>Settings</0> بروید",
|
||||
"download_now": "الان دانلود کن"
|
||||
},
|
||||
"activation": {
|
||||
"title": "فعال کردن هایدرا",
|
||||
"installation_id": "ID نصب:",
|
||||
"enter_activation_code": "کد فعالسازی خود را وارد کنید",
|
||||
"message": "اگر نمیدانید از کجا باید درخواست کنید، پس نباید آن را داشته باشید.",
|
||||
"activate": "فعالسازی",
|
||||
"loading": "در حال بارگزاری…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "ادامه",
|
||||
"pause": "توقف",
|
||||
"eta": "اتمام {{eta}}",
|
||||
"paused": "متوقف شده",
|
||||
"verifying": "در حال اعتبارسنجی…",
|
||||
"completed": "پایان یافته",
|
||||
"cancel": "لغو",
|
||||
"filter": "فیلتر بازیهای دانلود شده",
|
||||
"remove": "حذف",
|
||||
"downloading_metadata": "در حال دانلود متادیتاها…",
|
||||
"deleting": "در حال پاک کردن اینستالر…",
|
||||
"delete": "پاک کردن",
|
||||
"delete_modal_title": "مطمئنی؟",
|
||||
"delete_modal_description": "این کار تمام فایلهای اینستالر را از کامپیوتر شما حذف میکند",
|
||||
"install": "نصف"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "مسیر دانلودها",
|
||||
"change": "بروزرسانی",
|
||||
"notifications": "نوتیفیکشنها",
|
||||
"enable_download_notifications": "زمانی که یک دانلود تمام شد",
|
||||
"enable_repack_list_notifications": "زمانی که یک ریپک جدید اضافه شد",
|
||||
"quit_app_instead_hiding": "به جای کوچک کردن، از هایدرا خارج شو",
|
||||
"launch_with_system": "زمانی که سیستم روشن میشود، هایدرا را باز کن",
|
||||
"general": "کلی",
|
||||
"behavior": "رفتار",
|
||||
"enable_real_debrid": "فعالسازی Real-Debrid",
|
||||
"real_debrid_api_token_hint": "کلید API خود را از <ب0>اینجا</0> بگیرید.",
|
||||
"save_changes": "ذخیره تغییرات"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "دانلود تمام شد",
|
||||
"game_ready_to_install": "{{title}} آمادهی نصب است",
|
||||
"repack_list_updated": "لیست ریپکها بروزرسانی شد",
|
||||
"repack_count_one": "{{count}} ریپک اضافه شد",
|
||||
"repack_count_other": "{{count}} ریپک اضافه شد"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "باز کردن هایدرا",
|
||||
"quit": "خروج"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "هیچ دانلودی نیست"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "نرمافزاری نصب نیست",
|
||||
"description": "بر روی سیستم شما پیدا نشد Wine یا Lutris فایلهای اجرایی",
|
||||
"instructions": "روش صحیح نصب هر کدام از آنها رو روی لینوکس خود چک کنید تا بازی بتواند به درستی اجرا شود"
|
||||
},
|
||||
"modal": {
|
||||
"close": "دکمهی خروج"
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "En vedette",
|
||||
"recently_added": "Récemment ajouté",
|
||||
"trending": "Tendance",
|
||||
"surprise_me": "Surprenez-moi",
|
||||
"no_results": "Aucun résultat trouvé"
|
||||
@@ -12,12 +11,10 @@
|
||||
"settings": "Paramètres",
|
||||
"my_library": "Ma bibliothèque",
|
||||
"downloading_metadata": "{{title}} (Téléchargement des métadonnées…)",
|
||||
"checking_files": "{{title}} ({{percentage}} - Vérification des fichiers…)",
|
||||
"paused": "{{title}} (En pause)",
|
||||
"downloading": "{{title}} ({{percentage}} - Téléchargement en cours…)",
|
||||
"filter": "Filtrer la bibliothèque",
|
||||
"home": "Page d’accueil",
|
||||
"follow_us": "Suivez-nous"
|
||||
"home": "Page d’accueil"
|
||||
},
|
||||
"header": {
|
||||
"search": "Recherche",
|
||||
@@ -25,13 +22,12 @@
|
||||
"downloads": "Téléchargements",
|
||||
"search_results": "Résultats de la recherche",
|
||||
"settings": "Paramètres",
|
||||
"home": "Maison"
|
||||
"home": "Accueil"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Aucun téléchargement en cours",
|
||||
"downloading_metadata": "Téléchargement des métadonnées de {{title}}…",
|
||||
"checking_files": "Vérification des fichiers de {{title}}… ({{percentage}} complet)",
|
||||
"downloading": "Téléchargement de {{title}}… ({{percentage}} complet) - Conclusion dans {{eta}} - {{speed}}"
|
||||
"downloading": "Téléchargement de {{title}}… ({{percentage}} terminé) - Fin dans {{eta}} - {{speed}}"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Ouvrir les options de téléchargement",
|
||||
@@ -43,24 +39,19 @@
|
||||
"pause": "Pause",
|
||||
"cancel": "Annuler",
|
||||
"remove": "Supprimer",
|
||||
"remove_from_list": "Retirer",
|
||||
"space_left_on_disk": "{{space}} restant sur le disque",
|
||||
"eta": "Conclusion dans {{eta}}",
|
||||
"eta": "Fin dans {{eta}}",
|
||||
"downloading_metadata": "Téléchargement des métadonnées en cours…",
|
||||
"checking_files": "Vérification des fichiers…",
|
||||
"filter": "Filtrer les réductions",
|
||||
"filter": "Filtrer les repacks",
|
||||
"requirements": "Configuration requise",
|
||||
"minimum": "Minimum",
|
||||
"recommended": "Recommandée",
|
||||
"no_minimum_requirements": "{{title}} ne fournit pas d'informations sur les exigences minimales",
|
||||
"no_recommended_requirements": "{{title}} ne fournit pas d'informations sur les exigences recommandées",
|
||||
"paused_progress": "{{progress}} (En pause)",
|
||||
"release_date": "Sorti le {{date}}",
|
||||
"publisher": "Édité par {{publisher}}",
|
||||
"copy_link_to_clipboard": "Copier le lien",
|
||||
"copied_link_to_clipboard": "Lien copié",
|
||||
"hours": "heures",
|
||||
"minutes": "minutes",
|
||||
"amount_hours": "{{amount}} heures",
|
||||
"amount_minutes": "{{amount}} minutes",
|
||||
"accuracy": "{{accuracy}}% précision",
|
||||
"add_to_library": "Ajouter à la bibliothèque",
|
||||
"remove_from_library": "Supprimer de la bibliothèque",
|
||||
@@ -72,34 +63,28 @@
|
||||
"not_played_yet": "Vous n'avez pas encore joué à {{title}}",
|
||||
"close": "Fermer",
|
||||
"deleting": "Suppression du programme d'installation…",
|
||||
"playing_now": "Je joue maintenant",
|
||||
"last_time_played": "Dernière lecture {{période}}"
|
||||
"playing_now": "Jeu en cours",
|
||||
"last_time_played": "Dernièrement joué {{période}}"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Activer Hydra",
|
||||
"installation_id": "ID d'installation :",
|
||||
"enter_activation_code": "Entrez votre code d'activation",
|
||||
"message": "Si vous ne savez pas où demander cela, vous ne devriez pas l'avoir.",
|
||||
"message": "Si vous ne savez pas où demander ceci, vous ne devriez pas l'avoir.",
|
||||
"activate": "Activer",
|
||||
"loading": "Chargement en cours…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Reprendre",
|
||||
"pause": "Pause",
|
||||
"eta": "Conclusion dans {{eta}}",
|
||||
"eta": "Fin dans {{eta}}",
|
||||
"paused": "En pause",
|
||||
"verifying": "Vérification en cours…",
|
||||
"completed_at": "Terminé en {{date}}",
|
||||
"completed": "Terminé",
|
||||
"cancelled": "Annulé",
|
||||
"download_again": "Télécharger à nouveau",
|
||||
"cancel": "Annuler",
|
||||
"filter": "Filtrer les jeux téléchargés",
|
||||
"remove": "Supprimer",
|
||||
"downloading_metadata": "Téléchargement des métadonnées en cours…",
|
||||
"checking_files": "Vérification des fichiers…",
|
||||
"starting_download": "Démarrage du téléchargement…",
|
||||
"remove_from_list": "Retirer",
|
||||
"delete": "Supprimer le programme d'installation",
|
||||
"delete_modal_description": "Cela supprimera tous les fichiers d'installation de votre ordinateur",
|
||||
"delete_modal_title": "Es-tu sûr?",
|
||||
@@ -111,16 +96,15 @@
|
||||
"change": "Mettre à jour",
|
||||
"notifications": "Notifications",
|
||||
"enable_download_notifications": "Quand un téléchargement est terminé",
|
||||
"enable_repack_list_notifications": "Quand une nouvelle réduction est ajoutée",
|
||||
"telemetry": "Télémétrie",
|
||||
"telemetry_description": "Activer les statistiques d'utilisation anonymes"
|
||||
"enable_repack_list_notifications": "Quand un nouveau repack est ajouté",
|
||||
"language": "Langue"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Téléchargement terminé",
|
||||
"game_ready_to_install": "{{title}} est prêt à être installé",
|
||||
"repack_list_updated": "Liste de réductions mise à jour",
|
||||
"repack_count_one": "{{count}} réduction ajoutée",
|
||||
"repack_count_other": "{{count}} réductions ajoutées"
|
||||
"repack_list_updated": "Liste de repacks mise à jour",
|
||||
"repack_count_one": "{{count}} repack ajouté",
|
||||
"repack_count_other": "{{count}} repacks ajoutés"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Ouvrir Hydra",
|
||||
|
||||
128
src/locales/hu/translation.json
Normal file
@@ -0,0 +1,128 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "Featured",
|
||||
"trending": "Népszerű",
|
||||
"surprise_me": "Lepj meg",
|
||||
"no_results": "Nem található"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Katalógus",
|
||||
"downloads": "Letöltések",
|
||||
"settings": "Beállítások",
|
||||
"my_library": "Könyvtáram",
|
||||
"downloading_metadata": "{{title}} (Metadata letöltése…)",
|
||||
"paused": "{{title}} (Szünet)",
|
||||
"downloading": "{{title}} ({{percentage}} - Letöltés…)",
|
||||
"filter": "Könyvtár szűrése",
|
||||
"home": "Főoldal"
|
||||
},
|
||||
"header": {
|
||||
"search": "Keresés",
|
||||
"home": "Főoldal",
|
||||
"catalogue": "Katalógus",
|
||||
"downloads": "Letöltések",
|
||||
"search_results": "Keresési eredmények",
|
||||
"settings": "Beállítások"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Nincsenek folyamatban lévő letöltések",
|
||||
"downloading_metadata": "{{title}} metaadatainak letöltése…",
|
||||
"downloading": "{{title}} letöltése… ({{percentage}} kész) - Befejezés {{eta}} - {{speed}}"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Következő olda",
|
||||
"previous_page": "Előző olda"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Letöltési lehetőségek",
|
||||
"download_options_zero": "Nincs letöltési lehetőség",
|
||||
"download_options_one": "{{count}} letöltési lehetőség",
|
||||
"download_options_other": "{{count}} letöltési lehetőség",
|
||||
"updated_at": "Frissítve: {{updated_at}}",
|
||||
"install": "Letöltés",
|
||||
"resume": "Folytatás",
|
||||
"pause": "Szüneteltetés",
|
||||
"cancel": "Mégse",
|
||||
"remove": "Eltávolítás",
|
||||
"space_left_on_disk": "{{space}} szabad hely a lemezen",
|
||||
"eta": "Befejezés {{eta}}",
|
||||
"downloading_metadata": "Metaadatok letöltése…",
|
||||
"filter": "Repackek szűrése",
|
||||
"requirements": "Rendszerkövetelmények",
|
||||
"minimum": "Minimális",
|
||||
"recommended": "Ajánlott",
|
||||
"release_date": "Megjelenés: {{date}}",
|
||||
"publisher": "Kiadta: {{publisher}}",
|
||||
"hours": "óra",
|
||||
"minutes": "perc",
|
||||
"amount_hours": "{{amount}} óra",
|
||||
"amount_minutes": "{{amount}} perc",
|
||||
"accuracy": "{{accuracy}}% pontosság",
|
||||
"add_to_library": "Hozzáadás a könyvtárhoz",
|
||||
"remove_from_library": "Eltávolítás a könyvtárból",
|
||||
"no_downloads": "Nincs elérhető letöltés",
|
||||
"play_time": "Játszva: {{amount}}",
|
||||
"last_time_played": "Utoljára játszva {{period}}",
|
||||
"not_played_yet": "{{title}} még nem játszottál",
|
||||
"next_suggestion": "Következő javaslat",
|
||||
"play": "Játék",
|
||||
"deleting": "Telepítő törlése…",
|
||||
"close": "Bezárás",
|
||||
"playing_now": "Jelenleg játszva",
|
||||
"change": "Változtatás",
|
||||
"repacks_modal_description": "Choose the repack you want to download",
|
||||
"select_folder_hint": "Ahhoz, hogy megváltoztasd a helyet, hozzákell férned a",
|
||||
"download_now": "Töltsd le most"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Hydra Aktiválása",
|
||||
"installation_id": "Telepítési ID:",
|
||||
"enter_activation_code": "Add meg az aktiválási kódodat",
|
||||
"message": "Ha nem tudod, hol kérdezd meg ezt, akkor nem is kellene, hogy legyen ilyened.",
|
||||
"activate": "Aktiválás",
|
||||
"loading": "Betöltés…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Folytatás",
|
||||
"pause": "Szüneteltetés",
|
||||
"eta": "Befejezés {{eta}}",
|
||||
"paused": "Szüneteltetve",
|
||||
"verifying": "Ellenőrzés…",
|
||||
"completed": "Befejezve",
|
||||
"cancel": "Mégse",
|
||||
"filter": "Letöltött játékok szűrése",
|
||||
"remove": "Eltávolítás",
|
||||
"downloading_metadata": "Metaadatok letöltése…",
|
||||
"deleting": "Telepítő törlése…",
|
||||
"delete": "Telepítő eltávolítása",
|
||||
"delete_modal_title": "Biztos vagy benne?",
|
||||
"delete_modal_description": "Ez eltávolít minden telepítési fájlt a számítógépedről",
|
||||
"install": "Telepítés"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Letöltések helye",
|
||||
"change": "Frissítés",
|
||||
"notifications": "Értesítések",
|
||||
"enable_download_notifications": "Amikor egy letöltés befejeződik",
|
||||
"enable_repack_list_notifications": "Amikor egy új repack hozzáadásra kerül"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Letöltés befejeződött",
|
||||
"game_ready_to_install": "{{title}} telepítésre kész",
|
||||
"repack_list_updated": "Repack lista frissítve",
|
||||
"repack_count_one": "{{count}} repack hozzáadva",
|
||||
"repack_count_other": "{{count}} repack hozzáadva"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Hydra megnyitása",
|
||||
"quit": "Kilépés"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Nincs elérhető letöltés"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "A programok nincsenek telepítve",
|
||||
"description": "A Wine vagy a Lutris végrehajtható fájljai nem találhatók a rendszereden",
|
||||
"instructions": "Ellenőrizd a megfelelő telepítési módot bármelyiküknek a Linux disztribúciódon, hogy a játék normálisan fusson"
|
||||
}
|
||||
}
|
||||
134
src/locales/id/translation.json
Normal file
@@ -0,0 +1,134 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "Unggulan",
|
||||
"trending": "Trending",
|
||||
"surprise_me": "Kejutkan Saya",
|
||||
"no_results": "Tidak ada hasil"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Katalog",
|
||||
"downloads": "Unduhan",
|
||||
"settings": "Pengaturan",
|
||||
"my_library": "Koleksi saya",
|
||||
"downloading_metadata": "{{title}} (Mengunduh metadata…)",
|
||||
"paused": "{{title}} (Terhenti)",
|
||||
"downloading": "{{title}} ({{percentage}} - Mengunduh…)",
|
||||
"filter": "Filter koleksi",
|
||||
"home": "Beranda"
|
||||
},
|
||||
"header": {
|
||||
"search": "Pencarian",
|
||||
"home": "Beranda",
|
||||
"catalogue": "Katalog",
|
||||
"downloads": "Unduhan",
|
||||
"search_results": "Hasil pencarian",
|
||||
"settings": "Pengaturan"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Tidak ada unduhan berjalan",
|
||||
"downloading_metadata": "Mengunduh metadata {{title}}...",
|
||||
"downloading": "Mengunduh {{title}}… ({{percentage}} selesai) - Perkiraan {{eta}} - {{speed}}"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Halaman berikutnya",
|
||||
"previous_page": "Halaman sebelumnya"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Buka opsi unduhan",
|
||||
"download_options_zero": "Tidak ada opsi unduhan",
|
||||
"download_options_one": "{{count}} opsi unduhan",
|
||||
"download_options_other": "{{count}} opsi unduhan",
|
||||
"updated_at": "Diperbarui {{updated_at}}",
|
||||
"install": "Install",
|
||||
"resume": "Lanjutkan",
|
||||
"pause": "Hentikan sementara",
|
||||
"cancel": "Batalkan",
|
||||
"remove": "Hapus",
|
||||
"space_left_on_disk": "{{space}} tersisa pada disk",
|
||||
"eta": "Perkiraan {{eta}}",
|
||||
"downloading_metadata": "Mengunduh metadata…",
|
||||
"filter": "Saring repacks",
|
||||
"requirements": "Keperluan sistem",
|
||||
"minimum": "Minimum",
|
||||
"recommended": "Rekomendasi",
|
||||
"release_date": "Dirilis pada {{date}}",
|
||||
"publisher": "Dipublikasikan oleh {{publisher}}",
|
||||
"hours": "jam",
|
||||
"minutes": "menit",
|
||||
"amount_hours": "{{amount}} jam",
|
||||
"amount_minutes": "{{amount}} menit",
|
||||
"accuracy": "{{accuracy}}% akurasi",
|
||||
"add_to_library": "Tambahkan ke koleksi",
|
||||
"remove_from_library": "Hapus dari koleksi",
|
||||
"no_downloads": "Tidak ada unduhan tersedia",
|
||||
"play_time": "Dimainkan selama {{amount}}",
|
||||
"last_time_played": "Terakhir dimainkan {{period}}",
|
||||
"not_played_yet": "Kamu belum memainkan {{title}}",
|
||||
"next_suggestion": "Rekomendasi berikutnya",
|
||||
"play": "Mainkan",
|
||||
"deleting": "Menghapus installer…",
|
||||
"close": "Tutup",
|
||||
"playing_now": "Memainkan sekarang",
|
||||
"change": "Ubah",
|
||||
"repacks_modal_description": "Pilih repack yang kamu ingin unduh",
|
||||
"select_folder_hint": "Untuk merubah folder bawaan, akses melalui",
|
||||
"download_now": "Unduh sekarang"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Aktivasi Hydra",
|
||||
"installation_id": "ID instalasi:",
|
||||
"enter_activation_code": "Masukkan kode aktivasi",
|
||||
"message": "Jika kamu tidak tau dimana bertanya untuk ini, maka kamu tidak seharusnya memiliki ini.",
|
||||
"activate": "Aktifkan",
|
||||
"loading": "Memuat…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Lanjutkan",
|
||||
"pause": "Hentikan sementara",
|
||||
"eta": "Perkiraan {{eta}}",
|
||||
"paused": "Terhenti sementara",
|
||||
"verifying": "Memeriksa…",
|
||||
"completed": "Selesai",
|
||||
"cancel": "Batalkan",
|
||||
"filter": "Saring game yang diunduh",
|
||||
"remove": "Hapus",
|
||||
"downloading_metadata": "Mengunduh metadata…",
|
||||
"deleting": "Menghapus file instalasi…",
|
||||
"delete": "Hapus file instalasi",
|
||||
"delete_modal_title": "Kamu yakin?",
|
||||
"delete_modal_description": "Proses ini akan menghapus semua file instalasi dari komputer kamu",
|
||||
"install": "Install"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Lokasi unduhan",
|
||||
"change": "Perbarui",
|
||||
"notifications": "Pengingat",
|
||||
"enable_download_notifications": "Saat unduhan selesai",
|
||||
"enable_repack_list_notifications": "Saat repack terbaru ditambahkan",
|
||||
"behavior": "Perilaku",
|
||||
"quit_app_instead_hiding": "Tutup aplikasi alih-alih menyembunyikan aplikasi",
|
||||
"launch_with_system": "Jalankan saat memulai sistem"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Unduhan selesai",
|
||||
"game_ready_to_install": "{{title}} sudah siap untuk instalasi",
|
||||
"repack_list_updated": "Daftar repack diperbarui",
|
||||
"repack_count_one": "{{count}} repack ditambahkan",
|
||||
"repack_count_other": "{{count}} repack ditambahkan"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Buka Hydra",
|
||||
"quit": "Tutup"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Tidak ada unduhan tersedia"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Program tidak terinstal",
|
||||
"description": "Wine atau Lutris exe tidak ditemukan pada sistem kamu",
|
||||
"instructions": "Periksa cara instalasi yang benar pada Linux distro-mu agar game dapat dimainkan dengan benar"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Tombol tutup"
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,21 @@
|
||||
export { default as en } from "./en/translation.json";
|
||||
export { default as pt } from "./pt/translation.json";
|
||||
export { default as es } from "./es/translation.json";
|
||||
export { default as nl } from "./nl/translation.json";
|
||||
export { default as fr } from "./fr/translation.json";
|
||||
export { default as hu } from "./hu/translation.json";
|
||||
export { default as it } from "./it/translation.json";
|
||||
export { default as pl } from "./pl/translation.json";
|
||||
export { default as ru } from "./ru/translation.json";
|
||||
export { default as tr } from "./tr/translation.json";
|
||||
export { default as be } from "./be/translation.json";
|
||||
export { default as uk } from "./uk/translation.json";
|
||||
export { default as zh } from "./zh/translation.json";
|
||||
export { default as id } from "./id/translation.json";
|
||||
export { default as ko } from "./ko/translation.json";
|
||||
export { default as da } from "./da/translation.json";
|
||||
export { default as ar } from "./ar/translation.json";
|
||||
export { default as fa } from "./fa/translation.json";
|
||||
export { default as ro } from "./ro/translation.json";
|
||||
export { default as ca } from "./ca/translation.json";
|
||||
export { default as kk } from "./kk/translation.json";
|
||||
|
||||
146
src/locales/it/translation.json
Normal file
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "In primo piano",
|
||||
"trending": "Di tendenza",
|
||||
"surprise_me": "Sorprendimi",
|
||||
"no_results": "Nessun risultato trovato"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Catalogo",
|
||||
"downloads": "Download",
|
||||
"settings": "Impostazioni",
|
||||
"my_library": "La mia libreria",
|
||||
"downloading_metadata": "{{title}} (Scaricamento metadati…)",
|
||||
"paused": "{{title}} (In pausa)",
|
||||
"downloading": "{{title}} ({{percentage}} - Download…)",
|
||||
"filter": "Filtra libreria",
|
||||
"home": "Home"
|
||||
},
|
||||
"header": {
|
||||
"search": "Cerca",
|
||||
"home": "Home",
|
||||
"catalogue": "Catalogo",
|
||||
"downloads": "Download",
|
||||
"search_results": "Risultati della ricerca",
|
||||
"settings": "Impostazioni"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Nessun download in corso",
|
||||
"downloading_metadata": "Scaricamento metadati di {{title}}…",
|
||||
"downloading": "Download di {{title}}… ({{percentage}} completato) - Conclusione {{eta}} - {{speed}}"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Pagina successiva",
|
||||
"previous_page": "Pagina precedente"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Apri opzioni di download",
|
||||
"download_options_zero": "Nessuna opzione di download",
|
||||
"download_options_one": "{{count}} opzione di download",
|
||||
"download_options_other": "{{count}} opzioni di download",
|
||||
"updated_at": "Aggiornato il {{updated_at}}",
|
||||
"install": "Installa",
|
||||
"resume": "Riprendi",
|
||||
"pause": "Metti in pausa",
|
||||
"cancel": "Annulla",
|
||||
"remove": "Rimuovi",
|
||||
"space_left_on_disk": "{{space}} rimasto sul disco",
|
||||
"eta": "Conclusione {{eta}}",
|
||||
"downloading_metadata": "Scaricamento metadati…",
|
||||
"filter": "Filtra repack",
|
||||
"requirements": "Requisiti di sistema",
|
||||
"minimum": "Minimi",
|
||||
"recommended": "Consigliati",
|
||||
"release_date": "Rilasciato il {{date}}",
|
||||
"publisher": "Pubblicato da {{publisher}}",
|
||||
"hours": "ore",
|
||||
"minutes": "minuti",
|
||||
"amount_hours": "{{amount}} ore",
|
||||
"amount_minutes": "{{amount}} minuti",
|
||||
"accuracy": "{{accuracy}}% di accuratezza",
|
||||
"add_to_library": "Aggiungi alla libreria",
|
||||
"remove_from_library": "Rimuovi dalla libreria",
|
||||
"no_downloads": "Nessun download disponibile",
|
||||
"play_time": "Giocato per {{amount}}",
|
||||
"last_time_played": "Ultimo gioco giocato {{period}}",
|
||||
"not_played_yet": "Non hai ancora giocato a {{title}}",
|
||||
"next_suggestion": "Prossimo suggerimento",
|
||||
"play": "Gioca",
|
||||
"deleting": "Eliminazione dell'installer…",
|
||||
"close": "Chiudi",
|
||||
"playing_now": "Stai giocando adesso",
|
||||
"change": "Aggiorna",
|
||||
"repacks_modal_description": "Scegli il repack che vuoi scaricare",
|
||||
"select_folder_hint": "Per cambiare la cartella predefinita, accedi alle",
|
||||
"download_now": "Scarica ora",
|
||||
"no_shop_details": "Impossibile recuperare i dettagli del negozio.",
|
||||
"download_options": "Opzioni di download",
|
||||
"download_path": "Percorso di download",
|
||||
"previous_screenshot": "Screenshot precedente",
|
||||
"next_screenshot": "Screenshot successivo",
|
||||
"screenshot": "Screenshot {{number}}",
|
||||
"open_screenshot": "Apri screenshot {{number}}"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Attiva Hydra",
|
||||
"installation_id": "ID installazione:",
|
||||
"enter_activation_code": "Inserisci il tuo codice di attivazione",
|
||||
"message": "Se non sai dove chiederlo, allora non dovresti averlo.",
|
||||
"activate": "Attiva",
|
||||
"loading": "Caricamento…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Riprendi",
|
||||
"pause": "Metti in pausa",
|
||||
"eta": "Conclusione {{eta}}",
|
||||
"paused": "In pausa",
|
||||
"verifying": "Verifica…",
|
||||
"completed": "Completato",
|
||||
"cancel": "Annulla",
|
||||
"filter": "Filtra giochi scaricati",
|
||||
"remove": "Rimuovi",
|
||||
"downloading_metadata": "Scaricamento metadati…",
|
||||
"deleting": "Eliminazione dell'installer…",
|
||||
"delete": "Rimuovi installer",
|
||||
"delete_modal_title": "Sei sicuro?",
|
||||
"delete_modal_description": "Questo rimuoverà tutti i file di installazione dal tuo computer",
|
||||
"install": "Installa"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Percorso dei download",
|
||||
"change": "Aggiorna",
|
||||
"notifications": "Notifiche",
|
||||
"enable_download_notifications": "Quando un download è completo",
|
||||
"enable_repack_list_notifications": "Quando viene aggiunto un nuovo repack",
|
||||
"real_debrid_api_token_label": "Token API Real Debrid",
|
||||
"quit_app_instead_hiding": "Esci da Hydra invece di nascondere nell'area di notifica",
|
||||
"launch_with_system": "Apri Hydra all'avvio",
|
||||
"general": "Generale",
|
||||
"behavior": "Comportamento",
|
||||
"enable_real_debrid": "Abilita Real Debrid",
|
||||
"real_debrid_api_token_hint": "Puoi trovare la tua chiave API <0>here</0>",
|
||||
"save_changes": "Salva modifiche"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Download completato",
|
||||
"game_ready_to_install": "{{title}} è pronto per l'installazione",
|
||||
"repack_list_updated": "Elenco repack aggiornato",
|
||||
"repack_count_one": "{{count}} repack aggiunto",
|
||||
"repack_count_other": "{{count}} repack aggiunti"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Apri Hydra",
|
||||
"quit": "Esci"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Nessun download disponibile"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programmi non installati",
|
||||
"description": "Gli eseguibili di Wine o Lutris non sono stati trovati sul tuo sistema",
|
||||
"instructions": "Verifica il modo corretto di installare uno di essi sulla tua distribuzione Linux in modo che il gioco possa funzionare normalmente"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Pulsante Chiudi"
|
||||
}
|
||||
}
|
||||
242
src/locales/kk/translation.json
Normal file
@@ -0,0 +1,242 @@
|
||||
{
|
||||
"app": {
|
||||
"successfully_signed_in": "Сәтті кіру"
|
||||
},
|
||||
"home": {
|
||||
"featured": "Ұсынылған",
|
||||
"trending": "Трендте",
|
||||
"surprise_me": "Таңқалдыр",
|
||||
"no_results": "Ештеңе табылмады"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Каталог",
|
||||
"downloads": "Жүктеулер",
|
||||
"settings": "Параметрлер",
|
||||
"my_library": "Кітапхана",
|
||||
"downloading_metadata": "{{title}} (Метадеректерді жүктеу…)",
|
||||
"paused": "{{title}} (Тоқтатылды)",
|
||||
"downloading": "{{title}} ({{percentage}} - Жүктеу…)",
|
||||
"filter": "Кітапхана фильтрі",
|
||||
"home": "Басты бет",
|
||||
"queued": "{{title}} (Кезекте)",
|
||||
"game_has_no_executable": "Ойынды іске қосу файлы таңдалмаған",
|
||||
"sign_in": "Кіру"
|
||||
},
|
||||
"header": {
|
||||
"search": "Іздеу",
|
||||
"home": "Басты бет",
|
||||
"catalogue": "Каталог",
|
||||
"downloads": "Жүктеулер",
|
||||
"search_results": "Іздеу нәтижелері",
|
||||
"settings": "Параметрлер",
|
||||
"version_available_install": "Қол жетімді нұсқа {{version}}. Қайта іске қосу және орнату үшін мұнда басыңыз.",
|
||||
"version_available_download": "Қол жетімді нұсқа {{version}}. Жүктеу үшін мұнда басыңыз."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Белсенді жүктеулер жоқ",
|
||||
"downloading_metadata": "Метадеректерді жүктеу {{title}}…",
|
||||
"downloading": "Жүктеу {{title}}… ({{percentage}} аяқталды) - Аяқтау {{eta}} - {{speed}}",
|
||||
"calculating_eta": "Жүктеу {{title}}… ({{percentage}} аяқталды) - Қалған уақытты есептеу…"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Келесі бет",
|
||||
"previous_page": "Алдыңғы бет"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Жүктеу нұсқаларын ашу",
|
||||
"download_options_zero": "Жүктеу нұсқалары жоқ",
|
||||
"download_options_one": "{{count}} жүктеу нұсқасы",
|
||||
"download_options_other": "{{count}} жүктеу нұсқалары",
|
||||
"updated_at": "Жаңартылды {{updated_at}}",
|
||||
"install": "Орнату",
|
||||
"resume": "Жандандыру",
|
||||
"pause": "Тоқтату",
|
||||
"cancel": "Болдырмау",
|
||||
"remove": "Жою",
|
||||
"space_left_on_disk": "{{space}} бос орын",
|
||||
"eta": "Аяқтау {{eta}}",
|
||||
"calculating_eta": "Қалған уақытты есептеу…",
|
||||
"downloading_metadata": "Метадеректерді жүктеу…",
|
||||
"filter": "Репактар фильтрі",
|
||||
"requirements": "Жүйелік талаптар",
|
||||
"minimum": "Минималды",
|
||||
"recommended": "Ұсынылған",
|
||||
"paused": "Тоқтатылды",
|
||||
"release_date": "Шыққан күні {{date}}",
|
||||
"publisher": "Баспагер {{publisher}}",
|
||||
"hours": "сағат",
|
||||
"minutes": "минут",
|
||||
"amount_hours": "{{amount}} сағат",
|
||||
"amount_minutes": "{{amount}} минут",
|
||||
"accuracy": "дәлдік {{accuracy}}%",
|
||||
"add_to_library": "Кітапханаға қосу",
|
||||
"remove_from_library": "Кітапханадан жою",
|
||||
"no_downloads": "Жүктеулер жоқ",
|
||||
"play_time": "Ойнау уақыты {{amount}}",
|
||||
"last_time_played": "Соңғы ойнаған уақыт {{period}}",
|
||||
"not_played_yet": "Сіз {{title}} ойнамағансыз",
|
||||
"next_suggestion": "Келесі ұсыныс",
|
||||
"play": "Ойнау",
|
||||
"deleting": "Орнатушыны жою…",
|
||||
"close": "Жабу",
|
||||
"playing_now": "Қазір ойнап жатыр",
|
||||
"change": "Өзгерту",
|
||||
"repacks_modal_description": "Жүктеу үшін репакты таңдаңыз",
|
||||
"select_folder_hint": "Әдепкі жүктеу қалтасын өзгерту үшін <0>Параметрлер</0> ашыңыз",
|
||||
"download_now": "Қазір жүктеу",
|
||||
"no_shop_details": "Сипаттаманы алу мүмкін болмады",
|
||||
"download_options": "Жүктеу нұсқалары",
|
||||
"download_path": "Жүктеу жолы",
|
||||
"previous_screenshot": "Алдыңғы скриншот",
|
||||
"next_screenshot": "Келесі скриншот",
|
||||
"screenshot": "Скриншот {{number}}",
|
||||
"open_screenshot": "Скриншотты ашу {{number}}",
|
||||
"download_settings": "Жүктеу параметрлері",
|
||||
"downloader": "Жүктегіш",
|
||||
"select_executable": "Таңдау",
|
||||
"no_executable_selected": "Файл таңдалмаған",
|
||||
"open_folder": "Қалтаны ашу",
|
||||
"open_download_location": "Жүктеу қалтасын қарау",
|
||||
"create_shortcut": "Жұмыс үстелінде жарлық жасау",
|
||||
"remove_files": "Файлдарды жою",
|
||||
"remove_from_library_title": "Сіз сенімдісіз бе?",
|
||||
"remove_from_library_description": "{{game}} сіздің кітапханаңыздан жойылады.",
|
||||
"options": "Параметрлер",
|
||||
"executable_section_title": "Файл",
|
||||
"executable_section_description": "\"Ойнау\" батырмасын басқанда іске қосылатын файл жолы",
|
||||
"downloads_secion_title": "Жүктеулер",
|
||||
"downloads_section_description": "Ойынның жаңартулары немесе басқа нұсқалары бар-жоғын тексеру",
|
||||
"danger_zone_section_title": "Қауіпті аймақ",
|
||||
"danger_zone_section_description": "Осы ойынды кітапханаңыздан жою немесе Hydra жүктеген файлдарды жою",
|
||||
"download_in_progress": "Жүктеу жүріп жатыр",
|
||||
"download_paused": "Жүктеу тоқтатылды",
|
||||
"last_downloaded_option": "Соңғы жүктеу нұсқасы",
|
||||
"create_shortcut_success": "Жарлық жасалды",
|
||||
"create_shortcut_error": "Жарлық жасау мүмкін болмады"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Hydra-ны белсендіру",
|
||||
"installation_id": "Орнату ID:",
|
||||
"enter_activation_code": "Активтендіру кодын енгізіңіз",
|
||||
"message": "Егер оның қайдан алуға болатынын білмесеңіз, сізде оның болмауы керек.",
|
||||
"activate": "Белсендіру",
|
||||
"loading": "Жүктеу…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Жандандыру",
|
||||
"pause": "Тоқтату",
|
||||
"eta": "Аяқтау {{eta}}",
|
||||
"paused": "Тоқтатылды",
|
||||
"verifying": "Тексеру…",
|
||||
"completed": "Аяқталды",
|
||||
"removed": "Жүктелмеген",
|
||||
"cancel": "Болдырмау",
|
||||
"filter": "Жүктелген ойындар фильтрі",
|
||||
"remove": "Жою",
|
||||
"downloading_metadata": "Метадеректерді жүктеу…",
|
||||
"deleting": "Орнатушыны жою…",
|
||||
"delete": "Орнатушыны жою",
|
||||
"delete_modal_title": "Сіз сенімдісіз бе?",
|
||||
"delete_modal_description": "Бұл барлық орнатушыларды компьютеріңізден жояды",
|
||||
"install": "Орнату",
|
||||
"download_in_progress": "Жүктеу жүріп жатыр",
|
||||
"queued_downloads": "Кезектегі жүктеулер",
|
||||
"downloads_completed": "Аяқталды",
|
||||
"queued": "Кезекте",
|
||||
"no_downloads_title": "Мұнда бос...",
|
||||
"no_downloads_description": "Сіз Hydra арқылы әлі ештеңе жүктемегенсіз, бірақ бастау ешқашан кеш емес."
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Жүктеу жолы",
|
||||
"change": "Өзгерту",
|
||||
"notifications": "Хабарламалар",
|
||||
"enable_download_notifications": "Жүктеу аяқталғанда",
|
||||
"enable_repack_list_notifications": "Жаңа репак қосылғанда",
|
||||
"real_debrid_api_token_label": "Real-Debrid API-токен",
|
||||
"quit_app_instead_hiding": "Hydra-ны трейге жасырудың орнына жабу",
|
||||
"launch_with_system": "Жүйемен бірге Hydra-ны іске қосу",
|
||||
"general": "Жалпы",
|
||||
"behavior": "Мінез-құлық",
|
||||
"download_sources": "Жүктеу көздері",
|
||||
"language": "Тіл",
|
||||
"real_debrid_api_token": "API Кілті",
|
||||
"enable_real_debrid": "Real-Debrid-ті қосу",
|
||||
"real_debrid_description": "Real-Debrid - бұл шектеусіз жүктеуші, ол интернетте орналастырылған файлдарды тез жүктеуге немесе жеке желі арқылы кез келген блоктарды айналып өтіп, оларды бірден плеерге беруге мүмкіндік береді.",
|
||||
"real_debrid_invalid_token": "Қате API кілті",
|
||||
"real_debrid_api_token_hint": "API кілтін <0>осы жерден</0> алуға болады",
|
||||
"real_debrid_free_account_error": "\"{{username}}\" аккаунты жазылымға ие емес. Real-Debrid жазылымын алыңыз",
|
||||
"real_debrid_linked_message": "\"{{username}}\" аккаунты байланған",
|
||||
"save_changes": "Өзгерістерді сақтау",
|
||||
"changes_saved": "Өзгерістер сәтті сақталды",
|
||||
"download_sources_description": "Hydra осы көздерден жүктеу сілтемелерін алады. URL-да жүктеу сілтемелері бар .json файлына тікелей сілтеме болуы керек.",
|
||||
"validate_download_source": "Тексеру",
|
||||
"remove_download_source": "Жою",
|
||||
"add_download_source": "Жүктеу көзін қосу",
|
||||
"download_count_zero": "Жүктеулер тізімінде жоқ",
|
||||
"download_count_one": "{{countFormatted}} жүктеу тізімде",
|
||||
"download_count_other": "{{countFormatted}} жүктеу тізімде",
|
||||
"download_options_zero": "Қолжетімді жүктеулер жоқ",
|
||||
"download_options_one": "{{countFormatted}} жүктеу нұсқасы қол жетімді",
|
||||
"download_options_other": "{{countFormatted}} жүктеу нұсқалары қол жетімді",
|
||||
"download_source_url": "Көздің сілтемесі",
|
||||
"add_download_source_description": ".json файлға сілтемені қойыңыз",
|
||||
"download_source_up_to_date": "Жаңартылған",
|
||||
"download_source_errored": "Қате",
|
||||
"sync_download_sources": "Көздерді синхрондау",
|
||||
"removed_download_source": "Жүктеу көзі жойылды",
|
||||
"added_download_source": "Жүктеу көзі қосылды",
|
||||
"download_sources_synced": "Барлық жүктеу көздері синхрондалды",
|
||||
"insert_valid_json_url": "Жарамды JSON URL енгізіңіз",
|
||||
"found_download_option_zero": "Жүктеу нұсқалары табылмады",
|
||||
"found_download_option_one": "{{countFormatted}} жүктеу нұсқасы табылды",
|
||||
"found_download_option_other": "{{countFormatted}} жүктеу нұсқалары табылды",
|
||||
"import": "Импорттау"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Жүктеу аяқталды",
|
||||
"game_ready_to_install": "{{title}} орнатуға дайын",
|
||||
"repack_list_updated": "Репактар тізімі жаңартылды",
|
||||
"repack_count_one": "{{count}} репак қосылды",
|
||||
"repack_count_other": "{{count}} репактар қосылды"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Hydra-ны ашу",
|
||||
"quit": "Шығу"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Жүктеулер жоқ"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Бағдарламалар орнатылмаған",
|
||||
"description": "Wine немесе Lutris табылмады",
|
||||
"instructions": "Linux дистрибутивіңізге олардың кез келгенін дұрыс орнатудың жолын біліңіз осылайша ойын дұрыс жұмыс істей алады"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Жабу"
|
||||
},
|
||||
"forms": {
|
||||
"toggle_password_visibility": "Құпиясөзді көрсету"
|
||||
},
|
||||
"user_profile": {
|
||||
"amount_hours": "{{amount}} сағат",
|
||||
"amount_minutes": "{{amount}} минут",
|
||||
"last_time_played": "Соңғы ойын {{period}}",
|
||||
"activity": "Соңғы әрекет",
|
||||
"library": "Кітапхана",
|
||||
"total_play_time": "Барлығы ойнаған: {{amount}}",
|
||||
"no_recent_activity_title": "Хммм... Мұнда ештеңе жоқ",
|
||||
"no_recent_activity_description": "Сіз ұзақ уақыт бойы ештеңе ойнаған жоқсыз. Мұны өзгерту керек!",
|
||||
"display_name": "Көрсету аты",
|
||||
"saving": "Сақтау",
|
||||
"save": "Сақталды",
|
||||
"edit_profile": "Профильді өзгерту",
|
||||
"saved_successfully": "Сәтті сақталды",
|
||||
"try_again": "Қайта көріңіз",
|
||||
"sign_out_modal_title": "Сіз сенімдісіз бе?",
|
||||
"cancel": "Болдырмау",
|
||||
"successfully_signed_out": "Аккаунттан сәтті шығу",
|
||||
"sign_out": "Шығу",
|
||||
"playing_for": "Ойнаған {{amount}}",
|
||||
"sign_out_modal_text": "Сіздің кітапханаңыз ағымдағы аккаунтпен байланысты. Жүйеден шыққанда сіздің кітапханаңыз қол жетімсіз болады және прогресс сақталмайды. Шығу?"
|
||||
}
|
||||
}
|
||||
138
src/locales/ko/translation.json
Normal file
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "추천",
|
||||
"trending": "인기",
|
||||
"surprise_me": "무작위 추천",
|
||||
"no_results": "결과 없음"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "카탈로그",
|
||||
"downloads": "다운로드",
|
||||
"settings": "설정",
|
||||
"my_library": "내 라이브러리",
|
||||
"downloading_metadata": "{{title}} (메타데이터 다운로드 중…)",
|
||||
"paused": "{{title}} (일시 정지됨)",
|
||||
"downloading": "{{title}} ({{percentage}} - 다운로드 중…)",
|
||||
"filter": "라이브러리 정렬",
|
||||
"home": "홈"
|
||||
},
|
||||
"header": {
|
||||
"search": "게임 검색하기",
|
||||
"home": "홈",
|
||||
"catalogue": "카탈로그",
|
||||
"downloads": "다운로드",
|
||||
"search_results": "검색 결과",
|
||||
"settings": "설정"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "진행중인 다운로드 없음",
|
||||
"downloading_metadata": "{{title}}의 메타데이터를 다운로드 중…",
|
||||
"downloading": "{{title}}의 파일들을 다운로드 중… ({{percentage}} 완료) - 완료까지 {{eta}} - {{speed}}"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "다음 페이지",
|
||||
"previous_page": "이전 페이지"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "다운로드 선택지 열기",
|
||||
"download_options_zero": "다운로드 선택지 없음",
|
||||
"download_options_one": "{{count}}개의 다운로드 선택지가 존재함",
|
||||
"download_options_other": "{{count}}개의 다운로드 선택지들이 존재함",
|
||||
"updated_at": "{{updated_at}}에 업데이트 됨",
|
||||
"install": "설치",
|
||||
"resume": "재개",
|
||||
"pause": "일시 정지",
|
||||
"cancel": "취소",
|
||||
"remove": "제거",
|
||||
"space_left_on_disk": "여유 저장 용량 {{space}} 남음",
|
||||
"eta": "완료까지 {{eta}}",
|
||||
"downloading_metadata": "메타데이터 다운로드 중…",
|
||||
"filter": "리팩들을 다음과 같이 정렬하기",
|
||||
"requirements": "시스템 사양",
|
||||
"minimum": "최저 사양",
|
||||
"recommended": "권장 사양",
|
||||
"release_date": "{{date}}에 발매됨",
|
||||
"publisher": "{{publisher}} 배급",
|
||||
"hours": "시",
|
||||
"minutes": "분",
|
||||
"amount_hours": "{{amount}} 시간",
|
||||
"amount_minutes": "{{amount}} 분",
|
||||
"accuracy": "정확도 {{accuracy}}%",
|
||||
"add_to_library": "라이브러리에 추가",
|
||||
"remove_from_library": "라이브러리에서 제거",
|
||||
"no_downloads": "가능한 다운로드 없음",
|
||||
"play_time": "{{amount}}동안 플레이 함",
|
||||
"last_time_played": "마지막 플레이 날짜 {{period}}",
|
||||
"not_played_yet": "{{title}}의 플레이 기록 아직 없음",
|
||||
"next_suggestion": "다음 추천",
|
||||
"play": "실행",
|
||||
"deleting": "인스톨러 삭제 중…",
|
||||
"close": "닫기",
|
||||
"playing_now": "현재 플레이 중",
|
||||
"change": "바꾸기",
|
||||
"repacks_modal_description": "다운로드 할 리팩을 선택해 주세요",
|
||||
"select_folder_hint": "기본 폴더를 바꾸려면 <0>설정</0>으로 가세요",
|
||||
"download_now": "지금 다운로드"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Hydra 실행",
|
||||
"installation_id": "설치 ID:",
|
||||
"enter_activation_code": "활성 코드를 입력하세요",
|
||||
"message": "이것을 어디에서 구해야 할 지 모르겠다면 애초에 갖고 있으면 안 됩니다.",
|
||||
"activate": "활성화",
|
||||
"loading": "불러오는중..."
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "재개",
|
||||
"pause": "일시 정지",
|
||||
"eta": "완료까지 {{eta}}",
|
||||
"paused": "일시 정지됨",
|
||||
"verifying": "검증중…",
|
||||
"completed": "완료됨",
|
||||
"cancel": "취소",
|
||||
"filter": "다운로드 된 게임들을 정렬하기",
|
||||
"remove": "제거하기",
|
||||
"downloading_metadata": "메타데이터 다운로드 중…",
|
||||
"deleting": "인스톨러 삭제 중…",
|
||||
"delete": "인스톨러 삭제하기",
|
||||
"delete_modal_title": "정말로 하시겠습니까?",
|
||||
"delete_modal_description": "이 기기의 모든 설치 파일들이 제거될 것입니다",
|
||||
"install": "설치"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "다운로드 경로",
|
||||
"change": "업데이트",
|
||||
"notifications": "알림",
|
||||
"enable_download_notifications": "다운로드가 완료되었을 때",
|
||||
"enable_repack_list_notifications": "새 리팩이 추가되었을 때",
|
||||
"quit_app_instead_hiding": "작업 표시줄 트레이로 최소화하는 대신 Hydra를 종료",
|
||||
"launch_with_system": "컴퓨터가 시작되었을 때 Hydra 실행",
|
||||
"general": "일반",
|
||||
"behavior": "행동",
|
||||
"enable_real_debrid": "Real-Debrid 활성화",
|
||||
"real_debrid_api_token_hint": "API 키를 <0>이곳</0>에서 얻으세요.",
|
||||
"save_changes": "변경 사항 저장"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "다운로드 완료",
|
||||
"game_ready_to_install": "이제 {{title}} 설치할 수 있습니다",
|
||||
"repack_list_updated": "리팩 목록 갱신됨",
|
||||
"repack_count_one": "{{count}}개의 리팩이 추가됨",
|
||||
"repack_count_other": "{{count}}개의 리팩들이 추가됨"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Hydra 열기",
|
||||
"quit": "닫기"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "가능한 다운로드 없음"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "프로그램이 설치되지 않음",
|
||||
"description": "Wine 또는 Lutris 실행 파일이 시스템에서 발견되지 않았습니다",
|
||||
"instructions": "게임이 정상적으로 실행될 수 있게 당신의 리눅스 배포판에 Wine 또는 Lutris를 올바르게 설치해 주세요"
|
||||
},
|
||||
"modal": {
|
||||
"close": "닫기 버튼"
|
||||
}
|
||||
}
|
||||
139
src/locales/nl/translation.json
Normal file
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "Uitgelicht",
|
||||
"trending": "Trending",
|
||||
"surprise_me": "Verrasing",
|
||||
"no_results": "Geen resultaten gevonden"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "catalogus",
|
||||
"downloads": "Downloads",
|
||||
"settings": "Instellingen",
|
||||
"my_library": "Mijn Bibliotheek",
|
||||
"downloading_metadata": "{{title}} (Downloading metadata…)",
|
||||
"paused": "{{title}} (Gepauzeerd)",
|
||||
"downloading": "{{title}} ({{percentage}} - Downloading…)",
|
||||
"filter": "Filter Bibliotheek",
|
||||
"home": "Home"
|
||||
},
|
||||
"header": {
|
||||
"search": "Zoek spellen",
|
||||
"home": "Home",
|
||||
"catalogue": "Bibliotheek",
|
||||
"downloads": "Downloads",
|
||||
"search_results": "Zoek resultaten",
|
||||
"settings": "Instellingen"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Geen Downloads bezig",
|
||||
"downloading_metadata": "Downloading {{title}} metadata…",
|
||||
"downloading": "Downloading {{title}}… ({{percentage}} complete) - Conclusion {{eta}} - {{speed}}"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Volgende Pagina",
|
||||
"previous_page": "Vorige Pagina"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Open download Instellingen",
|
||||
"download_options_zero": "Geen download Instellingen",
|
||||
"download_options_one": "{{count}} download Instellingen",
|
||||
"download_options_other": "{{count}} download Instellingen",
|
||||
"updated_at": "Geupdate {{updated_at}}",
|
||||
"install": "Instaleer",
|
||||
"resume": "Verder gaan",
|
||||
"pause": "Pauze",
|
||||
"cancel": "Stoppen",
|
||||
"remove": "Verwijderen",
|
||||
"space_left_on_disk": "{{space}} Over op schijf",
|
||||
"eta": "Conclusie {{eta}}",
|
||||
"downloading_metadata": "Downloading metadata…",
|
||||
"filter": "Filter repacks",
|
||||
"requirements": "Systeem vereisten",
|
||||
"minimum": "Minimaal",
|
||||
"recommended": "Aanbevolen",
|
||||
"release_date": "Uitgebracht op {{date}}",
|
||||
"publisher": "Gepubliceerd door {{publisher}}",
|
||||
"hours": "uren",
|
||||
"minutes": "minuten",
|
||||
"amount_hours": "{{amount}} uren",
|
||||
"amount_minutes": "{{amount}} minuten",
|
||||
"accuracy": "{{accuracy}}% nauwkeurigheid",
|
||||
"add_to_library": "Toevoegen aan bibliotheek",
|
||||
"remove_from_library": "Verwijderen uit bibliotheek",
|
||||
"no_downloads": "Geen downloads beschikbaar",
|
||||
"play_time": "Voor gespeeld {{amount}}",
|
||||
"last_time_played": "Laatst gespeeld {{period}}",
|
||||
"not_played_yet": "Je hebt nog niet gespeeld {{title}}",
|
||||
"next_suggestion": "Volgende suggestie",
|
||||
"play": "Speel",
|
||||
"deleting": "Installatieprogramma verwijderen…",
|
||||
"close": "Sluiten",
|
||||
"playing_now": "Speel nu",
|
||||
"change": "Verander",
|
||||
"repacks_modal_description": "Kies de herverpakking die u wilt downloaden",
|
||||
"select_folder_hint": "Om de standaardmap te wijzigen, gaat u naar <0>instellingen</0>",
|
||||
"download_now": "Download nu"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Activeer Hydra",
|
||||
"installation_id": "Installatie-ID:",
|
||||
"enter_activation_code": "Voer uw activatiecode in",
|
||||
"message": "Als je niet weet waar je dit moet vragen, dan moet je dit niet hebben.",
|
||||
"activate": "Activeren",
|
||||
"loading": "Bezig met laden…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Hervatten",
|
||||
"pause": "Pauze",
|
||||
"eta": "Conclusie{{eta}}",
|
||||
"paused": "Gepauzeerd",
|
||||
"verifying": "Verifiëren…",
|
||||
"completed": "Voltooid",
|
||||
"cancel": "Annuleren",
|
||||
"filter": "Filter gedownloade games",
|
||||
"remove": "Verwijderen",
|
||||
"downloading_metadata": "Metagegevens downloaden",
|
||||
"deleting": "Installatieprogramma verwijderen…",
|
||||
"delete": "Installatieprogramma verwijderen",
|
||||
"delete_modal_title": "Weet je het zeker?",
|
||||
"delete_modal_description": "Hiermee worden alle installatiebestanden van uw computer verwijderd",
|
||||
"install": "Installeren"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Downloadpad",
|
||||
"change": "Update",
|
||||
"notifications": "Meldingen",
|
||||
"enable_download_notifications": "Wanneer een download voltooid is",
|
||||
"enable_repack_list_notifications": "Wanneer een nieuwe herverpakking wordt toegevoegd",
|
||||
"real_debrid_api_token_label": "Real-Debrid API token",
|
||||
"quit_app_instead_hiding": "Sluit Hydra af in plaats van te minimaliseren naar de lade",
|
||||
"launch_with_system": "Start Hydra bij het opstarten van het systeem",
|
||||
"general": "Algemeen",
|
||||
"behavior": "Gedrag",
|
||||
"enable_real_debrid": "Enable Real-Debrid",
|
||||
"real_debrid_api_token_hint": "U kunt uw API-sleutel <0>hier</0> verkrijgen.",
|
||||
"save_changes": "Wijzigingen opslaan"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Download compleet",
|
||||
"game_ready_to_install": "{{title}} is klaar om te installeren",
|
||||
"repack_list_updated": "Herpaklijst bijgewerkt",
|
||||
"repack_count_one": "{{count}} herverpakking toegevoegd",
|
||||
"repack_count_other": "{{count}} herverpakkingen toegevoegd"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Open Hydra",
|
||||
"quit": "Verlaten"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Geen downloads beschikbaar"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programma's niet geïnstalleerd",
|
||||
"description": "Er zijn geen uitvoerbare bestanden van Wine of Lutris gevonden op uw systeem",
|
||||
"instructions": "Controleer de juiste manier om ze op je Linux-distro te installeren, zodat de game normaal kan werken"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Knop Sluiten"
|
||||
}
|
||||
}
|
||||
147
src/locales/pl/translation.json
Normal file
@@ -0,0 +1,147 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "Wyróżnione",
|
||||
"trending": "Trendujące",
|
||||
"surprise_me": "Zaskocz mnie",
|
||||
"no_results": "Nie znaleziono wyników"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Katalog",
|
||||
"downloads": "Pobrane",
|
||||
"settings": "Ustawienia",
|
||||
"my_library": "Moja biblioteka",
|
||||
"downloading_metadata": "{{title}} (Pobieranie metadata…)",
|
||||
"paused": "{{title}} (Zatrzymano)",
|
||||
"downloading": "{{title}} ({{percentage}} - Pobieranie…)",
|
||||
"filter": "Filtruj biblioteke",
|
||||
"home": "Główna"
|
||||
},
|
||||
"header": {
|
||||
"search": "Szukaj",
|
||||
"home": "Główna",
|
||||
"catalogue": "Katalog",
|
||||
"downloads": "Pobrane",
|
||||
"search_results": "Wyniki wyszukiwania",
|
||||
"settings": "Ustawienia"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Brak pobierań w toku",
|
||||
"downloading_metadata": "Pobieranie {{title}} metadata…",
|
||||
"downloading": "Pobieranie {{title}}… (ukończone w {{percentage}}) - Podsumowanie {{eta}} - {{speed}}"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Następna strona",
|
||||
"previous_page": "Poprzednia strona"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Otwórz opcje pobierania",
|
||||
"download_options_zero": "Brak opcji pobierania",
|
||||
"download_options_one": "{{count}} opcja pobierania",
|
||||
"download_options_other": "{{count}} opcji pobierania",
|
||||
"updated_at": "Zaktualizowano {{updated_at}}",
|
||||
"install": "Instaluj",
|
||||
"resume": "Wznów",
|
||||
"pause": "Zatrzymaj",
|
||||
"cancel": "Anuluj",
|
||||
"remove": "Usuń",
|
||||
"space_left_on_disk": "{{space}} wolnego na dysku",
|
||||
"eta": "Podsumowanie {{eta}}",
|
||||
"downloading_metadata": "Pobieranie metadata…",
|
||||
"filter": "Filtruj repacki",
|
||||
"requirements": "Wymagania systemowe",
|
||||
"minimum": "Minimalne",
|
||||
"recommended": "Zalecane",
|
||||
"release_date": "Wydano w {{date}}",
|
||||
"publisher": "Opublikowany przez {{publisher}}",
|
||||
"hours": "godzin",
|
||||
"minutes": "minut",
|
||||
"amount_hours": "{{amount}} godzin",
|
||||
"amount_minutes": "{{amount}} minut",
|
||||
"accuracy": "{{accuracy}}% dokładność",
|
||||
"add_to_library": "Dodaj do biblioteki",
|
||||
"remove_from_library": "Usuń z biblioteki",
|
||||
"no_downloads": "Brak dostępnych plików do pobrania",
|
||||
"play_time": "Grano przez {{amount}}",
|
||||
"last_time_played": "Ostatnio grano {{period}}",
|
||||
"not_played_yet": "Nie grano {{title}}",
|
||||
"next_suggestion": "Następna sugestia",
|
||||
"play": "Graj",
|
||||
"deleting": "Usuwanie instalatora…",
|
||||
"close": "Zamknij",
|
||||
"playing_now": "Granie teraz",
|
||||
"change": "Zmień",
|
||||
"repacks_modal_description": "Wybierz repack, który chcesz pobrać",
|
||||
"select_folder_hint": "Aby zmienić domyślny folder, przejdź do",
|
||||
"download_now": "Pobierz teraz",
|
||||
"no_shop_details": "Nie udało się pobrać danych sklepu.",
|
||||
"download_options": "Opcje pobierania",
|
||||
"download_path": "Ścieżka pobierania",
|
||||
"previous_screenshot": "Poprzedni zrzut ekranu",
|
||||
"next_screenshot": "Następny zrzut ekranu",
|
||||
"screenshot": "Zrzut ekranu {{number}}",
|
||||
"open_screenshot": "Otwórz zrzut ekranu {{number}}"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Aktywuj Hydra",
|
||||
"installation_id": "Identyfikator instalacji:",
|
||||
"enter_activation_code": "Enter your activation code",
|
||||
"message": "Jeśli nie wiesz, gdzie o to poprosić, to nie powinieneś/aś tego mieć.",
|
||||
"activate": "Aktywuj",
|
||||
"loading": "Ładowanie…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Wznów",
|
||||
"pause": "Zatrzymaj",
|
||||
"eta": "Podsumowanie {{eta}}",
|
||||
"paused": "Zatrzymano",
|
||||
"verifying": "Weryfikowanie…",
|
||||
"completed": "Zakończono",
|
||||
"cancel": "Anuluj",
|
||||
"filter": "Filtruj pobrane gry",
|
||||
"remove": "Usuń",
|
||||
"downloading_metadata": "Pobieranie metadata…",
|
||||
"deleting": "Usuwanie instalatora…",
|
||||
"delete": "Usuń instalator",
|
||||
"delete_modal_title": "Czy na pewno?",
|
||||
"delete_modal_description": "Spowoduje to usunięcie wszystkich plików instalacyjnych z komputera",
|
||||
"install": "Instaluj"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Ścieżka pobierania",
|
||||
"change": "Aktualizuj",
|
||||
"notifications": "Powiadomienia",
|
||||
"enable_download_notifications": "Gdy pobieranie zostanie zakończone",
|
||||
"enable_repack_list_notifications": "Gdy dodawany jest nowy repack",
|
||||
"real_debrid_api_token_label": "Real-Debrid API token",
|
||||
"quit_app_instead_hiding": "Zamknij Hydr zamiast minimalizować do zasobnika",
|
||||
"launch_with_system": "Uruchom Hydra przy starcie systemu",
|
||||
"general": "Ogólne",
|
||||
"behavior": "Zachowania",
|
||||
"language": "Język",
|
||||
"enable_real_debrid": "Włącz Real-Debrid",
|
||||
"real_debrid_api_token_hint": "Możesz uzyskać swój klucz API <0>tutaj</0>",
|
||||
"save_changes": "Zapisz zmiany"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Pobieranie zakończone",
|
||||
"game_ready_to_install": "{{title}} jest gotowe do zainstalowania",
|
||||
"repack_list_updated": "Lista repacków zaktualizowana",
|
||||
"repack_count_one": "{{count}} repack dodany",
|
||||
"repack_count_other": "{{count}} repacki dodane"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Otwórz Hydra",
|
||||
"quit": "Wyjdź"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Brak dostępnych plików do pobrania"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programy nie są zainstalowane",
|
||||
"description": "Pliki wykonywalne Wine lub Lutris nie zostały znalezione na twoim systemie",
|
||||
"instructions": "Sprawdź prawidłowy sposób instalacji dowolnego z nich w swojej dystrybucji Linuksa, aby gra działała normalnie"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Zamknij"
|
||||
}
|
||||
}
|
||||
@@ -1,37 +1,43 @@
|
||||
{
|
||||
"app": {
|
||||
"successfully_signed_in": "Autenticado com sucesso"
|
||||
},
|
||||
"home": {
|
||||
"featured": "Destaque",
|
||||
"recently_added": "Novidades",
|
||||
"featured": "Destaques",
|
||||
"trending": "Populares",
|
||||
"surprise_me": "Me surpreenda",
|
||||
"surprise_me": "Surpreenda-me",
|
||||
"no_results": "Nenhum resultado encontrado"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Catálogo",
|
||||
"downloads": "Downloads",
|
||||
"settings": "Configurações",
|
||||
"settings": "Ajustes",
|
||||
"my_library": "Minha biblioteca",
|
||||
"downloading_metadata": "{{title}} (Baixando metadados…)",
|
||||
"checking_files": "{{title}} ({{percentage}} - Verificando arquivos…)",
|
||||
"paused": "{{title}} (Pausado)",
|
||||
"downloading": "{{title}} ({{percentage}} - Baixando…)",
|
||||
"filter": "Filtrar biblioteca",
|
||||
"home": "Início",
|
||||
"follow_us": "Acompanhe-nos"
|
||||
"queued": "{{title}} (Na fila)",
|
||||
"game_has_no_executable": "Jogo não possui executável selecionado",
|
||||
"sign_in": "Login"
|
||||
},
|
||||
"header": {
|
||||
"search": "Buscar",
|
||||
"search": "Buscar jogos",
|
||||
"catalogue": "Catálogo",
|
||||
"downloads": "Downloads",
|
||||
"search_results": "Resultados da busca",
|
||||
"settings": "Configurações",
|
||||
"home": "Início"
|
||||
"settings": "Ajustes",
|
||||
"home": "Início",
|
||||
"version_available_install": "Versão {{version}} disponível. Clique aqui para reiniciar e instalar.",
|
||||
"version_available_download": "Versão {{version}} disponível. Clique aqui para fazer o download."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Sem downloads em andamento",
|
||||
"downloading_metadata": "Baixando metadados de {{title}}…",
|
||||
"checking_files": "Verificando arquivos de {{title}}… ({{percentage}} completo)",
|
||||
"downloading": "Baixando {{title}}… ({{percentage}} completo) - Conclusão {{eta}} - {{speed}}"
|
||||
"downloading": "Baixando {{title}}… ({{percentage}} concluído) - Conclusão {{eta}} - {{speed}}",
|
||||
"calculating_eta": "Baixando {{title}}… ({{percentage}} concluído) - Calculando tempo restante…",
|
||||
"checking_files": "Verificando arquivos de {{title}}…"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Ver opções de download",
|
||||
@@ -43,24 +49,21 @@
|
||||
"pause": "Pausar",
|
||||
"cancel": "Cancelar",
|
||||
"remove": "Remover",
|
||||
"remove_from_list": "Remover",
|
||||
"space_left_on_disk": "{{space}} livres em disco",
|
||||
"eta": "Conclusão {{eta}}",
|
||||
"calculating_eta": "Calculando tempo restante…",
|
||||
"downloading_metadata": "Baixando metadados…",
|
||||
"checking_files": "Verificando arquivos…",
|
||||
"filter": "Filtrar repacks",
|
||||
"requirements": "Requisitos do sistema",
|
||||
"minimum": "Mínimos",
|
||||
"recommended": "Recomendados",
|
||||
"no_minimum_requirements": "{{title}} não possui informações de requisitos mínimos",
|
||||
"no_recommended_requirements": "{{title}} não possui informações de requisitos recomendados",
|
||||
"paused_progress": "{{progress}} (Pausado)",
|
||||
"paused": "Pausado",
|
||||
"release_date": "Lançado em {{date}}",
|
||||
"publisher": "Publicado por {{publisher}}",
|
||||
"copy_link_to_clipboard": "Copiar link",
|
||||
"copied_link_to_clipboard": "Link copiado",
|
||||
"hours": "horas",
|
||||
"minutes": "minutos",
|
||||
"amount_hours": "{{amount}} horas",
|
||||
"amount_minutes": "{{amount}} minutos",
|
||||
"accuracy": "{{accuracy}}% de precisão",
|
||||
"add_to_library": "Adicionar à biblioteca",
|
||||
"remove_from_library": "Remover da biblioteca",
|
||||
@@ -73,7 +76,40 @@
|
||||
"not_played_yet": "Você ainda não jogou {{title}}",
|
||||
"close": "Fechar",
|
||||
"deleting": "Excluindo instalador…",
|
||||
"playing_now": "Jogando agora"
|
||||
"playing_now": "Jogando agora",
|
||||
"change": "Mudar",
|
||||
"repacks_modal_description": "Escolha o repack do jogo que deseja baixar",
|
||||
"select_folder_hint": "Para trocar o diretório padrão, acesse a <0>Tela de Ajustes</0>",
|
||||
"download_now": "Iniciar download",
|
||||
"no_shop_details": "Não foi possível obter os detalhes da loja.",
|
||||
"download_options": "Opções de download",
|
||||
"download_path": "Diretório de download",
|
||||
"previous_screenshot": "Captura de tela anterior",
|
||||
"next_screenshot": "Próxima captura de tela",
|
||||
"screenshot": "Captura de tela {{number}}",
|
||||
"open_screenshot": "Ver captura de tela {{number}}",
|
||||
"download_settings": "Ajustes do download",
|
||||
"downloader": "Downloader",
|
||||
"select_executable": "Selecionar",
|
||||
"no_executable_selected": "Nenhum executável selecionado",
|
||||
"open_folder": "Abrir pasta",
|
||||
"open_download_location": "Ver arquivos baixados",
|
||||
"create_shortcut": "Criar atalho na área de trabalho",
|
||||
"remove_files": "Remover arquivos",
|
||||
"options": "Opções",
|
||||
"remove_from_library_description": "Isso irá remover {{game}} da sua biblioteca",
|
||||
"remove_from_library_title": "Tem certeza?",
|
||||
"executable_section_title": "Executável",
|
||||
"executable_section_description": "O caminho do arquivo que será executado ao clicar em \"Jogar\"",
|
||||
"downloads_secion_title": "Downloads",
|
||||
"downloads_section_description": "Confira atualizações ou versões diferentes para este mesmo título",
|
||||
"danger_zone_section_title": "Zona de perigo",
|
||||
"danger_zone_section_description": "Remova o jogo da sua biblioteca ou os arquivos que foram baixados pelo Hydra",
|
||||
"download_in_progress": "Download em andamento",
|
||||
"download_paused": "Download pausado",
|
||||
"last_downloaded_option": "Última opção baixada",
|
||||
"create_shortcut_success": "Atalho criado com sucesso",
|
||||
"create_shortcut_error": "Erro ao criar atalho"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Ativação",
|
||||
@@ -89,22 +125,24 @@
|
||||
"eta": "Conclusão {{eta}}",
|
||||
"paused": "Pausado",
|
||||
"verifying": "Verificando…",
|
||||
"completed_at": "Concluído em {{date}}",
|
||||
"completed": "Concluído",
|
||||
"cancelled": "Cancelado",
|
||||
"download_again": "Baixar novamente",
|
||||
"removed": "Cancelado",
|
||||
"cancel": "Cancelar",
|
||||
"filter": "Filtrar jogos baixados",
|
||||
"remove": "Remover",
|
||||
"downloading_metadata": "Baixando metadados…",
|
||||
"checking_files": "Verificando arquivos…",
|
||||
"starting_download": "Iniciando download…",
|
||||
"remove_from_list": "Remover",
|
||||
"delete": "Remover instalador",
|
||||
"delete_modal_description": "Isso removerá todos os arquivos de instalação do seu computador",
|
||||
"delete_modal_title": "Tem certeza?",
|
||||
"deleting": "Excluindo instalador…",
|
||||
"install": "Instalar"
|
||||
"install": "Instalar",
|
||||
"download_in_progress": "Baixando agora",
|
||||
"queued_downloads": "Na fila",
|
||||
"downloads_completed": "Completo",
|
||||
"queued": "Na fila",
|
||||
"no_downloads_title": "Nada por aqui…",
|
||||
"no_downloads_description": "Você ainda não baixou nada pelo Hydra, mas nunca é tarde para começar.",
|
||||
"checking_files": "Verificando arquivos…"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Diretório dos downloads",
|
||||
@@ -112,15 +150,54 @@
|
||||
"notifications": "Notificações",
|
||||
"enable_download_notifications": "Quando um download for concluído",
|
||||
"enable_repack_list_notifications": "Quando a lista de repacks for atualizada",
|
||||
"telemetry": "Telemetria",
|
||||
"telemetry_description": "Habilitar estatísticas de uso anônimas"
|
||||
"real_debrid_api_token_label": "Token de API do Real-Debrid",
|
||||
"quit_app_instead_hiding": "Encerrar o Hydra ao invés de minimizá-lo ao fechar",
|
||||
"launch_with_system": "Iniciar o Hydra junto com o sistema",
|
||||
"general": "Geral",
|
||||
"behavior": "Comportamento",
|
||||
"download_sources": "Fontes de download",
|
||||
"language": "Idioma",
|
||||
"real_debrid_api_token": "Token de API",
|
||||
"enable_real_debrid": "Habilitar Real-Debrid",
|
||||
"real_debrid_api_token_hint": "Você pode obter seu token de API <0>aqui</0>",
|
||||
"real_debrid_description": "O Real-Debrid é um downloader sem restrições que permite baixar arquivos instantaneamente e com a melhor velocidade da sua Internet.",
|
||||
"real_debrid_invalid_token": "Token de API inválido",
|
||||
"real_debrid_free_account_error": "A conta \"{{username}}\" é uma conta gratuita. Por favor, assine a Real-Debrid",
|
||||
"real_debrid_linked_message": "Conta \"{{username}}\" vinculada",
|
||||
"save_changes": "Salvar mudanças",
|
||||
"changes_saved": "Ajustes salvos com sucesso",
|
||||
"download_sources_description": "Hydra vai buscar links de download em todas as fonte habilitadas. A URL da fonte deve ser um link direto para um arquivo .json contendo uma lista de links.",
|
||||
"validate_download_source": "Validar",
|
||||
"remove_download_source": "Remover",
|
||||
"add_download_source": "Adicionar fonte",
|
||||
"download_count_zero": "Sem downloads na lista",
|
||||
"download_count_one": "{{countFormatted}} download na lista",
|
||||
"download_count_other": "{{countFormatted}} downloads na lista",
|
||||
"download_options_zero": "Sem downloads disponíveis",
|
||||
"download_options_one": "{{countFormatted}} download disponível",
|
||||
"download_options_other": "{{countFormatted}} downloads disponíveis",
|
||||
"download_source_url": "URL da fonte",
|
||||
"add_download_source_description": "Insira a URL contendo o arquivo .json",
|
||||
"download_source_up_to_date": "Sincronizada",
|
||||
"download_source_errored": "Falhou",
|
||||
"sync_download_sources": "Sincronizar",
|
||||
"removed_download_source": "Fonte removida",
|
||||
"added_download_source": "Fonte adicionada",
|
||||
"download_sources_synced": "As fontes foram sincronizadas",
|
||||
"insert_valid_json_url": "Insira a url de um JSON válido",
|
||||
"found_download_option_zero": "Nenhuma opção de download encontrada",
|
||||
"found_download_option_one": "{{countFormatted}} opção de download encontrada",
|
||||
"found_download_option_other": "{{countFormatted}} opções de download encontradas",
|
||||
"import": "Importar"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Download concluído",
|
||||
"game_ready_to_install": "{{title}} está pronto para ser instalado",
|
||||
"repack_list_updated": "Lista de repacks atualizada",
|
||||
"repack_count_one": "{{count}} novo repack",
|
||||
"repack_count_other": "{{count}} novos repacks"
|
||||
"repack_count_other": "{{count}} novos repacks",
|
||||
"new_update_available": "Versão {{version}} disponível",
|
||||
"restart_to_install_update": "Reinicie o Hydra para instalar a nova versão"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Abrir Hydra",
|
||||
@@ -132,10 +209,38 @@
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programas não instalados",
|
||||
"description": "Não foram encontrados no seu sistema os executáveis do Wine ou Lutris",
|
||||
"instructions": "Verifique a forma correta de instalar algum deles na sua distro Linux para que o jogo possa ser executado normalmente"
|
||||
"instructions": "Verifique a forma correta de instalar algum deles no seu distro Linux, garantindo assim a execução normal do jogo"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Próxima página",
|
||||
"previous_page": "Página anterior"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Botão de fechar"
|
||||
},
|
||||
"forms": {
|
||||
"toggle_password_visibility": "Alternar visibilidade da senha"
|
||||
},
|
||||
"user_profile": {
|
||||
"amount_hours": "{{amount}} horas",
|
||||
"amount_minutes": "{{amount}} minutos",
|
||||
"last_time_played": "Jogou {{period}}",
|
||||
"activity": "Atividade recente",
|
||||
"library": "Biblioteca",
|
||||
"total_play_time": "Tempo total de jogo: {{amount}}",
|
||||
"no_recent_activity_title": "Hmmm… nada por aqui",
|
||||
"no_recent_activity_description": "Parece que você não jogou nada recentemente. Que tal começar agora?",
|
||||
"display_name": "Nome de exibição",
|
||||
"saving": "Salvando…",
|
||||
"save": "Salvar",
|
||||
"edit_profile": "Editar Perfil",
|
||||
"saved_successfully": "Salvo com sucesso",
|
||||
"try_again": "Por favor, tente novamente",
|
||||
"cancel": "Cancelar",
|
||||
"successfully_signed_out": "Deslogado com sucesso",
|
||||
"sign_out": "Sair da conta",
|
||||
"sign_out_modal_title": "Tem certeza?",
|
||||
"playing_for": "Jogando por {{amount}}",
|
||||
"sign_out_modal_text": "Sua biblioteca de jogos está associada com a sua conta atual. Ao sair, sua biblioteca não aparecerá mais no Hydra e qualquer progresso não será salvo. Deseja continuar?"
|
||||
}
|
||||
}
|
||||
|
||||
159
src/locales/ro/translation.json
Normal file
@@ -0,0 +1,159 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "Recomandate",
|
||||
"trending": "Populare",
|
||||
"surprise_me": "Surprinde-mă",
|
||||
"no_results": "Niciun rezultat găsit"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Catalog",
|
||||
"downloads": "Descărcări",
|
||||
"settings": "Setări",
|
||||
"my_library": "Biblioteca mea",
|
||||
"downloading_metadata": "{{title}} (Se descarcă metadata...)",
|
||||
"paused": "{{title}} (Pauzat)",
|
||||
"downloading": "{{title}} ({{percentage}} - Se descarcă...)",
|
||||
"filter": "Filtrează biblioteca",
|
||||
"home": "Acasă"
|
||||
},
|
||||
"header": {
|
||||
"search": "Caută jocuri",
|
||||
"home": "Acasă",
|
||||
"catalogue": "Catalog",
|
||||
"downloads": "Descărcări",
|
||||
"search_results": "Rezultatele căutării",
|
||||
"settings": "Setări"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Nicio descărcare în curs",
|
||||
"downloading_metadata": "Se descarcă metadata pentru {{title}}...",
|
||||
"downloading": "Se descarcă {{title}}... ({{percentage}} complet) - Concluzie {{eta}} - {{speed}}",
|
||||
"calculating_eta": "Se descarcă {{title}}... ({{percentage}} complet) - Calculare timp rămas..."
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Pagina următoare",
|
||||
"previous_page": "Pagina anterioară"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Deschide opțiunile de descărcare",
|
||||
"download_options_zero": "Nicio opțiune de descărcare",
|
||||
"download_options_one": "{{count}} opțiune de descărcare",
|
||||
"download_options_other": "{{count}} opțiuni de descărcare",
|
||||
"updated_at": "Actualizat la {{updated_at}}",
|
||||
"install": "Instalează",
|
||||
"resume": "Reia",
|
||||
"pause": "Pauză",
|
||||
"cancel": "Anulează",
|
||||
"remove": "Elimină",
|
||||
"space_left_on_disk": "{{space}} liber pe disc",
|
||||
"eta": "Concluzie {{eta}}",
|
||||
"calculating_eta": "Calculare timp rămas...",
|
||||
"downloading_metadata": "Se descarcă metadata...",
|
||||
"filter": "Filtrează repack-urile",
|
||||
"requirements": "Cerințe de sistem",
|
||||
"minimum": "Minim",
|
||||
"recommended": "Recomandat",
|
||||
"paused": "Pauzat",
|
||||
"release_date": "Lansat pe {{date}}",
|
||||
"publisher": "Publicat de {{publisher}}",
|
||||
"hours": "ore",
|
||||
"minutes": "minute",
|
||||
"amount_hours": "{{amount}} ore",
|
||||
"amount_minutes": "{{amount}} minute",
|
||||
"accuracy": "{{accuracy}}% acuratețe",
|
||||
"add_to_library": "Adaugă în bibliotecă",
|
||||
"remove_from_library": "Elimină din bibliotecă",
|
||||
"no_downloads": "Nicio descărcare disponibilă",
|
||||
"play_time": "Jucat timp de {{amount}}",
|
||||
"last_time_played": "Ultima dată jucat {{period}}",
|
||||
"not_played_yet": "Nu ai jucat încă {{title}}",
|
||||
"next_suggestion": "Sugestia următoare",
|
||||
"play": "Joacă",
|
||||
"deleting": "Se șterge programul de instalare...",
|
||||
"close": "Închide",
|
||||
"playing_now": "Se joacă acum",
|
||||
"change": "Schimbă",
|
||||
"repacks_modal_description": "Alege repack-ul pe care vrei să-l descarci",
|
||||
"select_folder_hint": "Pentru a schimba folderul predefinit, mergi la <0>Setări</0>",
|
||||
"download_now": "Descarcă acum",
|
||||
"no_shop_details": "Nu s-au putut obține detalii din magazin.",
|
||||
"download_options": "Opțiuni de descărcare",
|
||||
"download_path": "Locația de descărcare",
|
||||
"previous_screenshot": "Captura de ecran anterioară",
|
||||
"next_screenshot": "Captura de ecran următoare",
|
||||
"screenshot": "Captură de ecran {{number}}",
|
||||
"open_screenshot": "Deschide captura de ecran {{number}}",
|
||||
"download_settings": "Setări de descărcare",
|
||||
"downloader": "Program de descărcare"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Activează Hydra",
|
||||
"installation_id": "ID-ul de instalare:",
|
||||
"enter_activation_code": "Introdu codul de activare",
|
||||
"message": "Dacă nu știi de unde să ceri acest lucru, atunci nu ar trebui să-l ai.",
|
||||
"activate": "Activează",
|
||||
"loading": "Se încarcă..."
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Reia",
|
||||
"pause": "Pauză",
|
||||
"eta": "Concluzie {{eta}}",
|
||||
"paused": "Pauzat",
|
||||
"verifying": "Se verifică...",
|
||||
"completed": "Completat",
|
||||
"removed": "Nu este descărcat",
|
||||
"cancel": "Anulează",
|
||||
"filter": "Filtrează jocurile descărcate",
|
||||
"remove": "Elimină",
|
||||
"downloading_metadata": "Se descarcă metadata...",
|
||||
"deleting": "Se șterge programul de instalare...",
|
||||
"delete": "Elimină programul de instalare",
|
||||
"delete_modal_title": "Ești sigur?",
|
||||
"delete_modal_description": "Aceasta va elimina toate fișierele de instalare de pe computer",
|
||||
"install": "Instalează"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Locația de descărcare",
|
||||
"change": "Actualizează",
|
||||
"notifications": "Notificări",
|
||||
"enable_download_notifications": "Când o descărcare este completă",
|
||||
"enable_repack_list_notifications": "Când un nou repack este adăugat",
|
||||
"real_debrid_api_token_label": "Token API Real-Debrid",
|
||||
"quit_app_instead_hiding": "Nu ascunde Hydra la închidere",
|
||||
"launch_with_system": "Lansează Hydra la pornirea sistemului",
|
||||
"general": "General",
|
||||
"behavior": "Comportament",
|
||||
"language": "Limbă",
|
||||
"real_debrid_api_token": "Token API",
|
||||
"enable_real_debrid": "Activează Real-Debrid",
|
||||
"real_debrid_description": "Real-Debrid este un descărcător fără restricții care îți permite să descarci fișiere instantaneu și la cea mai bună viteză a internetului tău.",
|
||||
"real_debrid_invalid_token": "Token API invalid",
|
||||
"real_debrid_api_token_hint": "Poți obține token-ul tău API <0>aici</0>",
|
||||
"real_debrid_free_account_error": "Contul \"{{username}}\" este un cont gratuit. Te rugăm să te abonezi la Real-Debrid",
|
||||
"real_debrid_linked_message": "Contul \"{{username}}\" a fost legat",
|
||||
"save_changes": "Salvează modificările",
|
||||
"changes_saved": "Modificările au fost salvate cu succes"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Descărcare completă",
|
||||
"game_ready_to_install": "{{title}} este gata de instalare",
|
||||
"repack_list_updated": "Lista de repack-uri a fost actualizată",
|
||||
"repack_count_one": "{{count}} repack adăugat",
|
||||
"repack_count_other": "{{count}} repack-uri adăugate"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Deschide Hydra",
|
||||
"quit": "Ieși"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Nicio descărcare disponibilă"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programele nu sunt instalate",
|
||||
"description": "Fișierele executabile Wine sau Lutris nu au fost găsite pe sistemul tău",
|
||||
"instructions": "Verifică modul corect de instalare a oricăruia dintre acestea pe distribuția ta Linux pentru ca jocul să ruleze normal"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Buton de închidere"
|
||||
}
|
||||
}
|
||||
243
src/locales/ru/translation.json
Normal file
@@ -0,0 +1,243 @@
|
||||
{
|
||||
"app": {
|
||||
"successfully_signed_in": "Успешный вход"
|
||||
},
|
||||
"home": {
|
||||
"featured": "Рекомендованное",
|
||||
"trending": "В тренде",
|
||||
"surprise_me": "Удиви меня",
|
||||
"no_results": "Ничего не найдено"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Каталог",
|
||||
"downloads": "Загрузки",
|
||||
"settings": "Настройки",
|
||||
"my_library": "Библиотека",
|
||||
"downloading_metadata": "{{title}} (Загрузка метаданных…)",
|
||||
"paused": "{{title}} (Приостановлено)",
|
||||
"downloading": "{{title}} ({{percentage}} - Загрузка…)",
|
||||
"filter": "Фильтр библиотеки",
|
||||
"home": "Главная",
|
||||
"queued": "{{title}} (В очереди)",
|
||||
"game_has_no_executable": "Файл запуска игры не выбран",
|
||||
"sign_in": "Войти"
|
||||
},
|
||||
"header": {
|
||||
"search": "Поиск",
|
||||
"home": "Главная",
|
||||
"catalogue": "Каталог",
|
||||
"downloads": "Загрузки",
|
||||
"search_results": "Результаты поиска",
|
||||
"settings": "Настройки",
|
||||
"version_available_install": "Доступна версия {{version}}. Нажмите здесь для перезапуска и установки.",
|
||||
"version_available_download": "Доступна версия {{version}}. Нажмите здесь для загрузки."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Нет активных загрузок",
|
||||
"downloading_metadata": "Загрузка метаданных {{title}}…",
|
||||
"downloading": "Загрузка {{title}}… ({{percentage}} завершено) - Окончание {{eta}} - {{speed}}",
|
||||
"calculating_eta": "Загрузка {{title}}… ({{percentage}} завершено) - Подсчёт оставшегося времени…"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Следующая страница",
|
||||
"previous_page": "Предыдущая страница"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Открыть варианты загрузки",
|
||||
"download_options_zero": "Нет вариантов загрузки",
|
||||
"download_options_one": "{{count}} вариант загрузки",
|
||||
"download_options_other": "{{count}} вариантов загрузки",
|
||||
"updated_at": "Обновлено {{updated_at}}",
|
||||
"install": "Установить",
|
||||
"resume": "Возобновить",
|
||||
"pause": "Приостановить",
|
||||
"cancel": "Отменить",
|
||||
"remove": "Удалить",
|
||||
"space_left_on_disk": "{{space}} свободно на диске",
|
||||
"eta": "Окончание {{eta}}",
|
||||
"calculating_eta": "Подсчёт оставшегося времени…",
|
||||
"downloading_metadata": "Загрузка метаданных…",
|
||||
"filter": "Фильтр репаков",
|
||||
"requirements": "Системные требования",
|
||||
"minimum": "Минимальные",
|
||||
"recommended": "Рекомендуемые",
|
||||
"paused": "Приостановлено",
|
||||
"release_date": "Выпущено {{date}}",
|
||||
"publisher": "Издатель {{publisher}}",
|
||||
"hours": "часов",
|
||||
"minutes": "минут",
|
||||
"amount_hours": "{{amount}} часов",
|
||||
"amount_minutes": "{{amount}} минут",
|
||||
"accuracy": "точность {{accuracy}}%",
|
||||
"add_to_library": "Добавить в библиотеку",
|
||||
"remove_from_library": "Удалить из библиотеки",
|
||||
"no_downloads": "Нет доступных загрузок",
|
||||
"play_time": "Сыграно {{amount}}",
|
||||
"last_time_played": "Последний запуск {{period}}",
|
||||
"not_played_yet": "Вы ещё не играли в {{title}}",
|
||||
"next_suggestion": "Следующее предложение",
|
||||
"play": "Играть",
|
||||
"deleting": "Удаление установщика…",
|
||||
"close": "Закрыть",
|
||||
"playing_now": "Запущено",
|
||||
"change": "Изменить",
|
||||
"repacks_modal_description": "Выберите репак для загрузки",
|
||||
"select_folder_hint": "Чтобы изменить папку загрузок по умолчанию, откройте <0>Настройки</0>",
|
||||
"download_now": "Загрузить сейчас",
|
||||
"no_shop_details": "Не удалось получить описание",
|
||||
"download_options": "Вариантов загрузки",
|
||||
"download_path": "Путь для загрузок",
|
||||
"previous_screenshot": "Предыдущий скриншот",
|
||||
"next_screenshot": "Следующий скриншот",
|
||||
"screenshot": "Скриншот {{number}}",
|
||||
"open_screenshot": "Открыть скриншот {{number}}",
|
||||
"download_settings": "Параметры загрузки",
|
||||
"downloader": "Загрузчик",
|
||||
"select_executable": "Выбрать",
|
||||
"no_executable_selected": "Файл не выбран",
|
||||
"open_folder": "Открыть папку",
|
||||
"open_download_location": "Просмотреть папку загрузок",
|
||||
"create_shortcut": "Создать ярлык на рабочем столе",
|
||||
"remove_files": "Удалить файлы",
|
||||
"remove_from_library_title": "Вы уверены?",
|
||||
"remove_from_library_description": "{{game}} будет удалена из вашей библиотеки.",
|
||||
"options": "Настройки",
|
||||
"executable_section_title": "Файл",
|
||||
"executable_section_description": "Путь к файлу, который будет запущен при нажатии на \"Play\"",
|
||||
"downloads_secion_title": "Загрузки",
|
||||
"downloads_section_description": "Проверить наличие обновлений или других версий игры",
|
||||
"danger_zone_section_title": "Опасная зона",
|
||||
"danger_zone_section_description": "Удалить эту игру из вашей библиотеки или файлы скачанные Hydra",
|
||||
"download_in_progress": "Идёт загрузка",
|
||||
"download_paused": "Загрузка приостановлена",
|
||||
"last_downloaded_option": "Последний вариант загрузки",
|
||||
"create_shortcut_success": "Ярлык создан",
|
||||
"create_shortcut_error": "Не удалось создать ярлык"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Активировать Hydra",
|
||||
"installation_id": "ID установки:",
|
||||
"enter_activation_code": "Введите ваш активационный код",
|
||||
"message": "Если вы не знаете, где его запросить, у вас его не должно быть.",
|
||||
"activate": "Активировать",
|
||||
"loading": "Загрузка…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Возобновить",
|
||||
"pause": "Приостановить",
|
||||
"eta": "Окончание {{eta}}",
|
||||
"paused": "Приостановлено",
|
||||
"verifying": "Проверка…",
|
||||
"completed": "Завершено",
|
||||
"removed": "Не скачано",
|
||||
"cancel": "Отмена",
|
||||
"filter": "Фильтр загруженных игр",
|
||||
"remove": "Удалить",
|
||||
"downloading_metadata": "Загрузка метаданных…",
|
||||
"deleting": "Удаление установщика…",
|
||||
"delete": "Удалить установщик",
|
||||
"delete_modal_title": "Вы уверены?",
|
||||
"delete_modal_description": "Это удалит все установщики с вашего компьютера",
|
||||
"install": "Установить",
|
||||
"download_in_progress": "В процессе",
|
||||
"queued_downloads": "Загрузки в очереди",
|
||||
"downloads_completed": "Завершено",
|
||||
"queued": "В очереди",
|
||||
"no_downloads_title": "Здесь так пусто...",
|
||||
"no_downloads_description": "Вы ещё ничего не скачали через Hydra, но никогда не поздно начать."
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Путь загрузок",
|
||||
"change": "Изменить",
|
||||
"notifications": "Уведомления",
|
||||
"enable_download_notifications": "По завершении загрузки",
|
||||
"enable_repack_list_notifications": "При добавлении нового репака",
|
||||
"real_debrid_api_token_label": "Real-Debrid API-токен",
|
||||
"quit_app_instead_hiding": "Закрывать приложение вместо сворачивания в трей",
|
||||
"launch_with_system": "Запускать Hydra вместе с системой",
|
||||
"general": "Основные",
|
||||
"behavior": "Поведение",
|
||||
"download_sources": "Источники загрузки",
|
||||
"language": "Язык",
|
||||
"real_debrid_api_token": "API Ключ",
|
||||
"enable_real_debrid": "Включить Real-Debrid",
|
||||
"real_debrid_description": "Real-Debrid - это неограниченный загрузчик, который позволяет быстро скачивать файлы, размещенные в Интернете, или мгновенно передавать их в плеер через частную сеть, позволяющую обходить любые блокировки.",
|
||||
"real_debrid_invalid_token": "Неверный API ключ",
|
||||
"real_debrid_api_token_hint": "API ключ можно получить <0>здесь</0>",
|
||||
"real_debrid_free_account_error": "Аккаунт \"{{username}}\" - не имеет подписки. Пожалуйста, оформите подписку на Real-Debrid",
|
||||
"real_debrid_linked_message": "Привязан аккаунт \"{{username}}\"",
|
||||
"save_changes": "Сохранить изменения",
|
||||
"changes_saved": "Изменения успешно сохранены",
|
||||
"download_sources_description": "Hydra будет получать ссылки на загрузки из этих источников. URL должна содержать прямую ссылку на .json-файл с ссылками для загрузок.",
|
||||
"validate_download_source": "Проверить",
|
||||
"remove_download_source": "Удалить",
|
||||
"add_download_source": "Добавить источник",
|
||||
"download_count_zero": "В списке нет загрузок",
|
||||
"download_count_one": "{{countFormatted}} загрузка в списке",
|
||||
"download_count_other": "{{countFormatted}} загрузок в списке",
|
||||
"download_options_zero": "Нет доступных загрузок",
|
||||
"download_options_one": "{{countFormatted}} вариант загрузки доступен",
|
||||
"download_options_other": "{{countFormatted}} вариантов загрузки доступно",
|
||||
"download_source_url": "Ссылка на источник",
|
||||
"add_download_source_description": "Вставьте ссылку на .json-файл",
|
||||
"download_source_up_to_date": "Обновлён",
|
||||
"download_source_errored": "Ошибка",
|
||||
"sync_download_sources": "Синхронизировать источники",
|
||||
"removed_download_source": "Источник загрузок удален",
|
||||
"added_download_source": "Источник загрузок добавлен",
|
||||
"download_sources_synced": "Все источники загрузок синхронизированы",
|
||||
"insert_valid_json_url": "Вставьте действительный URL JSON-файла",
|
||||
"found_download_option_zero": "Не найдено вариантов загрузки",
|
||||
"found_download_option_one": "Найден {{countFormatted}} вариант загрузки",
|
||||
"found_download_option_other": "Найдено {{countFormatted}} вариантов загрузки",
|
||||
"import": "Импортировать"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Загрузка завершена",
|
||||
"game_ready_to_install": "{{title}} готова к установке",
|
||||
"repack_list_updated": "Список репаков обновлен",
|
||||
"repack_count_one": "{{count}} репак добавлен",
|
||||
"repack_count_other": "{{count}} репаков добавлено",
|
||||
"new_update_available": "Доступна версия {{version}}"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Открыть Hydra",
|
||||
"quit": "Выйти"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Нет доступных загрузок"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Программы не установлены",
|
||||
"description": "Wine или Lutris не найдены",
|
||||
"instructions": "Узнайте правильный способ установить любой из них на ваш дистрибутив Linux, чтобы игра могла нормально работать"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Закрыть"
|
||||
},
|
||||
"forms": {
|
||||
"toggle_password_visibility": "Показывать пароль"
|
||||
},
|
||||
"user_profile": {
|
||||
"amount_hours": "{{amount}} часов",
|
||||
"amount_minutes": "{{amount}} минут",
|
||||
"last_time_played": "Последняя игра {{period}}",
|
||||
"activity": "Недавняя активность",
|
||||
"library": "Библиотека",
|
||||
"total_play_time": "Всего сыграно: {{amount}}",
|
||||
"no_recent_activity_title": "Хммм... Тут ничего нет",
|
||||
"no_recent_activity_description": "Вы давно ни во что не играли. Пора это изменить!",
|
||||
"display_name": "Отображаемое имя",
|
||||
"saving": "Сохранение",
|
||||
"save": "Сохранить",
|
||||
"edit_profile": "Редактировать Профиль",
|
||||
"saved_successfully": "Успешно сохранено",
|
||||
"try_again": "Пожалуйста, попробуйте ещё раз",
|
||||
"sign_out_modal_title": "Вы уверены?",
|
||||
"cancel": "Отменить",
|
||||
"successfully_signed_out": "Успешный выход из аккаунта",
|
||||
"sign_out": "Выйти",
|
||||
"playing_for": "Сыграно {{amount}}",
|
||||
"sign_out_modal_text": "Ваша библиотека связана с текущей учетной записью. При выходе из системы ваша библиотека станет недоступна, и прогресс не будет сохранен. Выйти?"
|
||||
}
|
||||
}
|
||||
131
src/locales/tr/translation.json
Normal file
@@ -0,0 +1,131 @@
|
||||
{
|
||||
"home": {
|
||||
"featured": "Öne çıkan",
|
||||
"trending": "Popüler",
|
||||
"surprise_me": "Şaşırt beni",
|
||||
"no_results": "Sonuç bulunamadı"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Katalog",
|
||||
"downloads": "İndirmeler",
|
||||
"settings": "Ayarlar",
|
||||
"my_library": "Kütüphane",
|
||||
"downloading_metadata": "{{title}} (Metadata indiriliyor…)",
|
||||
"paused": "{{title}} (Duraklatıldı)",
|
||||
"downloading": "{{title}} ({{percentage}} - İndiriliyor…)",
|
||||
"filter": "Kütüphaneyi filtrele",
|
||||
"home": "Ana menü"
|
||||
},
|
||||
"header": {
|
||||
"search": "Ara",
|
||||
"home": "Ana menü",
|
||||
"catalogue": "Katalog",
|
||||
"downloads": "İndirmeler",
|
||||
"search_results": "Arama sonuçları",
|
||||
"settings": "Ayarlar"
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "İndirilen bir şey yok",
|
||||
"downloading_metadata": "{{title}} metadatası indiriliyor…",
|
||||
"downloading": "{{title}} indiriliyor… ({{percentage}} tamamlandı) - Bitiş {{eta}} - {{speed}}"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Sonraki sayfa",
|
||||
"previous_page": "Önceki sayfa"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "İndirme seçeneklerini aç",
|
||||
"download_options_zero": "İndirme seçeneği yok",
|
||||
"download_options_one": "{{count}} indirme seçeneği",
|
||||
"download_options_other": "{{count}} indirme seçeneği",
|
||||
"updated_at": "{{updated_at}} güncellendi",
|
||||
"install": "İndir",
|
||||
"resume": "Devam et",
|
||||
"pause": "Duraklat",
|
||||
"cancel": "İptal et",
|
||||
"remove": "Sil",
|
||||
"space_left_on_disk": "Diskte {{space}} yer kaldı",
|
||||
"eta": "Bitiş {{eta}}",
|
||||
"downloading_metadata": "Metadata indiriliyor…",
|
||||
"filter": "Repackleri filtrele",
|
||||
"requirements": "Sistem gereksinimleri",
|
||||
"minimum": "Minimum",
|
||||
"recommended": "Önerilen",
|
||||
"release_date": "{{date}} tarihinde çıktı",
|
||||
"publisher": "{{publisher}} tarihinde yayınlandı",
|
||||
"hours": "saatler",
|
||||
"minutes": "dakikalar",
|
||||
"amount_hours": "{{amount}} saat",
|
||||
"amount_minutes": "{{amount}} dakika",
|
||||
"accuracy": "%{{accuracy}} doğruluk",
|
||||
"add_to_library": "Kütüphaneye ekle",
|
||||
"remove_from_library": "Kütüphaneden kaldır",
|
||||
"no_downloads": "İndirme yok",
|
||||
"play_time": "{{amount}} oynandı",
|
||||
"last_time_played": "Son oynanan {{period}}",
|
||||
"not_played_yet": "Bu {{title}} hiç oynanmadı",
|
||||
"next_suggestion": "Sıradaki öneri",
|
||||
"play": "Oyna",
|
||||
"deleting": "Installer siliniyor…",
|
||||
"close": "Kapat",
|
||||
"playing_now": "Şimdi oynanıyor",
|
||||
"change": "Değiştir",
|
||||
"repacks_modal_description": "İndirmek istediğiiniz repacki seçin",
|
||||
"select_folder_hint": "Varsayılan klasörü değiştirmek için ulaşmanız gereken ayar",
|
||||
"download_now": "Şimdi"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Hydra'yı aktif et",
|
||||
"installation_id": "Kurulum ID'si:",
|
||||
"enter_activation_code": "Aktifleştirme kodunuzu girin",
|
||||
"message": "Bunu nerede soracağınızı bilmiyorsanız, buna sahip olmamanız gerekiyor.",
|
||||
"activate": "Aktif et",
|
||||
"loading": "Yükleniyor…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Devam et",
|
||||
"pause": "Duraklat",
|
||||
"eta": "Bitiş {{eta}}",
|
||||
"paused": "Duraklatıldı",
|
||||
"verifying": "Doğrulanıyor…",
|
||||
"completed": "Tamamlandı",
|
||||
"cancel": "İptal et",
|
||||
"filter": "Yüklü oyunları filtrele",
|
||||
"remove": "Kaldır",
|
||||
"downloading_metadata": "Metadata indiriliyor…",
|
||||
"deleting": "Installer siliniyor…",
|
||||
"delete": "Installer'ı sil",
|
||||
"delete_modal_title": "Emin misiniz?",
|
||||
"delete_modal_description": "Bu bilgisayarınızdan tüm kurulum dosyalarını silecek",
|
||||
"install": "Kur"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "İndirme yolu",
|
||||
"change": "Güncelle",
|
||||
"notifications": "Bildirimler",
|
||||
"enable_download_notifications": "Bir indirme bittiğinde",
|
||||
"enable_repack_list_notifications": "Yeni bir repack eklendiğinde"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "İndirme tamamlandı",
|
||||
"game_ready_to_install": "{{title}} kuruluma hazır",
|
||||
"repack_list_updated": "Repack listesi güncellendi",
|
||||
"repack_count_one": "{{count}} yeni repack eklendi",
|
||||
"repack_count_other": "{{count}} yeni repack eklendi"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Hydra'yı aç",
|
||||
"quit": "Çık"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "İndirme mevcut değil"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programlar yüklü değil",
|
||||
"description": "Sisteminizde Wine veya Lutris çalıştırılabiliri bulunamadı",
|
||||
"instructions": "Oyunları düzgün şekilde çalıştırmak için Linux distronuza bunlardan birini nasıl yükleyebileceğinize bakın"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Kapat tuşu"
|
||||
}
|
||||
}
|
||||
240
src/locales/uk/translation.json
Normal file
@@ -0,0 +1,240 @@
|
||||
{
|
||||
"app": {
|
||||
"successfully_signed_in": "Успішний вхід в систему"
|
||||
},
|
||||
"home": {
|
||||
"featured": "Рекомендоване",
|
||||
"trending": "У тренді",
|
||||
"surprise_me": "Здивуй мене",
|
||||
"no_results": "Результатів не знайдено"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Каталог",
|
||||
"downloads": "Завантаження",
|
||||
"settings": "Налаштування",
|
||||
"my_library": "Бібліотека",
|
||||
"downloading_metadata": "{{title}} (Завантаження метаданих…)",
|
||||
"paused": "{{title}} (Призупинено)",
|
||||
"downloading": "{{title}} ({{percentage}} - Завантаження…)",
|
||||
"filter": "Фільтр бібліотеки",
|
||||
"home": "Головна",
|
||||
"game_has_no_executable": "Не було вибрано файл для запуску гри",
|
||||
"queued": "{{title}} в черзі",
|
||||
"sign_in": "Увійти"
|
||||
},
|
||||
"header": {
|
||||
"search": "Пошук",
|
||||
"home": "Головна",
|
||||
"catalogue": "Каталог",
|
||||
"downloads": "Завантаження",
|
||||
"search_results": "Результати пошуку",
|
||||
"settings": "Налаштування",
|
||||
"version_available_download": "Доступна версія {{version}}. Натисніть тут, щоб перезапустити та встановити.",
|
||||
"version_available_install": "Доступна версія {{version}}. Натисніть тут для завантаження."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Немає активних завантажень",
|
||||
"downloading_metadata": "Завантаження метаданих {{title}}…",
|
||||
"downloading": "Завантаження {{title}}… ({{percentage}} завершено) - Закінчення {{eta}} - {{speed}}",
|
||||
"calculating_eta": "Завантаження {{title}}… ({{percentage}} завершено) - Обчислення залишкового часу…"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Наступна сторінка",
|
||||
"previous_page": "Попередня сторінка"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Відкрити варіанти завантаження",
|
||||
"download_options_zero": "Немає варіантів завантаження",
|
||||
"download_options_one": "{{count}} варіант завантаження",
|
||||
"download_options_other": "{{count}} варіантів завантаження",
|
||||
"updated_at": "Оновлено {{updated_at}}",
|
||||
"install": "Встановити",
|
||||
"resume": "Відновити",
|
||||
"pause": "Призупинити",
|
||||
"cancel": "Скасувати",
|
||||
"remove": "Видалити",
|
||||
"space_left_on_disk": "{{space}} вільно на диску",
|
||||
"eta": "Закінчення {{eta}}",
|
||||
"downloading_metadata": "Завантаження метаданих…",
|
||||
"filter": "Фільтр репаків",
|
||||
"requirements": "Системні вимоги",
|
||||
"minimum": "Мінімальні",
|
||||
"recommended": "Рекомендовані",
|
||||
"release_date": "Випущено {{date}}",
|
||||
"publisher": "Видавець {{publisher}}",
|
||||
"hours": "годин",
|
||||
"minutes": "хвилин",
|
||||
"amount_hours": "{{amount}} годин",
|
||||
"amount_minutes": "{{amount}} хвилин",
|
||||
"accuracy": "{{accuracy}}% точність",
|
||||
"add_to_library": "Додати до бібліотеки",
|
||||
"remove_from_library": "Видалити з бібліотеки",
|
||||
"no_downloads": "Немає доступних завантажень",
|
||||
"play_time": "Час гри: {{amount}}",
|
||||
"last_time_played": "Востаннє зіграно: {{period}}",
|
||||
"not_played_yet": "Ви ще не грали в {{title}}",
|
||||
"next_suggestion": "Наступна пропозиція",
|
||||
"play": "Грати",
|
||||
"deleting": "Видалення інсталятора…",
|
||||
"close": "Закрити",
|
||||
"playing_now": "Поточна гра",
|
||||
"change": "Змінити",
|
||||
"repacks_modal_description": "Виберіть репак, який хочете завантажити",
|
||||
"select_folder_hint": "Щоб змінити теку за замовчуванням, відкрийте",
|
||||
"download_now": "Завантажити зараз",
|
||||
"calculating_eta": "Обчислення залишкового часу…",
|
||||
"create_shortcut": "Створити ярлик на робочому столі",
|
||||
"danger_zone_section_description": "Видалити цю гру з вашої бібліотеки або файли скачані Hydra",
|
||||
"danger_zone_section_title": "Небезпечна зона",
|
||||
"download_in_progress": "Триває завантаження.",
|
||||
"download_options": "Варіантів завантаження",
|
||||
"download_path": "Тека для завантажень",
|
||||
"download_paused": "Завантаження призупинено",
|
||||
"download_settings": "Налаштування завантаження",
|
||||
"downloader": "Завантажувач",
|
||||
"downloads_secion_title": "Завантаження",
|
||||
"downloads_section_description": "Перевірити наявність оновлень або інших версій гри",
|
||||
"executable_section_description": "Шлях до файлу, який буде запущений при натисканні на кнопку \"Play\"",
|
||||
"executable_section_title": "Файл",
|
||||
"last_downloaded_option": "Останній варіант завантаження",
|
||||
"next_screenshot": "Наступний скрішнот",
|
||||
"no_executable_selected": "Файл не вибрано",
|
||||
"no_shop_details": "Не вдалося отримати опис",
|
||||
"open_download_location": "Переглянути папку завантажень",
|
||||
"open_folder": "Відкрити папку",
|
||||
"open_screenshot": "Відкрити скріншот",
|
||||
"options": "Налаштування",
|
||||
"paused": "Призупинено",
|
||||
"previous_screenshot": "Попередній скріншот",
|
||||
"remove_files": "Видалити файли",
|
||||
"remove_from_library_description": "{{game}} буде видалено з вашої бібліотеки",
|
||||
"remove_from_library_title": "Ви впевнені?",
|
||||
"screenshot": "Скріншот",
|
||||
"select_executable": "Обрати"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Активувати Hydra",
|
||||
"installation_id": "ID установки:",
|
||||
"enter_activation_code": "Введіть ваш активаційний код",
|
||||
"message": "Якщо ви не знаєте, де його запросити, то не повинні мати його.",
|
||||
"activate": "Активувати",
|
||||
"loading": "Завантаження…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Продовжити",
|
||||
"pause": "Призупинити",
|
||||
"eta": "Закінчення {{eta}}",
|
||||
"paused": "Призупинено",
|
||||
"verifying": "Перевірка…",
|
||||
"completed": "Завершено",
|
||||
"cancel": "Скасувати",
|
||||
"filter": "Фільтр завантажених ігор",
|
||||
"remove": "Видалити",
|
||||
"downloading_metadata": "Завантаження метаданих…",
|
||||
"deleting": "Видалення інсталятора…",
|
||||
"delete": "Видалити інсталятор",
|
||||
"delete_modal_title": "Ви впевнені?",
|
||||
"delete_modal_description": "Це видалить усі інсталяційні файли з вашого комп'ютера",
|
||||
"install": "Встановити",
|
||||
"download_in_progress": "В процесі",
|
||||
"downloads_completed": "Завершено",
|
||||
"no_downloads_description": "Ви ще нічого не завантажили через Hydra, але ніколи не пізно почати.",
|
||||
"no_downloads_title": "Тут так пусто...",
|
||||
"queued": "В черзі",
|
||||
"queued_downloads": "Завантаження в черзі",
|
||||
"removed": "Не завантажено"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Тека завантажень",
|
||||
"change": "Змінити",
|
||||
"notifications": "Повідомлення",
|
||||
"enable_download_notifications": "Після завершення завантаження",
|
||||
"enable_repack_list_notifications": "Коли додається новий репак",
|
||||
"behavior": "Поведінка",
|
||||
"quit_app_instead_hiding": "Закривати Hydra замість того, щоб згортати її в трей",
|
||||
"launch_with_system": "Запускати Hydra із запуском комп'ютера",
|
||||
"add_download_source": "Добавити джерело",
|
||||
"add_download_source_description": "Введіть посилання на .json-файл",
|
||||
"added_download_source": "Джерело для завантаження було додано",
|
||||
"changes_saved": "Зміни успішно збережено",
|
||||
"download_count_one": "{{countFormatted}} завантаження в списку",
|
||||
"download_count_other": "{{countFormatted}} завантажень в списку",
|
||||
"download_count_zero": "В списку немає завантажень",
|
||||
"download_options_one": "{{countFormatted}} доступний варіант завантаження",
|
||||
"download_options_other": "{{countFormatted}} доступних варіантів завантаження",
|
||||
"download_options_zero": "Немає доступних завантажень",
|
||||
"download_source_errored": "Помилка",
|
||||
"download_source_up_to_date": "Оновлено",
|
||||
"download_source_url": "Посилання на джерело",
|
||||
"download_sources": "Джерела для завантаження",
|
||||
"download_sources_description": "Hydra буде отримувати посилання для завантажень із цих джерел. URL має містити пряме посилання на .json-файл із посиланнями для завантажень.",
|
||||
"download_sources_synced": "Всі джерела для завантаження синхронізовано",
|
||||
"enable_real_debrid": "Включити Real-Debrid",
|
||||
"found_download_option_one": "Знайдено {{countFormatted}} варіант завантаження",
|
||||
"found_download_option_other": "Знайдено {{countFormatted}} варіантів завантаження",
|
||||
"found_download_option_zero": "Немає доступних завантажень",
|
||||
"general": "Основні",
|
||||
"import": "Імпортувати",
|
||||
"insert_valid_json_url": "Вставте дійсний URL JSON-файлу",
|
||||
"language": "Мова",
|
||||
"real_debrid_api_token": "API-токен",
|
||||
"real_debrid_api_token_hint": "API токен можливо отримати <0>тут</0>",
|
||||
"real_debrid_api_token_label": "Real-Debrid API-токен",
|
||||
"real_debrid_description": "Real-Debrid — це необмежений завантажувач, який дозволяє швидко завантажувати файли, розміщені в Інтернеті, або миттєво передавати їх у плеєр через приватну мережу, що дозволяє обходити будь-які блокування.",
|
||||
"real_debrid_free_account_error": "Акаунт \"{{username}}\" - не має наявної підписки. Будь ласка, оформіть підписку на Real-Debrid",
|
||||
"real_debrid_invalid_token": "Невірний API-токен",
|
||||
"real_debrid_linked_message": "Акаунт \"{{username}}\" привязаний",
|
||||
"remove_download_source": "Видалити",
|
||||
"removed_download_source": "Джерело завантажень було видалено",
|
||||
"save_changes": "Зберегти зміни",
|
||||
"sync_download_sources": "Синхронізувати джерела",
|
||||
"validate_download_source": "Перевірити"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Завантаження завершено",
|
||||
"game_ready_to_install": "{{title}} готова до встановлення",
|
||||
"repack_list_updated": "Список репаків оновлено",
|
||||
"repack_count_one": "{{count}} репак додано",
|
||||
"repack_count_other": "{{count}} репаків додано"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Відкрити Hydra",
|
||||
"quit": "Вийти"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Немає доступних завантажень"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Програми не встановлені",
|
||||
"description": "Виконувані файли Wine або Lutris не знайдено у вашій системі",
|
||||
"instructions": "Дізнайтеся правильний спосіб встановити будь-який з них на ваш дистрибутив Linux, щоб гра могла нормально працювати"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Закрити"
|
||||
},
|
||||
"forms": {
|
||||
"toggle_password_visibility": "Показувати пароль"
|
||||
},
|
||||
"user_profile": {
|
||||
"activity": "Остання активність",
|
||||
"amount_hours": "{{amount}} годин",
|
||||
"amount_minutes": "{{amount}} хвилин",
|
||||
"cancel": "Скасувати",
|
||||
"display_name": "Відображуване ім'я",
|
||||
"edit_profile": "Редагувати профіль",
|
||||
"last_time_played": "Остання гра {{period}}",
|
||||
"library": "Бібліотека",
|
||||
"no_recent_activity_description": "Ви давно не грали в ігри. Пора це змінити!",
|
||||
"no_recent_activity_title": "Хммм... Тут нічого немає",
|
||||
"playing_for": "Зіграно {{amount}}",
|
||||
"save": "Збережено",
|
||||
"saved_successfully": "Успішно збережено",
|
||||
"saving": "Збереження",
|
||||
"sign_out": "Вийти",
|
||||
"sign_out_modal_text": "Ваша бібліотека пов'язана з поточним обліковим записом. При виході з системи ваша бібліотека буде недоступною, і прогрес не буде збережено. Продовжити вихід?",
|
||||
"sign_out_modal_title": "Ви впевнені?",
|
||||
"successfully_signed_out": "Успішний вихід з акаунту",
|
||||
"total_play_time": "Всього зіграно: {{amount}}",
|
||||
"try_again": "Будь ласка, попробуйте ще раз"
|
||||
}
|
||||
}
|
||||
217
src/locales/zh/translation.json
Normal file
@@ -0,0 +1,217 @@
|
||||
{
|
||||
"app": {
|
||||
"successfully_signed_in": "已成功登录"
|
||||
},
|
||||
"home": {
|
||||
"featured": "特色推荐",
|
||||
"trending": "最近热门",
|
||||
"surprise_me": "向我推荐",
|
||||
"no_results": "没有找到结果"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "游戏目录",
|
||||
"downloads": "下载中心",
|
||||
"settings": "设置",
|
||||
"my_library": "我的游戏库",
|
||||
"downloading_metadata": "{{title}} (正在下载元数据…)",
|
||||
"paused": "{{title}} (已暂停)",
|
||||
"downloading": "{{title}} ({{percentage}} - 正在下载…)",
|
||||
"filter": "筛选游戏库",
|
||||
"home": "主页",
|
||||
"queued": "{{title}} (已加入下载队列)",
|
||||
"game_has_no_executable": "未选择游戏的可执行文件",
|
||||
"sign_in": "登入"
|
||||
},
|
||||
"header": {
|
||||
"search": "搜索游戏",
|
||||
"home": "主页",
|
||||
"catalogue": "游戏目录",
|
||||
"downloads": "下载中心",
|
||||
"search_results": "搜索结果",
|
||||
"settings": "设置",
|
||||
"version_available_install": "版本 {{version}} 已可用. 点击此处重新启动并安装.",
|
||||
"version_available_download": "版本 {{version}} 可用. 点击此处下载."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "没有正在进行的下载",
|
||||
"downloading_metadata": "正在下载{{title}}的元数据…",
|
||||
"downloading": "正在下载{{title}}… ({{percentage}}完成) - 剩余时间{{eta}} - 速度{{speed}}",
|
||||
"calculating_eta": "正在下载 {{title}}… (已完成{{percentage}}.) - 正在计算剩余时间..."
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "下一页",
|
||||
"previous_page": "上一页"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "打开下载选项",
|
||||
"download_options_zero": "无下载选项",
|
||||
"download_options_one": "{{count}}个下载选项",
|
||||
"download_options_other": "{{count}}个下载选项",
|
||||
"updated_at": "更新于{{updated_at}}",
|
||||
"install": "安装",
|
||||
"resume": "恢复",
|
||||
"pause": "暂停",
|
||||
"cancel": "取消",
|
||||
"remove": "移除",
|
||||
"space_left_on_disk": "磁盘剩余空间{{space}}",
|
||||
"eta": "预计完成时间{{eta}}",
|
||||
"downloading_metadata": "正在下载元数据…",
|
||||
"filter": "筛选重打包",
|
||||
"requirements": "配置要求",
|
||||
"minimum": "最低要求",
|
||||
"recommended": "推荐要求",
|
||||
"release_date": "发布于{{date}}",
|
||||
"publisher": "发行商{{publisher}}",
|
||||
"hours": "小时",
|
||||
"minutes": "分钟",
|
||||
"amount_hours": "{{amount}}小时",
|
||||
"amount_minutes": "{{amount}}分钟",
|
||||
"accuracy": "准确度{{accuracy}}%",
|
||||
"add_to_library": "添加到游戏库",
|
||||
"remove_from_library": "从游戏库移除",
|
||||
"no_downloads": "没有可用的下载",
|
||||
"play_time": "游戏时长{{amount}}",
|
||||
"last_time_played": "上次玩{{period}}",
|
||||
"not_played_yet": "您还没有玩过{{title}}",
|
||||
"next_suggestion": "下一个建议",
|
||||
"play": "开始游戏",
|
||||
"deleting": "正在删除安装程序…",
|
||||
"close": "关闭",
|
||||
"playing_now": "正在游戏中",
|
||||
"change": "更改",
|
||||
"repacks_modal_description": "选择您想要下载的重打包",
|
||||
"select_folder_hint": "要更改默认文件夹,请访问",
|
||||
"download_now": "立即下载",
|
||||
"previous_screenshot": "上一张截图",
|
||||
"next_screenshot": "下一张截图",
|
||||
"screenshot": "截图 {{number}}",
|
||||
"open_screenshot": "打开截图 {{number}}",
|
||||
"download_settings": "下载设置",
|
||||
"downloader": "下载器",
|
||||
"select_executable": "选择",
|
||||
"no_executable_selected": "没有可执行文件被指定",
|
||||
"open_folder": "打开目录",
|
||||
"open_download_location": "查看已下载的文件",
|
||||
"create_shortcut": "创建桌面快捷方式",
|
||||
"remove_files": "删除文件",
|
||||
"remove_from_library_title": "你确定吗?",
|
||||
"remove_from_library_description": "这将会把 {{game}} 从你的库中移除",
|
||||
"options": "选项",
|
||||
"executable_section_title": "可执行文件",
|
||||
"executable_section_description": "点击 \"Play\" 时将执行的文件的路径",
|
||||
"downloads_secion_title": "下载",
|
||||
"downloads_section_description": "查看此游戏的更新或其他版本",
|
||||
"danger_zone_section_title": "危险操作",
|
||||
"danger_zone_section_description": "从您的库或Hydra下载的文件中删除此游戏",
|
||||
"download_in_progress": "下载进行中",
|
||||
"download_paused": "下载暂停",
|
||||
"last_downloaded_option": "上次下载的选项",
|
||||
"create_shortcut_success": "成功创建快捷方式",
|
||||
"create_shortcut_error": "创建快捷方式出错"
|
||||
},
|
||||
"activation": {
|
||||
"title": "激活 Hydra",
|
||||
"installation_id": "安装ID:",
|
||||
"enter_activation_code": "输入您的激活码",
|
||||
"message": "如果你不知道在哪里请求这个,那么您将无法继续。",
|
||||
"activate": "激活",
|
||||
"loading": "加载中…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "继续",
|
||||
"pause": "暂停",
|
||||
"eta": "预计完成时间{{eta}}",
|
||||
"paused": "已暂停",
|
||||
"verifying": "正在验证…",
|
||||
"completed": "已完成",
|
||||
"cancel": "取消",
|
||||
"filter": "筛选已下载游戏",
|
||||
"remove": "移除",
|
||||
"downloading_metadata": "正在下载元数据…",
|
||||
"deleting": "正在删除安装程序…",
|
||||
"delete": "移除安装程序",
|
||||
"delete_modal_title": "您确定吗?",
|
||||
"delete_modal_description": "这将从您的电脑上移除所有的安装文件",
|
||||
"install": "安装",
|
||||
"download_in_progress": "进行中",
|
||||
"queued_downloads": "在队列中的下载",
|
||||
"downloads_completed": "已完成",
|
||||
"queued": "下载列表",
|
||||
"no_downloads_title": "空空如也",
|
||||
"no_downloads_description": "你还未使用Hydra下载任何游戏,但什么时候开始,都为时不晚。"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "下载路径",
|
||||
"change": "更改",
|
||||
"notifications": "通知",
|
||||
"enable_download_notifications": "下载完成时",
|
||||
"enable_repack_list_notifications": "添加新重打包时",
|
||||
"real_debrid_api_token_label": "Real-Debrid API 令牌",
|
||||
"quit_app_instead_hiding": "关闭Hydra而不是最小化到托盘",
|
||||
"launch_with_system": "系统启动时运行 Hydra",
|
||||
"general": "通用",
|
||||
"behavior": "行为",
|
||||
"download_sources": "下载源",
|
||||
"language": "语言",
|
||||
"real_debrid_api_token": "API 令牌",
|
||||
"enable_real_debrid": "启用 Real-Debrid",
|
||||
"real_debrid_description": "Real-Debrid 是一个无限制的下载器,允许您以最快的互联网速度即时下载文件。",
|
||||
"real_debrid_invalid_token": "无效的 API 令牌",
|
||||
"real_debrid_api_token_hint": "您可以从<0>这里</0>获取API密钥.",
|
||||
"real_debrid_free_account_error": "账户 \"{{username}}\" 是免费账户。请订阅 Real-Debrid",
|
||||
"real_debrid_linked_message": "账户 \"{{username}}\" 已链接",
|
||||
"save_changes": "保存更改",
|
||||
"changes_saved": "更改已成功保存",
|
||||
"download_sources_description": "Hydra 将从这些源获取下载链接。源 URL 必须是直接链接到包含下载链接的 .json 文件。",
|
||||
"validate_download_source": "验证",
|
||||
"remove_download_source": "移除",
|
||||
"add_download_source": "添加源",
|
||||
"download_count_zero": "列表中无下载",
|
||||
"download_count_one": "列表中有 {{countFormatted}} 个下载",
|
||||
"download_count_other": "列表中有 {{countFormatted}} 个下载",
|
||||
"download_options_zero": "无可用下载",
|
||||
"download_options_one": "有 {{countFormatted}} 个下载可用",
|
||||
"download_options_other": "有 {{countFormatted}} 个下载可用",
|
||||
"download_source_url": "下载源 URL",
|
||||
"add_download_source_description": "插入包含 .json 文件的 URL",
|
||||
"download_source_up_to_date": "已更新",
|
||||
"download_source_errored": "出错",
|
||||
"sync_download_sources": "同步源",
|
||||
"removed_download_source": "已移除下载源",
|
||||
"added_download_source": "已添加下载源",
|
||||
"download_sources_synced": "所有下载源已同步",
|
||||
"insert_valid_json_url": "插入有效的 JSON 网址",
|
||||
"found_download_option_zero": "未找到下载选项",
|
||||
"found_download_option_one": "找到 {{countFormatted}} 个下载选项",
|
||||
"found_download_option_other": "找到 {{countFormatted}} 个下载选项",
|
||||
"import": "导入"
|
||||
},
|
||||
"modal": {
|
||||
"close": "关闭按钮"
|
||||
},
|
||||
"forms": {
|
||||
"toggle_password_visibility": "切换密码可见性"
|
||||
},
|
||||
"user_profile": {
|
||||
"amount_hours": "{{amount}} 小时",
|
||||
"amount_minutes": "{{amount}} 分钟",
|
||||
"last_time_played": "上次游玩时间 {{period}}",
|
||||
"activity": "近期活动",
|
||||
"library": "库",
|
||||
"total_play_time": "总游戏时长: {{amount}}",
|
||||
"no_recent_activity_title": "Emmm… 这里暂时啥都没有",
|
||||
"no_recent_activity_description": "你最近没玩过任何游戏。是时候做出改变了!",
|
||||
"display_name": "昵称",
|
||||
"saving": "保存中",
|
||||
"save": "保存",
|
||||
"edit_profile": "编辑资料",
|
||||
"saved_successfully": "成功保存",
|
||||
"try_again": "请重试",
|
||||
"sign_out_modal_title": "你确定吗?",
|
||||
"cancel": "取消",
|
||||
"successfully_signed_out": "登出成功",
|
||||
"sign_out": "登出",
|
||||
"playing_for": "Playing for {{amount}}",
|
||||
"sign_out_modal_text": "您的资料库与您当前的账户相关联。注销后,您的资料库将不再可见,任何进度也不会保存。继续退出吗?"
|
||||
}
|
||||
}
|
||||
@@ -1,55 +1,16 @@
|
||||
import { app } from "electron";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
|
||||
export const repackersOn1337x = [
|
||||
"DODI",
|
||||
"FitGirl",
|
||||
"0xEMPRESS",
|
||||
"KaOsKrew",
|
||||
"TinyRepacks",
|
||||
] as const;
|
||||
|
||||
export const repackers = [
|
||||
...repackersOn1337x,
|
||||
"Xatab",
|
||||
"CPG",
|
||||
"TinyRepacks",
|
||||
"GOG",
|
||||
"onlinefix",
|
||||
] as const;
|
||||
|
||||
export const months = [
|
||||
"Jan",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Apr",
|
||||
"May",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Aug",
|
||||
"Sep",
|
||||
"Oct",
|
||||
"Nov",
|
||||
"Dec",
|
||||
];
|
||||
|
||||
export enum GameStatus {
|
||||
Seeding = "seeding",
|
||||
Downloading = "downloading",
|
||||
Paused = "paused",
|
||||
CheckingFiles = "checking_files",
|
||||
DownloadingMetadata = "downloading_metadata",
|
||||
Cancelled = "cancelled",
|
||||
}
|
||||
|
||||
export const defaultDownloadsPath = path.join(os.homedir(), "downloads");
|
||||
export const defaultDownloadsPath = app.getPath("downloads");
|
||||
|
||||
export const databasePath = path.join(
|
||||
app.getPath("appData"),
|
||||
app.getName(),
|
||||
"hydra",
|
||||
"hydra.db"
|
||||
);
|
||||
|
||||
export const INSTALLATION_ID_LENGTH = 6;
|
||||
export const ACTIVATION_KEY_MULTIPLIER = 7;
|
||||
export const logsPath = path.join(app.getPath("appData"), "hydra", "logs");
|
||||
|
||||
export const seedsPath = app.isPackaged
|
||||
? path.join(process.resourcesPath, "seeds")
|
||||
: path.join(__dirname, "..", "..", "seeds");
|
||||
|
||||
@@ -1,35 +1,37 @@
|
||||
import { DataSource } from "typeorm";
|
||||
import {
|
||||
DownloadQueue,
|
||||
DownloadSource,
|
||||
Game,
|
||||
GameShopCache,
|
||||
ImageCache,
|
||||
Repack,
|
||||
RepackerFriendlyName,
|
||||
UserPreferences,
|
||||
MigrationScript,
|
||||
SteamGame,
|
||||
} from "@main/entity";
|
||||
import type { SqliteConnectionOptions } from "typeorm/driver/sqlite/SqliteConnectionOptions";
|
||||
import type { BetterSqlite3ConnectionOptions } from "typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions";
|
||||
|
||||
import { databasePath } from "./constants";
|
||||
import migrations from "./migrations";
|
||||
import { UserAuth } from "./entity/user-auth";
|
||||
|
||||
export const createDataSource = (options: Partial<SqliteConnectionOptions>) =>
|
||||
export const createDataSource = (
|
||||
options: Partial<BetterSqlite3ConnectionOptions>
|
||||
) =>
|
||||
new DataSource({
|
||||
type: "sqlite",
|
||||
database: databasePath,
|
||||
type: "better-sqlite3",
|
||||
entities: [
|
||||
Game,
|
||||
ImageCache,
|
||||
Repack,
|
||||
RepackerFriendlyName,
|
||||
UserPreferences,
|
||||
GameShopCache,
|
||||
MigrationScript,
|
||||
SteamGame,
|
||||
DownloadSource,
|
||||
DownloadQueue,
|
||||
UserAuth,
|
||||
],
|
||||
synchronize: true,
|
||||
database: databasePath,
|
||||
...options,
|
||||
});
|
||||
|
||||
export const dataSource = createDataSource({
|
||||
synchronize: true,
|
||||
migrations,
|
||||
});
|
||||
|
||||
80
src/main/declaration.d.ts
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
declare module "aria2" {
|
||||
export type Aria2Status =
|
||||
| "active"
|
||||
| "waiting"
|
||||
| "paused"
|
||||
| "error"
|
||||
| "complete"
|
||||
| "removed";
|
||||
|
||||
export interface StatusResponse {
|
||||
gid: string;
|
||||
status: Aria2Status;
|
||||
totalLength: string;
|
||||
completedLength: string;
|
||||
uploadLength: string;
|
||||
bitfield: string;
|
||||
downloadSpeed: string;
|
||||
uploadSpeed: string;
|
||||
infoHash?: string;
|
||||
numSeeders?: string;
|
||||
seeder?: boolean;
|
||||
pieceLength: string;
|
||||
numPieces: string;
|
||||
connections: string;
|
||||
errorCode?: string;
|
||||
errorMessage?: string;
|
||||
followedBy?: string[];
|
||||
following: string;
|
||||
belongsTo: string;
|
||||
dir: string;
|
||||
files: {
|
||||
path: string;
|
||||
length: string;
|
||||
completedLength: string;
|
||||
selected: string;
|
||||
}[];
|
||||
bittorrent?: {
|
||||
announceList: string[][];
|
||||
comment: string;
|
||||
creationDate: string;
|
||||
mode: "single" | "multi";
|
||||
info: {
|
||||
name: string;
|
||||
verifiedLength: string;
|
||||
verifyIntegrityPending: string;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
export default class Aria2 {
|
||||
constructor(options: any);
|
||||
open: () => Promise<void>;
|
||||
call(
|
||||
method: "addUri",
|
||||
uris: string[],
|
||||
options: { dir: string }
|
||||
): Promise<string>;
|
||||
call(
|
||||
method: "tellStatus",
|
||||
gid: string,
|
||||
keys?: string[]
|
||||
): Promise<StatusResponse>;
|
||||
call(method: "pause", gid: string): Promise<string>;
|
||||
call(method: "forcePause", gid: string): Promise<string>;
|
||||
call(method: "unpause", gid: string): Promise<string>;
|
||||
call(method: "remove", gid: string): Promise<string>;
|
||||
call(method: "forceRemove", gid: string): Promise<string>;
|
||||
call(method: "pauseAll"): Promise<string>;
|
||||
call(method: "forcePauseAll"): Promise<string>;
|
||||
listNotifications: () => [
|
||||
"onDownloadStart",
|
||||
"onDownloadPause",
|
||||
"onDownloadStop",
|
||||
"onDownloadComplete",
|
||||
"onDownloadError",
|
||||
"onBtDownloadComplete",
|
||||
];
|
||||
on: (event: string, callback: (params: any) => void) => void;
|
||||
}
|
||||
}
|
||||
@@ -1,21 +1,21 @@
|
||||
import {
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
OneToOne,
|
||||
JoinColumn,
|
||||
} from "typeorm";
|
||||
import type { Game } from "./game.entity";
|
||||
|
||||
@Entity("image_cache")
|
||||
export class ImageCache {
|
||||
@Entity("download_queue")
|
||||
export class DownloadQueue {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@Column("text", { unique: true })
|
||||
url: string;
|
||||
|
||||
@Column("text")
|
||||
data: string;
|
||||
@OneToOne("Game", "downloadQueue")
|
||||
@JoinColumn()
|
||||
game: Game;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
41
src/main/entity/download-source.entity.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import {
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
OneToMany,
|
||||
} from "typeorm";
|
||||
import type { Repack } from "./repack.entity";
|
||||
|
||||
import { DownloadSourceStatus } from "@shared";
|
||||
|
||||
@Entity("download_source")
|
||||
export class DownloadSource {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@Column("text", { nullable: true, unique: true })
|
||||
url: string;
|
||||
|
||||
@Column("text")
|
||||
name: string;
|
||||
|
||||
@Column("text", { nullable: true })
|
||||
etag: string | null;
|
||||
|
||||
@Column("int", { default: 0 })
|
||||
downloadCount: number;
|
||||
|
||||
@Column("text", { default: DownloadSourceStatus.UpToDate })
|
||||
status: DownloadSourceStatus;
|
||||
|
||||
@OneToMany("Repack", "downloadSource", { cascade: true })
|
||||
repacks: Repack[];
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@UpdateDateColumn()
|
||||
updatedAt: Date;
|
||||
}
|
||||
@@ -7,9 +7,12 @@ import {
|
||||
OneToOne,
|
||||
JoinColumn,
|
||||
} from "typeorm";
|
||||
import type { GameShop } from "@types";
|
||||
import { Repack } from "./repack.entity";
|
||||
|
||||
import type { GameShop, GameStatus } from "@types";
|
||||
import { Downloader } from "@shared";
|
||||
import type { DownloadQueue } from "./download-queue.entity";
|
||||
|
||||
@Entity("game")
|
||||
export class Game {
|
||||
@PrimaryGeneratedColumn()
|
||||
@@ -18,11 +21,14 @@ export class Game {
|
||||
@Column("text", { unique: true })
|
||||
objectID: string;
|
||||
|
||||
@Column("text", { unique: true, nullable: true })
|
||||
remoteId: string | null;
|
||||
|
||||
@Column("text")
|
||||
title: string;
|
||||
|
||||
@Column("text")
|
||||
iconUrl: string;
|
||||
@Column("text", { nullable: true })
|
||||
iconUrl: string | null;
|
||||
|
||||
@Column("text", { nullable: true })
|
||||
folderName: string | null;
|
||||
@@ -40,27 +46,42 @@ export class Game {
|
||||
shop: GameShop;
|
||||
|
||||
@Column("text", { nullable: true })
|
||||
status: string;
|
||||
status: GameStatus | null;
|
||||
|
||||
@Column("int", { default: Downloader.Torrent })
|
||||
downloader: Downloader;
|
||||
|
||||
/**
|
||||
* Progress is a float between 0 and 1
|
||||
*/
|
||||
@Column("float", { default: 0 })
|
||||
progress: number;
|
||||
|
||||
@Column("float", { default: 0 })
|
||||
fileVerificationProgress: number;
|
||||
|
||||
@Column("int", { default: 0 })
|
||||
bytesDownloaded: number;
|
||||
|
||||
@Column("text", { nullable: true })
|
||||
@Column("datetime", { nullable: true })
|
||||
lastTimePlayed: Date | null;
|
||||
|
||||
@Column("float", { default: 0 })
|
||||
fileSize: number;
|
||||
|
||||
@OneToOne(() => Repack, { nullable: true })
|
||||
@Column("text", { nullable: true })
|
||||
uri: string | null;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
@OneToOne("Repack", "game", { nullable: true })
|
||||
@JoinColumn()
|
||||
repack: Repack;
|
||||
|
||||
@OneToOne("DownloadQueue", "game")
|
||||
downloadQueue: DownloadQueue;
|
||||
|
||||
@Column("boolean", { default: false })
|
||||
isDeleted: boolean;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
export * from "./game.entity";
|
||||
export * from "./image-cache.entity";
|
||||
export * from "./repack.entity";
|
||||
export * from "./repacker-friendly-name.entity";
|
||||
export * from "./user-preferences.entity";
|
||||
export * from "./game-shop-cache.entity";
|
||||
export * from "./migration-script.entity";
|
||||
export * from "./steam-game.entity";
|
||||
export * from "./download-source.entity";
|
||||
export * from "./download-queue.entity";
|
||||
export * from "./user-auth";
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
import {
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
} from "typeorm";
|
||||
|
||||
@Entity("migration_script")
|
||||
export class MigrationScript {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@Column("text", { unique: true })
|
||||
version: string;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@UpdateDateColumn()
|
||||
updatedAt: Date;
|
||||
}
|
||||
@@ -4,7 +4,9 @@ import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
ManyToOne,
|
||||
} from "typeorm";
|
||||
import { DownloadSource } from "./download-source.entity";
|
||||
|
||||
@Entity("repack")
|
||||
export class Repack {
|
||||
@@ -17,7 +19,10 @@ export class Repack {
|
||||
@Column("text", { unique: true })
|
||||
magnet: string;
|
||||
|
||||
@Column("int")
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
@Column("int", { nullable: true })
|
||||
page: number;
|
||||
|
||||
@Column("text")
|
||||
@@ -29,6 +34,9 @@ export class Repack {
|
||||
@Column("datetime")
|
||||
uploadDate: Date | string;
|
||||
|
||||
@ManyToOne(() => DownloadSource, { nullable: true, onDelete: "CASCADE" })
|
||||
downloadSource: DownloadSource;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
import {
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
} from "typeorm";
|
||||
|
||||
@Entity("repacker_friendly_name")
|
||||
export class RepackerFriendlyName {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@Column("text", { unique: true })
|
||||
name: string;
|
||||
|
||||
@Column("text")
|
||||
friendlyName: string;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@UpdateDateColumn()
|
||||
updatedAt: Date;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { Column, Entity, PrimaryColumn } from "typeorm";
|
||||
|
||||
@Entity("steam_game")
|
||||
export class SteamGame {
|
||||
@PrimaryColumn()
|
||||
id: number;
|
||||
|
||||
@Column()
|
||||
name: string;
|
||||
}
|
||||
37
src/main/entity/user-auth.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import {
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
} from "typeorm";
|
||||
|
||||
@Entity("user_auth")
|
||||
export class UserAuth {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@Column("text", { default: "" })
|
||||
userId: string;
|
||||
|
||||
@Column("text", { default: "" })
|
||||
displayName: string;
|
||||
|
||||
@Column("text", { nullable: true })
|
||||
profileImageUrl: string | null;
|
||||
|
||||
@Column("text", { default: "" })
|
||||
accessToken: string;
|
||||
|
||||
@Column("text", { default: "" })
|
||||
refreshToken: string;
|
||||
|
||||
@Column("int", { default: 0 })
|
||||
tokenExpirationTimestamp: number;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@UpdateDateColumn()
|
||||
updatedAt: Date;
|
||||
}
|
||||
@@ -17,14 +17,20 @@ export class UserPreferences {
|
||||
@Column("text", { default: "en" })
|
||||
language: string;
|
||||
|
||||
@Column("text", { nullable: true })
|
||||
realDebridApiToken: string | null;
|
||||
|
||||
@Column("boolean", { default: false })
|
||||
downloadNotificationsEnabled: boolean;
|
||||
|
||||
@Column("boolean", { default: false })
|
||||
repackUpdatesNotificationsEnabled: boolean;
|
||||
|
||||
@Column("boolean", { default: true })
|
||||
telemetryEnabled: boolean;
|
||||
@Column("boolean", { default: false })
|
||||
preferQuitInsteadOfHiding: boolean;
|
||||
|
||||
@Column("boolean", { default: false })
|
||||
runAtStartup: boolean;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
18
src/main/events/auth/get-session-hash.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import jwt from "jsonwebtoken";
|
||||
import * as Sentry from "@sentry/electron/main";
|
||||
|
||||
import { userAuthRepository } from "@main/repository";
|
||||
import { registerEvent } from "../register-event";
|
||||
|
||||
const getSessionHash = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
const auth = await userAuthRepository.findOne({ where: { id: 1 } });
|
||||
|
||||
if (!auth) return null;
|
||||
const payload = jwt.decode(auth.accessToken) as jwt.JwtPayload;
|
||||
|
||||
Sentry.setContext("sessionId", payload.sessionId);
|
||||
|
||||
return payload.sessionId;
|
||||
};
|
||||
|
||||
registerEvent("getSessionHash", getSessionHash);
|
||||
7
src/main/events/auth/open-auth-window.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import { registerEvent } from "../register-event";
|
||||
import { WindowManager } from "@main/services";
|
||||
|
||||
const openAuthWindow = async (_event: Electron.IpcMainInvokeEvent) =>
|
||||
WindowManager.openAuthWindow();
|
||||
|
||||
registerEvent("openAuthWindow", openAuthWindow);
|
||||
35
src/main/events/auth/sign-out.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { registerEvent } from "../register-event";
|
||||
import * as Sentry from "@sentry/electron/main";
|
||||
import { HydraApi, PythonInstance, gamesPlaytime } from "@main/services";
|
||||
import { dataSource } from "@main/data-source";
|
||||
import { DownloadQueue, Game, UserAuth } from "@main/entity";
|
||||
|
||||
const signOut = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
const databaseOperations = dataSource
|
||||
.transaction(async (transactionalEntityManager) => {
|
||||
await transactionalEntityManager.getRepository(DownloadQueue).delete({});
|
||||
|
||||
await transactionalEntityManager.getRepository(Game).delete({});
|
||||
|
||||
await transactionalEntityManager
|
||||
.getRepository(UserAuth)
|
||||
.delete({ id: 1 });
|
||||
})
|
||||
.then(() => {
|
||||
/* Removes all games being played */
|
||||
gamesPlaytime.clear();
|
||||
});
|
||||
|
||||
/* Removes user from Sentry */
|
||||
Sentry.setUser(null);
|
||||
|
||||
/* Disconnects libtorrent */
|
||||
PythonInstance.killTorrent();
|
||||
|
||||
await Promise.all([
|
||||
databaseOperations,
|
||||
HydraApi.post("/auth/logout").catch(() => {}),
|
||||
]);
|
||||
};
|
||||
|
||||
registerEvent("signOut", signOut);
|
||||
47
src/main/events/autoupdater/check-for-updates.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import { AppUpdaterEvent } from "@types";
|
||||
import { registerEvent } from "../register-event";
|
||||
import updater, { UpdateInfo } from "electron-updater";
|
||||
import { WindowManager } from "@main/services";
|
||||
import { app } from "electron";
|
||||
import { publishNotificationUpdateReadyToInstall } from "@main/services/notifications";
|
||||
|
||||
const { autoUpdater } = updater;
|
||||
|
||||
const sendEvent = (event: AppUpdaterEvent) => {
|
||||
WindowManager.mainWindow?.webContents.send("autoUpdaterEvent", event);
|
||||
};
|
||||
|
||||
const sendEventsForDebug = false;
|
||||
|
||||
const isAutoInstallAvailable =
|
||||
process.platform !== "darwin" && process.env.PORTABLE_EXECUTABLE_FILE == null;
|
||||
|
||||
const mockValuesForDebug = () => {
|
||||
sendEvent({ type: "update-available", info: { version: "1.3.0" } });
|
||||
sendEvent({ type: "update-downloaded" });
|
||||
};
|
||||
|
||||
const newVersionInfo = { version: "" };
|
||||
|
||||
const checkForUpdates = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
autoUpdater
|
||||
.once("update-available", (info: UpdateInfo) => {
|
||||
sendEvent({ type: "update-available", info });
|
||||
newVersionInfo.version = info.version;
|
||||
})
|
||||
.once("update-downloaded", () => {
|
||||
sendEvent({ type: "update-downloaded" });
|
||||
publishNotificationUpdateReadyToInstall(newVersionInfo.version);
|
||||
});
|
||||
|
||||
if (app.isPackaged) {
|
||||
autoUpdater.autoDownload = isAutoInstallAvailable;
|
||||
autoUpdater.checkForUpdates();
|
||||
} else if (sendEventsForDebug) {
|
||||
mockValuesForDebug();
|
||||
}
|
||||
|
||||
return isAutoInstallAvailable;
|
||||
};
|
||||
|
||||
registerEvent("checkForUpdates", checkForUpdates);
|
||||
14
src/main/events/autoupdater/restart-and-install-update.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { app } from "electron";
|
||||
import { registerEvent } from "../register-event";
|
||||
import updater from "electron-updater";
|
||||
|
||||
const { autoUpdater } = updater;
|
||||
|
||||
const restartAndInstallUpdate = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
autoUpdater.removeAllListeners();
|
||||
if (app.isPackaged) {
|
||||
autoUpdater.quitAndInstall(true, true);
|
||||
}
|
||||
};
|
||||
|
||||
registerEvent("restartAndInstallUpdate", restartAndInstallUpdate);
|
||||
@@ -1,117 +1,36 @@
|
||||
import { formatName, getSteamAppAsset, repackerFormatter } from "@main/helpers";
|
||||
import type { CatalogueCategory, CatalogueEntry, GameShop } from "@types";
|
||||
import { getSteamAppAsset } from "@main/helpers";
|
||||
import type { CatalogueEntry, GameShop } from "@types";
|
||||
|
||||
import { stateManager } from "@main/state-manager";
|
||||
import { searchGames, searchRepacks } from "../helpers/search-games";
|
||||
import { registerEvent } from "../register-event";
|
||||
import { requestSteam250 } from "@main/services";
|
||||
import { RepacksManager, requestSteam250 } from "@main/services";
|
||||
import { formatName } from "@shared";
|
||||
|
||||
const repacks = stateManager.getValue("repacks");
|
||||
const resultSize = 12;
|
||||
|
||||
interface GetStringForLookup {
|
||||
(index: number): string;
|
||||
}
|
||||
|
||||
const getCatalogue = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
category: CatalogueCategory
|
||||
) => {
|
||||
const getStringForLookup = (index: number): string => {
|
||||
const repack = repacks[index];
|
||||
const formatter =
|
||||
repackerFormatter[repack.repacker as keyof typeof repackerFormatter];
|
||||
|
||||
return formatName(formatter(repack.title));
|
||||
};
|
||||
|
||||
if (!repacks.length) return [];
|
||||
|
||||
const resultSize = 12;
|
||||
|
||||
if (category === "trending") {
|
||||
return getTrendingCatalogue(resultSize);
|
||||
} else {
|
||||
return getRecentlyAddedCatalogue(
|
||||
resultSize,
|
||||
resultSize,
|
||||
getStringForLookup
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
const getTrendingCatalogue = async (
|
||||
resultSize: number
|
||||
): Promise<CatalogueEntry[]> => {
|
||||
const results: CatalogueEntry[] = [];
|
||||
const trendingGames = await requestSteam250("/30day");
|
||||
for (
|
||||
let i = 0;
|
||||
i < trendingGames.length && results.length < resultSize;
|
||||
i++
|
||||
) {
|
||||
if (!trendingGames[i]) continue;
|
||||
|
||||
const { title, objectID } = trendingGames[i];
|
||||
const repacks = searchRepacks(title);
|
||||
|
||||
if (title && repacks.length) {
|
||||
const catalogueEntry = {
|
||||
objectID,
|
||||
title,
|
||||
shop: "steam" as GameShop,
|
||||
cover: getSteamAppAsset("library", objectID),
|
||||
};
|
||||
|
||||
results.push({ ...catalogueEntry, repacks });
|
||||
}
|
||||
}
|
||||
return results;
|
||||
};
|
||||
|
||||
const getRecentlyAddedCatalogue = async (
|
||||
resultSize: number,
|
||||
requestSize: number,
|
||||
getStringForLookup: GetStringForLookup
|
||||
): Promise<CatalogueEntry[]> => {
|
||||
let lookupRequest = [];
|
||||
const getCatalogue = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
const trendingGames = await requestSteam250("/90day");
|
||||
const results: CatalogueEntry[] = [];
|
||||
|
||||
for (let i = 0; results.length < resultSize; i++) {
|
||||
const stringForLookup = getStringForLookup(i);
|
||||
|
||||
if (!stringForLookup) {
|
||||
for (let i = 0; i < resultSize; i++) {
|
||||
if (!trendingGames[i]) {
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
lookupRequest.push(searchGames({ query: stringForLookup }));
|
||||
const { title, objectID } = trendingGames[i]!;
|
||||
const repacks = RepacksManager.search({ query: formatName(title) });
|
||||
|
||||
if (lookupRequest.length < requestSize) {
|
||||
continue;
|
||||
}
|
||||
const catalogueEntry = {
|
||||
objectID,
|
||||
title,
|
||||
shop: "steam" as GameShop,
|
||||
cover: getSteamAppAsset("library", objectID),
|
||||
};
|
||||
|
||||
const games = (await Promise.all(lookupRequest)).map((value) =>
|
||||
value.at(0)
|
||||
);
|
||||
|
||||
for (const game of games) {
|
||||
const isAlreadyIncluded = results.some(
|
||||
(result) => result.objectID === game?.objectID
|
||||
);
|
||||
|
||||
if (!game || !game.repacks.length || isAlreadyIncluded) {
|
||||
continue;
|
||||
}
|
||||
|
||||
results.push(game);
|
||||
}
|
||||
lookupRequest = [];
|
||||
results.push({ ...catalogueEntry, repacks });
|
||||
}
|
||||
|
||||
return results.slice(0, resultSize);
|
||||
return results;
|
||||
};
|
||||
|
||||
registerEvent(getCatalogue, {
|
||||
name: "getCatalogue",
|
||||
memoize: true,
|
||||
});
|
||||
registerEvent("getCatalogue", getCatalogue);
|
||||
|
||||
@@ -4,7 +4,33 @@ import { getSteamAppDetails } from "@main/services";
|
||||
import type { ShopDetails, GameShop, SteamAppDetails } from "@types";
|
||||
|
||||
import { registerEvent } from "../register-event";
|
||||
import { searchRepacks } from "../helpers/search-games";
|
||||
import { steamGamesWorker } from "@main/workers";
|
||||
|
||||
const getLocalizedSteamAppDetails = async (
|
||||
objectID: string,
|
||||
language: string
|
||||
): Promise<ShopDetails | null> => {
|
||||
if (language === "english") {
|
||||
return getSteamAppDetails(objectID, language);
|
||||
}
|
||||
|
||||
return getSteamAppDetails(objectID, language).then(
|
||||
async (localizedAppDetails) => {
|
||||
const steamGame = await steamGamesWorker.run(Number(objectID), {
|
||||
name: "getById",
|
||||
});
|
||||
|
||||
if (steamGame && localizedAppDetails) {
|
||||
return {
|
||||
...localizedAppDetails,
|
||||
name: steamGame.name,
|
||||
};
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
const getGameShopDetails = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
@@ -17,27 +43,21 @@ const getGameShopDetails = async (
|
||||
where: { objectID, language },
|
||||
});
|
||||
|
||||
const result = Promise.all([
|
||||
getSteamAppDetails(objectID, "english"),
|
||||
getSteamAppDetails(objectID, language),
|
||||
]).then(([appDetails, localizedAppDetails]) => {
|
||||
if (appDetails && localizedAppDetails) {
|
||||
const appDetails = getLocalizedSteamAppDetails(objectID, language).then(
|
||||
(result) => {
|
||||
gameShopCacheRepository.upsert(
|
||||
{
|
||||
objectID,
|
||||
shop: "steam",
|
||||
language,
|
||||
serializedData: JSON.stringify({
|
||||
...localizedAppDetails,
|
||||
name: appDetails.name,
|
||||
}),
|
||||
serializedData: JSON.stringify(result),
|
||||
},
|
||||
["objectID"]
|
||||
);
|
||||
}
|
||||
|
||||
return [appDetails, localizedAppDetails];
|
||||
});
|
||||
return result;
|
||||
}
|
||||
);
|
||||
|
||||
const cachedGame = cachedData?.serializedData
|
||||
? (JSON.parse(cachedData?.serializedData) as SteamAppDetails)
|
||||
@@ -46,27 +66,14 @@ const getGameShopDetails = async (
|
||||
if (cachedGame) {
|
||||
return {
|
||||
...cachedGame,
|
||||
repacks: searchRepacks(cachedGame.name),
|
||||
objectID,
|
||||
} as ShopDetails;
|
||||
}
|
||||
|
||||
return result.then(([appDetails, localizedAppDetails]) => {
|
||||
if (!appDetails || !localizedAppDetails) return null;
|
||||
|
||||
return {
|
||||
...localizedAppDetails,
|
||||
name: appDetails.name,
|
||||
repacks: searchRepacks(appDetails.name),
|
||||
objectID,
|
||||
} as ShopDetails;
|
||||
});
|
||||
return Promise.resolve(appDetails);
|
||||
}
|
||||
|
||||
throw new Error("Not implemented");
|
||||
};
|
||||
|
||||
registerEvent(getGameShopDetails, {
|
||||
name: "getGameShopDetails",
|
||||
memoize: true,
|
||||
});
|
||||
registerEvent("getGameShopDetails", getGameShopDetails);
|
||||
|
||||
@@ -1,42 +1,28 @@
|
||||
import type { CatalogueEntry, GameShop } from "@types";
|
||||
import type { CatalogueEntry } from "@types";
|
||||
|
||||
import { registerEvent } from "../register-event";
|
||||
import { searchRepacks } from "../helpers/search-games";
|
||||
import { stateManager } from "@main/state-manager";
|
||||
import { getSteamAppAsset } from "@main/helpers";
|
||||
|
||||
const steamGames = stateManager.getValue("steamGames");
|
||||
import { steamGamesWorker } from "@main/workers";
|
||||
import { convertSteamGameToCatalogueEntry } from "../helpers/search-games";
|
||||
import { RepacksManager } from "@main/services";
|
||||
|
||||
const getGames = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
take?: number,
|
||||
take = 12,
|
||||
cursor = 0
|
||||
): Promise<{ results: CatalogueEntry[]; cursor: number }> => {
|
||||
const results: CatalogueEntry[] = [];
|
||||
const steamGames = await steamGamesWorker.run(
|
||||
{ limit: take, offset: cursor },
|
||||
{ name: "list" }
|
||||
);
|
||||
|
||||
let i = 0 + cursor;
|
||||
const entries = RepacksManager.findRepacksForCatalogueEntries(
|
||||
steamGames.map((game) => convertSteamGameToCatalogueEntry(game))
|
||||
);
|
||||
|
||||
while (results.length < take) {
|
||||
const game = steamGames[i];
|
||||
const repacks = searchRepacks(game.name);
|
||||
|
||||
if (repacks.length) {
|
||||
results.push({
|
||||
objectID: String(game.id),
|
||||
title: game.name,
|
||||
shop: "steam" as GameShop,
|
||||
cover: getSteamAppAsset("library", String(game.id)),
|
||||
repacks,
|
||||
});
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return { results, cursor: i };
|
||||
return {
|
||||
results: entries,
|
||||
cursor: cursor + entries.length,
|
||||
};
|
||||
};
|
||||
|
||||
registerEvent(getGames, {
|
||||
name: "getGames",
|
||||
memoize: true,
|
||||
});
|
||||
registerEvent("getGames", getGames);
|
||||
|
||||
@@ -42,7 +42,4 @@ const getHowLongToBeat = async (
|
||||
});
|
||||
};
|
||||
|
||||
registerEvent(getHowLongToBeat, {
|
||||
name: "getHowLongToBeat",
|
||||
memoize: true,
|
||||
});
|
||||
registerEvent("getHowLongToBeat", getHowLongToBeat);
|
||||
|
||||
@@ -1,29 +1,52 @@
|
||||
import shuffle from "lodash/shuffle";
|
||||
import { shuffle } from "lodash-es";
|
||||
|
||||
import { getRandomSteam250List } from "@main/services";
|
||||
import { getSteam250List } from "@main/services";
|
||||
|
||||
import { registerEvent } from "../register-event";
|
||||
import { searchGames, searchRepacks } from "../helpers/search-games";
|
||||
import { formatName } from "@main/helpers";
|
||||
import { searchSteamGames } from "../helpers/search-games";
|
||||
import type { Steam250Game } from "@types";
|
||||
|
||||
const getRandomGame = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
return getRandomSteam250List().then(async (games) => {
|
||||
const shuffledList = shuffle(games);
|
||||
const state = { games: Array<Steam250Game>(), index: 0 };
|
||||
|
||||
for (const game of shuffledList) {
|
||||
const repacks = searchRepacks(formatName(game.title));
|
||||
const filterGames = async (games: Steam250Game[]) => {
|
||||
const results: Steam250Game[] = [];
|
||||
|
||||
if (repacks.length) {
|
||||
const results = await searchGames({ query: game.title });
|
||||
for (const game of games) {
|
||||
const catalogue = await searchSteamGames({ query: game.title });
|
||||
|
||||
if (results.length) {
|
||||
return results[0].objectID;
|
||||
}
|
||||
if (catalogue.length) {
|
||||
const [steamGame] = catalogue;
|
||||
|
||||
if (steamGame.repacks.length) {
|
||||
results.push(game);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return results;
|
||||
};
|
||||
|
||||
registerEvent(getRandomGame, {
|
||||
name: "getRandomGame",
|
||||
});
|
||||
const getRandomGame = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
if (state.games.length == 0) {
|
||||
const steam250List = await getSteam250List();
|
||||
|
||||
const filteredSteam250List = await filterGames(steam250List);
|
||||
|
||||
state.games = shuffle(filteredSteam250List);
|
||||
}
|
||||
|
||||
if (state.games.length == 0) {
|
||||
return "";
|
||||
}
|
||||
|
||||
state.index += 1;
|
||||
|
||||
if (state.index == state.games.length) {
|
||||
state.index = 0;
|
||||
state.games = shuffle(state.games);
|
||||
}
|
||||
|
||||
return state.games[state.index];
|
||||
};
|
||||
|
||||
registerEvent("getRandomGame", getRandomGame);
|
||||
|
||||
9
src/main/events/catalogue/search-game-repacks.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { RepacksManager } from "@main/services";
|
||||
import { registerEvent } from "../register-event";
|
||||
|
||||
const searchGameRepacks = (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
query: string
|
||||
) => RepacksManager.search({ query });
|
||||
|
||||
registerEvent("searchGameRepacks", searchGameRepacks);
|
||||
@@ -1,11 +1,10 @@
|
||||
import { registerEvent } from "../register-event";
|
||||
import { searchGames } from "../helpers/search-games";
|
||||
import { searchSteamGames } from "../helpers/search-games";
|
||||
import { CatalogueEntry } from "@types";
|
||||
|
||||
registerEvent(
|
||||
(_event: Electron.IpcMainInvokeEvent, query: string) =>
|
||||
searchGames({ query, take: 12 }),
|
||||
{
|
||||
name: "searchGames",
|
||||
memoize: true,
|
||||
}
|
||||
);
|
||||
const searchGamesEvent = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
query: string
|
||||
): Promise<CatalogueEntry[]> => searchSteamGames({ query, limit: 12 });
|
||||
|
||||
registerEvent("searchGames", searchGamesEvent);
|
||||
|
||||
42
src/main/events/download-sources/add-download-source.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import { registerEvent } from "../register-event";
|
||||
import { dataSource } from "@main/data-source";
|
||||
import { DownloadSource } from "@main/entity";
|
||||
import axios from "axios";
|
||||
import { downloadSourceSchema } from "../helpers/validators";
|
||||
import { insertDownloadsFromSource } from "@main/helpers";
|
||||
import { RepacksManager } from "@main/services";
|
||||
|
||||
const addDownloadSource = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
url: string
|
||||
) => {
|
||||
const response = await axios.get(url);
|
||||
|
||||
const source = downloadSourceSchema.parse(response.data);
|
||||
|
||||
const downloadSource = await dataSource.transaction(
|
||||
async (transactionalEntityManager) => {
|
||||
const downloadSource = await transactionalEntityManager
|
||||
.getRepository(DownloadSource)
|
||||
.save({
|
||||
url,
|
||||
name: source.name,
|
||||
downloadCount: source.downloads.length,
|
||||
});
|
||||
|
||||
await insertDownloadsFromSource(
|
||||
transactionalEntityManager,
|
||||
downloadSource,
|
||||
source.downloads
|
||||
);
|
||||
|
||||
return downloadSource;
|
||||
}
|
||||
);
|
||||
|
||||
await RepacksManager.updateRepacks();
|
||||
|
||||
return downloadSource;
|
||||
};
|
||||
|
||||
registerEvent("addDownloadSource", addDownloadSource);
|
||||
16
src/main/events/download-sources/get-download-sources.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { downloadSourceRepository } from "@main/repository";
|
||||
import { registerEvent } from "../register-event";
|
||||
|
||||
const getDownloadSources = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
return downloadSourceRepository
|
||||
.createQueryBuilder("downloadSource")
|
||||
.leftJoin("downloadSource.repacks", "repacks")
|
||||
.orderBy("downloadSource.createdAt", "DESC")
|
||||
.loadRelationCountAndMap(
|
||||
"downloadSource.repackCount",
|
||||
"downloadSource.repacks"
|
||||
)
|
||||
.getMany();
|
||||
};
|
||||
|
||||
registerEvent("getDownloadSources", getDownloadSources);
|
||||
13
src/main/events/download-sources/remove-download-source.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { downloadSourceRepository } from "@main/repository";
|
||||
import { registerEvent } from "../register-event";
|
||||
import { RepacksManager } from "@main/services";
|
||||
|
||||
const removeDownloadSource = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
id: number
|
||||
) => {
|
||||
await downloadSourceRepository.delete(id);
|
||||
await RepacksManager.updateRepacks();
|
||||
};
|
||||
|
||||
registerEvent("removeDownloadSource", removeDownloadSource);
|
||||
@@ -0,0 +1,7 @@
|
||||
import { registerEvent } from "../register-event";
|
||||
import { fetchDownloadSourcesAndUpdate } from "@main/helpers";
|
||||
|
||||
const syncDownloadSources = async (_event: Electron.IpcMainInvokeEvent) =>
|
||||
fetchDownloadSourcesAndUpdate();
|
||||
|
||||
registerEvent("syncDownloadSources", syncDownloadSources);
|
||||
27
src/main/events/download-sources/validate-download-source.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { registerEvent } from "../register-event";
|
||||
import { downloadSourceRepository } from "@main/repository";
|
||||
import { RepacksManager } from "@main/services";
|
||||
import { downloadSourceWorker } from "@main/workers";
|
||||
|
||||
const validateDownloadSource = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
url: string
|
||||
) => {
|
||||
const existingSource = await downloadSourceRepository.findOne({
|
||||
where: { url },
|
||||
});
|
||||
|
||||
if (existingSource)
|
||||
throw new Error("Source with the same url already exists");
|
||||
|
||||
const repacks = RepacksManager.repacks;
|
||||
|
||||
return downloadSourceWorker.run(
|
||||
{ url, repacks },
|
||||
{
|
||||
name: "validateDownloadSource",
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
registerEvent("validateDownloadSource", validateDownloadSource);
|
||||
@@ -1,11 +1,10 @@
|
||||
import checkDiskSpace from "check-disk-space";
|
||||
|
||||
import { registerEvent } from "../register-event";
|
||||
import { getDownloadsPath } from "../helpers/get-downloads-path";
|
||||
|
||||
const getDiskFreeSpace = async (_event: Electron.IpcMainInvokeEvent) =>
|
||||
checkDiskSpace(await getDownloadsPath());
|
||||
const getDiskFreeSpace = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
path: string
|
||||
) => checkDiskSpace(path);
|
||||
|
||||
registerEvent(getDiskFreeSpace, {
|
||||
name: "getDiskFreeSpace",
|
||||
});
|
||||
registerEvent("getDiskFreeSpace", getDiskFreeSpace);
|
||||
|
||||