Compare commits
822 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba2ac1eb93 | ||
|
|
726d99a5c7 | ||
|
|
402e5df9ac | ||
|
|
0ee55b7fd5 | ||
|
|
8286390d9f | ||
|
|
6e00fb8e13 | ||
|
|
9f5d8cadda | ||
|
|
9060d435cf | ||
|
|
d8e7fca224 | ||
|
|
3bef2633fd | ||
|
|
db2688f3a7 | ||
|
|
4e282921ef | ||
|
|
b22b998c29 | ||
|
|
423693040b | ||
|
|
c098d8ffcf | ||
|
|
e1904b853e | ||
|
|
520eb91a55 | ||
|
|
16eaf4261a | ||
|
|
ec289fe4c7 | ||
|
|
1f000ab2b2 | ||
|
|
d6bd0ec221 | ||
|
|
a9f8d1b42c | ||
|
|
f5d5aa39dc | ||
|
|
83e662f633 | ||
|
|
c7b924bf2f | ||
|
|
e0d69ccf9d | ||
|
|
aa4e71076d | ||
|
|
eccff27739 | ||
|
|
601b3b0a00 | ||
|
|
1ceea5d5a3 | ||
|
|
9c99724e7d | ||
|
|
55e0f42702 | ||
|
|
b355930eaf | ||
|
|
57b47951a1 | ||
|
|
4780640ed0 | ||
|
|
8b92c8fdd9 | ||
|
|
acd98d0aad | ||
|
|
27239f848e | ||
|
|
c4d0a8eb94 | ||
|
|
60b12b2435 | ||
|
|
1c9515516f | ||
|
|
58a89372ab | ||
|
|
90841bf5e4 | ||
|
|
5564644378 | ||
|
|
89bfb517fb | ||
|
|
e1a1136e05 | ||
|
|
4c6f87f6e7 | ||
|
|
3613ad156b | ||
|
|
e50cb74d1d | ||
|
|
36800c6368 | ||
|
|
f67395c94c | ||
|
|
f8b9fe80fd | ||
|
|
e211517e24 | ||
|
|
538d3e5982 | ||
|
|
60e0b39f86 | ||
|
|
789bccf77a | ||
|
|
ce3ed6f17c | ||
|
|
54c6b1f1af | ||
|
|
dfb50e9a06 | ||
|
|
017954b646 | ||
|
|
73ac809bb3 | ||
|
|
c0f35c5c54 | ||
|
|
84b10eaa0b | ||
|
|
813b9e1586 | ||
|
|
92cdfa0526 | ||
|
|
a06333f716 | ||
|
|
01e3054ce9 | ||
|
|
549ea750c0 | ||
|
|
aab4197156 | ||
|
|
1bd32012d3 | ||
|
|
9f84538b76 | ||
|
|
e53f4808d5 | ||
|
|
9b9545fb8f | ||
|
|
cbfe831e0c | ||
|
|
7d277e0133 | ||
|
|
d072a14aa3 | ||
|
|
ddc8d67d84 | ||
|
|
a499aae31f | ||
|
|
aa0321df8f | ||
|
|
4aa7df65f5 | ||
|
|
8dbb0726d0 | ||
|
|
53b0c0b08f | ||
|
|
502f3b4aa7 | ||
|
|
85422837b0 | ||
|
|
26a35a902c | ||
|
|
f2a058c8c5 | ||
|
|
1b837377cb | ||
|
|
7c497977a2 | ||
|
|
8c1c86c374 | ||
|
|
9e714f811b | ||
|
|
a4754c947f | ||
|
|
fdced15e40 | ||
|
|
4c137d4602 | ||
|
|
711cbb906c | ||
|
|
2e6766f195 | ||
|
|
87bcfe90fe | ||
|
|
54886a2c5a | ||
|
|
550cd3b3d5 | ||
|
|
f1c83808fb | ||
|
|
fbe3276bac | ||
|
|
1479c15312 | ||
|
|
f738f91f24 | ||
|
|
aaecd203e1 | ||
|
|
4af5535f81 | ||
|
|
b5a9beb481 | ||
|
|
ed351109ba | ||
|
|
3ed5a2ff64 | ||
|
|
b8f5f90929 | ||
|
|
1115cc03b1 | ||
|
|
17879f9c70 | ||
|
|
1ff33be36f | ||
|
|
0f396b83f1 | ||
|
|
e02875ad56 | ||
|
|
230c24cca5 | ||
|
|
f853a2a39e | ||
|
|
843301c8b6 | ||
|
|
ea90b49604 | ||
|
|
cf39b426e1 | ||
|
|
b74035979f | ||
|
|
a3caa62ed3 | ||
|
|
2b44728c0e | ||
|
|
56217fbcf8 | ||
|
|
c9be6b6b92 | ||
|
|
07d0e86031 | ||
|
|
59846cfe2f | ||
|
|
ea3d922242 | ||
|
|
f9719c995c | ||
|
|
c755aa388b | ||
|
|
af2b422154 | ||
|
|
e463ee569a | ||
|
|
8f169ee113 | ||
|
|
b8c456eb71 | ||
|
|
35d14b33ca | ||
|
|
3aa8230e17 | ||
|
|
4476b1b216 | ||
|
|
12c827fe2a | ||
|
|
6db6c14016 | ||
|
|
3a1fa9ab00 | ||
|
|
fb8682e88d | ||
|
|
618d6f8337 | ||
|
|
214f7d3523 | ||
|
|
b439a1af3f | ||
|
|
602ee61cb6 | ||
|
|
4d0a75e61f | ||
|
|
cabddfb926 | ||
|
|
c20369fa57 | ||
|
|
d6b5fd1b9f | ||
|
|
4edf1ed41f | ||
|
|
4607665908 | ||
|
|
c9f8148acf | ||
|
|
1fd930b0a3 | ||
|
|
c9c6d5ee46 | ||
|
|
496924b2a4 | ||
|
|
32032e1c8a | ||
|
|
65b1ec9b1f | ||
|
|
7b724d4185 | ||
|
|
c8566dd2be | ||
|
|
79bb12ee61 | ||
|
|
db01980eb8 | ||
|
|
859d849d36 | ||
|
|
855f0aa334 | ||
|
|
313ebc6055 | ||
|
|
041b7d520c | ||
|
|
93bc7c690f | ||
|
|
58a8f6fd6e | ||
|
|
1522b00579 | ||
|
|
93712a7f5e | ||
|
|
abb3db4e30 | ||
|
|
bd184fceda | ||
|
|
93ef0c256e | ||
|
|
fd5b2e08a5 | ||
|
|
1a286df3f7 | ||
|
|
06e59fdfa0 | ||
|
|
9884a39abc | ||
|
|
90b320952b | ||
|
|
4b8569bd5e | ||
|
|
5714c23073 | ||
|
|
09ea3b27f4 | ||
|
|
5fbf0baa0f | ||
|
|
2c09520f98 | ||
|
|
87189c070e | ||
|
|
81cded0052 | ||
|
|
89cd970d5a | ||
|
|
c2b7fb4823 | ||
|
|
f37b92261f | ||
|
|
b28d34cf66 | ||
|
|
a21c3dcdf1 | ||
|
|
59655a819a | ||
|
|
d3450c5f65 | ||
|
|
3af0ae9f85 | ||
|
|
a557bbb948 | ||
|
|
e78de55fe7 | ||
|
|
065ea0c6fe | ||
|
|
9b22251705 | ||
|
|
721d0c6da1 | ||
|
|
170ac28bb5 | ||
|
|
3be9053b76 | ||
|
|
ede1dbc5e7 | ||
|
|
5551125865 | ||
|
|
eb744346f0 | ||
|
|
5d5ce092b7 | ||
|
|
109c12064d | ||
|
|
c9a553c5d3 | ||
|
|
1fae3066fa | ||
|
|
c8d1b2c19a | ||
|
|
be89e0d60b | ||
|
|
076f33605a | ||
|
|
eaf099d2ce | ||
|
|
007731b71c | ||
|
|
0ca6c2cbff | ||
|
|
94f0df096d | ||
|
|
55ed27511f | ||
|
|
294700a6ca | ||
|
|
dfe70a5a95 | ||
|
|
bc98f7c55e | ||
|
|
e2d16ba63e | ||
|
|
4f7255a8d9 | ||
|
|
ad59fcd3e9 | ||
|
|
5222d319a3 | ||
|
|
1f3a6a9da6 | ||
|
|
d687c156ff | ||
|
|
e95407e6f5 | ||
|
|
23f9b5228c | ||
|
|
ac0d0efe0f | ||
|
|
4c3eb98041 | ||
|
|
ce2cf89fd6 | ||
|
|
347e38c413 | ||
|
|
3a964dcf17 | ||
|
|
f2714bd0ab | ||
|
|
66a8170fd2 | ||
|
|
9f8269d9a9 | ||
|
|
64745b9147 | ||
|
|
b0bf33191b | ||
|
|
500db90974 | ||
|
|
e5f575705f | ||
|
|
1acafe5b8f | ||
|
|
fcfaae7b58 | ||
|
|
311b011ec6 | ||
|
|
efcf778c95 | ||
|
|
149c278e22 | ||
|
|
431ad2ff2c | ||
|
|
93a77dc027 | ||
|
|
e5c6b54e7b | ||
|
|
859dbb8655 | ||
|
|
6c2f25a9a3 | ||
|
|
75140ccf97 | ||
|
|
df46f1f1d0 | ||
|
|
166e53ceaa | ||
|
|
165e346d38 | ||
|
|
8485544731 | ||
|
|
feb325c2c7 | ||
|
|
c611ff2229 | ||
|
|
e75b2960c0 | ||
|
|
1ffb9828f7 | ||
|
|
fee1a92715 | ||
|
|
8d7553e1cc | ||
|
|
a40638b657 | ||
|
|
d9adc49e9f | ||
|
|
5607f6d524 | ||
|
|
d821fd7800 | ||
|
|
e87f287476 | ||
|
|
c2a52d3c18 | ||
|
|
08d320ad1c | ||
|
|
d17abdcd11 | ||
|
|
19485b5ba1 | ||
|
|
1ea98613fb | ||
|
|
b8b000d88c | ||
|
|
1e99dae9de | ||
|
|
1e78532dc5 | ||
|
|
454beff2d3 | ||
|
|
6f417d23d1 | ||
|
|
58cbf78fb9 | ||
|
|
ff917b7ecf | ||
|
|
b2d6d7e736 | ||
|
|
95d320a0fe | ||
|
|
fd8c57bff0 | ||
|
|
36cb1e1103 | ||
|
|
77e0be8234 | ||
|
|
4b93b91373 | ||
|
|
639c7ef1e6 | ||
|
|
95ae59c7a3 | ||
|
|
9e73a44426 | ||
|
|
2c93312df0 | ||
|
|
09cf207ecc | ||
|
|
1d13b7bede | ||
|
|
5b104ecb42 | ||
|
|
235045dec4 | ||
|
|
fa273a13f2 | ||
|
|
d8b59cae05 | ||
|
|
45f2727415 | ||
|
|
7e44b3dedb | ||
|
|
0dea700479 | ||
|
|
56247eaf7b | ||
|
|
590a15e534 | ||
|
|
fb1cc9b82c | ||
|
|
7595f19af3 | ||
|
|
e978d84f5f | ||
|
|
0157d546e4 | ||
|
|
4f5dc51a68 | ||
|
|
938650dbde | ||
|
|
bae9e57fcd | ||
|
|
6a673f0c6b | ||
|
|
a962d839a8 | ||
|
|
173fb41e63 | ||
|
|
26cbeee5af | ||
|
|
f6b5263814 | ||
|
|
3b7ddd0170 | ||
|
|
600cbfe861 | ||
|
|
994f4568a4 | ||
|
|
1de973ebd0 | ||
|
|
4f6d3d7057 | ||
|
|
124e38c782 | ||
|
|
c9eed85a00 | ||
|
|
988c01f506 | ||
|
|
5450443022 | ||
|
|
590a1b354d | ||
|
|
2dcb629c2d | ||
|
|
96feaf8d42 | ||
|
|
4cb3258e17 | ||
|
|
9b9b3f73d0 | ||
|
|
de36965017 | ||
|
|
e9fddd2456 | ||
|
|
8b4791f1f4 | ||
|
|
281208a8aa | ||
|
|
5f9397f6db | ||
|
|
870e45991b | ||
|
|
38e94c92d7 | ||
|
|
93fbf7657d | ||
|
|
0fc6d69851 | ||
|
|
7f600a0cbf | ||
|
|
d7e06d6622 | ||
|
|
c6d4b658a1 | ||
|
|
a847f9370c | ||
|
|
fe8f962fb0 | ||
|
|
4060f7a1a6 | ||
|
|
5bc424796a | ||
|
|
7f33b63bed | ||
|
|
2d8b63c803 | ||
|
|
6259cf4104 | ||
|
|
f35c34fa63 | ||
|
|
57e0fb493f | ||
|
|
730ea4f2b9 | ||
|
|
948965dda5 | ||
|
|
f2cc20cb7c | ||
|
|
46c3b33548 | ||
|
|
7785d42021 | ||
|
|
130c23603f | ||
|
|
330341392d | ||
|
|
9d1c04d07a | ||
|
|
94ef1679a9 | ||
|
|
ca953de464 | ||
|
|
2c1c3e3c98 | ||
|
|
40ec773425 | ||
|
|
a7b8018ed9 | ||
|
|
8cfe5b4d34 | ||
|
|
a2e41b81a3 | ||
|
|
ee4639e041 | ||
|
|
6e6469d90f | ||
|
|
a53793a76b | ||
|
|
d046f1ed21 | ||
|
|
da1ac788fb | ||
|
|
1980560a2d | ||
|
|
1416cd46a3 | ||
|
|
610b6e528c | ||
|
|
f66bdd706b | ||
|
|
518d919da5 | ||
|
|
9619578fcf | ||
|
|
56687948bf | ||
|
|
7166f66a9e | ||
|
|
8ec52bf193 | ||
|
|
cc3fc10ddf | ||
|
|
15ecba1f6e | ||
|
|
2828640ed7 | ||
|
|
c314c397a5 | ||
|
|
341903fc3e | ||
|
|
5078946191 | ||
|
|
7c039ead10 | ||
|
|
20c001914a | ||
|
|
77e9de704d | ||
|
|
34ec8467ec | ||
|
|
94b65c0357 | ||
|
|
b32952f076 | ||
|
|
eeae140a41 | ||
|
|
e277af0e4b | ||
|
|
8a67492cf8 | ||
|
|
c556a00e4a | ||
|
|
9c9c0e6c09 | ||
|
|
21ca26dcfe | ||
|
|
981dbceb93 | ||
|
|
aaee27732d | ||
|
|
e7acce2dfc | ||
|
|
56b15bf52a | ||
|
|
2f8fe67f9f | ||
|
|
b09e91a1cf | ||
|
|
9418c4acf7 | ||
|
|
0451bc55aa | ||
|
|
2840110a21 | ||
|
|
8c4eacf045 | ||
|
|
179785432d | ||
|
|
c3da39205f | ||
|
|
f071d1006b | ||
|
|
6da1832799 | ||
|
|
df0e124c3a | ||
|
|
25f1a72b48 | ||
|
|
2b5e76ffdd | ||
|
|
9d75e3ad6f | ||
|
|
ab5024ec4a | ||
|
|
bdaf4d6d9b | ||
|
|
6d53aaa631 | ||
|
|
e67d605949 | ||
|
|
b82840df3b | ||
|
|
42e0df29ee | ||
|
|
0745f5b401 | ||
|
|
1ab5b8bd00 | ||
|
|
dc93ef9134 | ||
|
|
943cfc2913 | ||
|
|
6b125aff27 | ||
|
|
3469b624d5 | ||
|
|
c498e331c7 | ||
|
|
c8165c10bf | ||
|
|
8af29abd92 | ||
|
|
5662ddd2be | ||
|
|
8f1e71010b | ||
|
|
71ff6c3c44 | ||
|
|
74cd60ff3d | ||
|
|
d09a441faa | ||
|
|
bef9ec30f9 | ||
|
|
3e33e1f4b3 | ||
|
|
c8485adac5 | ||
|
|
d623828fe5 | ||
|
|
0f5c7af703 | ||
|
|
b965d3aa0e | ||
|
|
1d6db5b76b | ||
|
|
0b896b8b7c | ||
|
|
93d12a9fb6 | ||
|
|
ce239e0e20 | ||
|
|
09af1d1f89 | ||
|
|
3b828ca0f4 | ||
|
|
4f4dd29e5f | ||
|
|
9189541c3a | ||
|
|
dcb6eb9ba6 | ||
|
|
e43365e568 | ||
|
|
9ee4e2e29b | ||
|
|
760030841a | ||
|
|
5fb08b39fa | ||
|
|
43558f8c0e | ||
|
|
554889fe7d | ||
|
|
25e1a15828 | ||
|
|
619090961b | ||
|
|
0ecd27d4d5 | ||
|
|
f585e343d9 | ||
|
|
0d68851cf4 | ||
|
|
36813d5f86 | ||
|
|
ad3b84b0ae | ||
|
|
9e020652c9 | ||
|
|
7af56cd7cc | ||
|
|
6dd454a982 | ||
|
|
fd80b85786 | ||
|
|
119af47d77 | ||
|
|
a419b9ae38 | ||
|
|
7d4d434164 | ||
|
|
5d304f9e13 | ||
|
|
a45e06efa3 | ||
|
|
e7292eb75e | ||
|
|
39f731352f | ||
|
|
9fa9f6d85a | ||
|
|
0a86ec89aa | ||
|
|
238d207590 | ||
|
|
98e2d2ec0d | ||
|
|
717dab5c90 | ||
|
|
d73a46aac2 | ||
|
|
9f9a4eba18 | ||
|
|
3bddd7e76b | ||
|
|
7cfc871be2 | ||
|
|
5705de7d7a | ||
|
|
b6fb29ca2d | ||
|
|
d094230614 | ||
|
|
742abb06ac | ||
|
|
e89f459c78 | ||
|
|
0dac4d5cf3 | ||
|
|
93fb26c89b | ||
|
|
446d6b75c0 | ||
|
|
8dd29c7461 | ||
|
|
0ad1a2e3fe | ||
|
|
3c03d5ce16 | ||
|
|
8d8b714c68 | ||
|
|
7d79048a25 | ||
|
|
4a3ba43dae | ||
|
|
dc413736e8 | ||
|
|
2d98addd02 | ||
|
|
b85e712d8c | ||
|
|
582c276e95 | ||
|
|
430b07eb89 | ||
|
|
b46f46bc45 | ||
|
|
fd41ec5070 | ||
|
|
25d0f77c1d | ||
|
|
c5b2a8242c | ||
|
|
8b7ce6b062 | ||
|
|
db58ff0ba3 | ||
|
|
e951e11e62 | ||
|
|
0b854eda7c | ||
|
|
648083fbf4 | ||
|
|
09316dac9e | ||
|
|
670df826af | ||
|
|
912f9611ea | ||
|
|
d8254353b5 | ||
|
|
73185e7cbc | ||
|
|
c36c940a79 | ||
|
|
1d73b0a251 | ||
|
|
8e4e87840a | ||
|
|
cb8d9aeb82 | ||
|
|
1656ff1b0a | ||
|
|
b54cfbadc5 | ||
|
|
f02959f134 | ||
|
|
3bff55ef2c | ||
|
|
02d1f8ff47 | ||
|
|
f1cf4b683b | ||
|
|
a774b107f3 | ||
|
|
57179446ce | ||
|
|
034e71b3ee | ||
|
|
c1144d3891 | ||
|
|
2620f31989 | ||
|
|
3bca6eed2b | ||
|
|
d10fed6aeb | ||
|
|
ee73c04b12 | ||
|
|
73eb7ac637 | ||
|
|
144444ad10 | ||
|
|
8d892ab440 | ||
|
|
eb6c056713 | ||
|
|
4063568a42 | ||
|
|
7ebe42ebf1 | ||
|
|
21b6783624 | ||
|
|
1ab9564fac | ||
|
|
ab618cea90 | ||
|
|
202533c85c | ||
|
|
7a5cacf103 | ||
|
|
dfb6a324c3 | ||
|
|
6a26c6e5e8 | ||
|
|
5dac84051e | ||
|
|
57e4bd4d27 | ||
|
|
dec4254cb3 | ||
|
|
7d3d5d42d1 | ||
|
|
6bbd916e99 | ||
|
|
ceef316a19 | ||
|
|
fe056eaf85 | ||
|
|
bfcf8178d8 | ||
|
|
3ade87fe0b | ||
|
|
07205d043d | ||
|
|
7de6e96f63 | ||
|
|
9c595583cd | ||
|
|
1c63fc11ee | ||
|
|
49ee05770a | ||
|
|
44131fe831 | ||
|
|
a72eb768e7 | ||
|
|
955725b646 | ||
|
|
8a24fd8ef9 | ||
|
|
b7f717a6f4 | ||
|
|
6d1f290895 | ||
|
|
e86daacad4 | ||
|
|
f2d66df34f | ||
|
|
21fecb2c4e | ||
|
|
af8468066a | ||
|
|
34a33ccef3 | ||
|
|
6ef1135ba2 | ||
|
|
df5f82d47f | ||
|
|
d801bad49e | ||
|
|
9f76ae8c59 | ||
|
|
2f9fa6da48 | ||
|
|
d0f42e73ff | ||
|
|
0bcf005365 | ||
|
|
27e8a0820f | ||
|
|
fd5262cd6e | ||
|
|
36b98a7d73 | ||
|
|
c6fda9b4d8 | ||
|
|
bb65d77fc6 | ||
|
|
22fc95ff53 | ||
|
|
36e6a8cef7 | ||
|
|
33e91e2007 | ||
|
|
2599b332fd | ||
|
|
735b540af4 | ||
|
|
1d7858438d | ||
|
|
993b35cf3b | ||
|
|
63507f00f6 | ||
|
|
ded56c518d | ||
|
|
fbae552b1b | ||
|
|
0567674f2a | ||
|
|
b7c9b5ec54 | ||
|
|
f0a2bf2f48 | ||
|
|
89bb099caa | ||
|
|
f7b9a88219 | ||
|
|
7f8fd32cfe | ||
|
|
614c840aac | ||
|
|
bc6d038c58 | ||
|
|
0e5d37a3a0 | ||
|
|
1bdb80a92b | ||
|
|
584f725eda | ||
|
|
1176ddbe30 | ||
|
|
c7fe59c854 | ||
|
|
9a61a3b448 | ||
|
|
801658fb39 | ||
|
|
6c6d13e387 | ||
|
|
ab27fd21d7 | ||
|
|
2700f27d03 | ||
|
|
ea5b07a1ec | ||
|
|
108b2552b5 | ||
|
|
a498f9dd80 | ||
|
|
67109ff51a | ||
|
|
bdaf68ad23 | ||
|
|
05625e7594 | ||
|
|
4820109b8d | ||
|
|
5c4ddd9b7a | ||
|
|
fe681c3af9 | ||
|
|
8ff925fbb9 | ||
|
|
958a7d037f | ||
|
|
c5764a49e1 | ||
|
|
64c16e82b4 | ||
|
|
e9186e0a3c | ||
|
|
e7a4888f54 | ||
|
|
359733fa40 | ||
|
|
034e88e286 | ||
|
|
1d29bc3620 | ||
|
|
c24f6be1b7 | ||
|
|
694e0cd12c | ||
|
|
8cc8b5fe6f | ||
|
|
a4475d2145 | ||
|
|
a064958d4c | ||
|
|
7e25741657 | ||
|
|
0d909d6eeb | ||
|
|
9a699e082d | ||
|
|
bf416e47b3 | ||
|
|
0461aa2b71 | ||
|
|
b3aae3e8aa | ||
|
|
887ec3f8eb | ||
|
|
be08fb6d14 | ||
|
|
05653500b6 | ||
|
|
0241d8752b | ||
|
|
c8022896a6 | ||
|
|
3dcdcae9a7 | ||
|
|
fa026f82a6 | ||
|
|
e3f61bbaa8 | ||
|
|
8fb31e0e64 | ||
|
|
d93e234001 | ||
|
|
03413a9e6b | ||
|
|
ffac677e3f | ||
|
|
0fdd2797a5 | ||
|
|
4b763173f6 | ||
|
|
446b03eeff | ||
|
|
16cd5b43d8 | ||
|
|
bcca701dc9 | ||
|
|
365178b06d | ||
|
|
1bba8c84bd | ||
|
|
a557735545 | ||
|
|
1705b89355 | ||
|
|
fca585d062 | ||
|
|
63aee44982 | ||
|
|
f5445b00f4 | ||
|
|
e93088e8b9 | ||
|
|
0f1ed20bbb | ||
|
|
9405b0dcfc | ||
|
|
39af661720 | ||
|
|
75be6e5b47 | ||
|
|
baafc6c7d1 | ||
|
|
6d4f957e2b | ||
|
|
7c9c27801f | ||
|
|
7f09a7796f | ||
|
|
af83152997 | ||
|
|
5d21adcbb1 | ||
|
|
456e7ed809 | ||
|
|
f5da836b1b | ||
|
|
1ea64d7243 | ||
|
|
57118ec5b9 | ||
|
|
002028130b | ||
|
|
71e7f1ee58 | ||
|
|
0222121288 | ||
|
|
f6acfa4aee | ||
|
|
2a6b757e37 | ||
|
|
9391b7e6c9 | ||
|
|
b99dbe83e2 | ||
|
|
bcbe6c9619 | ||
|
|
0873c8e244 | ||
|
|
58502aeb1f | ||
|
|
4222fcec52 | ||
|
|
035e424a76 | ||
|
|
5e313a0374 | ||
|
|
81e2bda049 | ||
|
|
d27ce9781f | ||
|
|
94e242168c | ||
|
|
e4ca3d38ec | ||
|
|
0acb0fd4c8 | ||
|
|
241d7692b9 | ||
|
|
0895e9ec72 | ||
|
|
9b932358e8 | ||
|
|
3ed4547dfe | ||
|
|
9731035820 | ||
|
|
7e2d9316f3 | ||
|
|
7cddcd8147 | ||
|
|
5da9eb6366 | ||
|
|
9c7651d8e2 | ||
|
|
8b5ed96e9b | ||
|
|
f0e0abae8c | ||
|
|
cadb9e8dff | ||
|
|
beaa919c80 | ||
|
|
ef4844b8c0 | ||
|
|
d5b1bcdc7f | ||
|
|
05652d9c1b | ||
|
|
6a0f47eacb | ||
|
|
8f9508c00e | ||
|
|
44e59a5f6f | ||
|
|
c18c41ac95 | ||
|
|
084b7f5b9c | ||
|
|
92b0ced08a | ||
|
|
f6ce6eddb8 | ||
|
|
a031049b73 | ||
|
|
a48e269d7f | ||
|
|
333b143b17 | ||
|
|
586df616e8 | ||
|
|
eda47fc6af | ||
|
|
202751ddca | ||
|
|
790f7a2549 | ||
|
|
eebd09ccf2 | ||
|
|
ac9565f924 | ||
|
|
55a92fd68a | ||
|
|
37111c11d8 | ||
|
|
84420668fc | ||
|
|
4bf25f8c52 | ||
|
|
bdba3dd29c | ||
|
|
43e9919b6b | ||
|
|
2aa393967f | ||
|
|
17febcd88a | ||
|
|
753a293cd7 | ||
|
|
d7c05247c3 | ||
|
|
54dae87a58 | ||
|
|
50b34dc864 | ||
|
|
08fbd4c8d8 | ||
|
|
780ab5f909 | ||
|
|
c72eefdb77 | ||
|
|
5c790edb2c | ||
|
|
24d21b9839 | ||
|
|
5b9d860937 | ||
|
|
9b5e13ad35 | ||
|
|
25cfdb50d8 | ||
|
|
32fa69627c | ||
|
|
3e165e05fb | ||
|
|
89b830fe9a | ||
|
|
2d7aef34c6 | ||
|
|
0ea7329aa3 | ||
|
|
b87aade2a3 | ||
|
|
41c80daaaa | ||
|
|
e64a414309 | ||
|
|
f98432f6c6 | ||
|
|
f3a5f90bc7 | ||
|
|
d57980edc7 | ||
|
|
97dc9b03b0 | ||
|
|
7e3cf0a00e | ||
|
|
5b0cf1e82b | ||
|
|
500cd2a531 | ||
|
|
8fb62af0cf | ||
|
|
fabeedaa8a | ||
|
|
e701a273d8 | ||
|
|
6c32fdbcbb | ||
|
|
61b2d55d47 | ||
|
|
7b5e4459d4 | ||
|
|
5b450db5eb | ||
|
|
d88e06e289 | ||
|
|
e77991ea16 | ||
|
|
5e55c05bd7 | ||
|
|
81e74f068f | ||
|
|
d5a510175f | ||
|
|
2b2f29da61 | ||
|
|
339dc89702 | ||
|
|
50028fbfd8 | ||
|
|
d97c5b894a | ||
|
|
f860439fb5 | ||
|
|
ddd6ff7dbe | ||
|
|
849b6de6bc | ||
|
|
79e2eb042a | ||
|
|
f9ad26c836 | ||
|
|
f6fbfe33e0 | ||
|
|
18d6ca630a | ||
|
|
c7afcff0b4 | ||
|
|
a3bdfe7641 | ||
|
|
e7b4f8e1c8 | ||
|
|
e526c0f650 | ||
|
|
9791c311f1 | ||
|
|
b1ea9cbfaa | ||
|
|
74d2ec8238 | ||
|
|
f8f2124cec | ||
|
|
3833e11e98 | ||
|
|
613898b32d | ||
|
|
2bc98317e9 | ||
|
|
2e87ae8486 | ||
|
|
df5f34119f | ||
|
|
2271368199 | ||
|
|
e139423b52 | ||
|
|
aa2ecfad96 | ||
|
|
b76441a763 | ||
|
|
2d160ba8ee | ||
|
|
5863b15b12 | ||
|
|
bc175e635f | ||
|
|
f7f89cb778 | ||
|
|
16c45692da | ||
|
|
30aa3f5470 | ||
|
|
ef16732c0a | ||
|
|
84c472a3fa | ||
|
|
2610f8b17b | ||
|
|
705b12019f | ||
|
|
39be8fdf53 | ||
|
|
cc7c3455fa | ||
|
|
d1f4bc7207 | ||
|
|
aa4ca25653 | ||
|
|
405ea0a824 | ||
|
|
43bc0cb08f | ||
|
|
3c200aa2eb | ||
|
|
cc5967814b | ||
|
|
ec16efed2f | ||
|
|
09d0e5b4ef | ||
|
|
5b18aba2b8 | ||
|
|
192008c76c | ||
|
|
1de3a9836c | ||
|
|
ee02811aea | ||
|
|
c21ebe1ce2 | ||
|
|
2edb96ba5b |
@@ -1,4 +1,2 @@
|
||||
MAIN_VITE_STEAMGRIDDB_API_KEY=YOUR_API_KEY
|
||||
MAIN_VITE_API_URL=API_URL
|
||||
MAIN_VITE_SENTRY_DSN=YOUR_SENTRY_DSN
|
||||
SENTRY_AUTH_TOKEN=
|
||||
MAIN_VITE_AUTH_URL=AUTH_URL
|
||||
|
||||
@@ -3,3 +3,4 @@ dist
|
||||
out
|
||||
.gitignore
|
||||
migration.stub
|
||||
hydra-python-rpc/
|
||||
|
||||
@@ -26,4 +26,9 @@ module.exports = {
|
||||
},
|
||||
],
|
||||
},
|
||||
settings: {
|
||||
react: {
|
||||
version: "detect",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
24
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,6 +1,6 @@
|
||||
name: Bug Report
|
||||
description: Create a report to help us improve. Write in English, please.
|
||||
title: "[BUG] "
|
||||
description: Create a report to help us improve. Write in English.
|
||||
title: "[BUG] Write a title for your bug"
|
||||
labels: ["bug"]
|
||||
body:
|
||||
- type: markdown
|
||||
@@ -29,12 +29,15 @@ body:
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: screenshots
|
||||
id: additional-info
|
||||
attributes:
|
||||
label: Screenshots
|
||||
description: If applicable, add screenshots to help explain your problem.
|
||||
label: Additional information and data
|
||||
description: |
|
||||
Add screenshots and upload your logs file here.
|
||||
Logs location on Windows: "%appdata%/hydra"
|
||||
Logs location on Linux: "~/.config/hydra/"
|
||||
validations:
|
||||
required: false
|
||||
required: true
|
||||
- type: input
|
||||
id: OS
|
||||
attributes:
|
||||
@@ -49,13 +52,6 @@ body:
|
||||
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
|
||||
- type: checkboxes
|
||||
id: terms
|
||||
attributes:
|
||||
@@ -65,3 +61,5 @@ body:
|
||||
required: true
|
||||
- label: I am aware that Hydra team does not offer any support or help regarding the downloaded games.
|
||||
required: true
|
||||
- label: I have read the [Frequently Asked Questions (FAQ)](https://github.com/hydralauncher/hydra/wiki/FAQ).
|
||||
required: true
|
||||
|
||||
12
.github/pull-request-template.md
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
<!-- Please be sure to add one of the labels in the right hand side Labels option before creating a PR: [feature], [fix], [documentation],[translation]. This will allow Actions to automatically categorize PRs when generating Releases. -->
|
||||
|
||||
**When submitting this pull request, I confirm the following (please check the boxes):**
|
||||
|
||||
- [ ] I have read and understood the [Contributor Guidelines](https://github.com/hydralauncher/hydra?tab=readme-ov-file#ways-you-can-contribute).
|
||||
- [ ] I have checked that there are no duplicate pull requests related to this request.
|
||||
- [ ] I have considered, and confirm that this submission is valuable to others.
|
||||
- [ ] I accept that this submission may not be used and the pull request may be closed at the discretion of the maintainers.
|
||||
|
||||
**Fill in the PR content:**
|
||||
|
||||
-
|
||||
37
.github/workflows/build.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.11.1
|
||||
node-version: 20.18.0
|
||||
|
||||
- name: Install dependencies
|
||||
run: yarn
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
run: pip install -r requirements.txt
|
||||
|
||||
- name: Build with cx_Freeze
|
||||
run: python torrent-client/setup.py build
|
||||
run: python python_rpc/setup.py build
|
||||
|
||||
- name: Build Linux
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
@@ -40,26 +40,45 @@ jobs:
|
||||
sudo apt-get install -y libarchive-tools
|
||||
yarn build:linux
|
||||
env:
|
||||
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 }}
|
||||
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_STAGING_API_URL }}
|
||||
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_STAGING_AUTH_URL }}
|
||||
MAIN_VITE_CHECKOUT_URL: ${{ vars.MAIN_VITE_STAGING_CHECKOUT_URL }}
|
||||
MAIN_VITE_ANALYTICS_API_URL: ${{ vars.MAIN_VITE_ANALYTICS_API_URL }}
|
||||
RENDERER_VITE_INTERCOM_APP_ID: ${{ vars.RENDERER_VITE_INTERCOM_APP_ID }}
|
||||
RENDERER_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.RENDERER_VITE_EXTERNAL_RESOURCES_URL }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
MAIN_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.MAIN_VITE_EXTERNAL_RESOURCES_URL }}
|
||||
|
||||
- name: Build Windows
|
||||
if: matrix.os == 'windows-latest'
|
||||
run: yarn build:win
|
||||
env:
|
||||
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 }}
|
||||
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_STAGING_API_URL }}
|
||||
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_STAGING_AUTH_URL }}
|
||||
MAIN_VITE_CHECKOUT_URL: ${{ vars.MAIN_VITE_STAGING_CHECKOUT_URL }}
|
||||
MAIN_VITE_ANALYTICS_API_URL: ${{ vars.MAIN_VITE_ANALYTICS_API_URL }}
|
||||
RENDERER_VITE_INTERCOM_APP_ID: ${{ vars.RENDERER_VITE_INTERCOM_APP_ID }}
|
||||
RENDERER_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.RENDERER_VITE_EXTERNAL_RESOURCES_URL }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
MAIN_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.MAIN_VITE_EXTERNAL_RESOURCES_URL }}
|
||||
|
||||
- name: Test Upload build
|
||||
env:
|
||||
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
||||
S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }}
|
||||
S3_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }}
|
||||
S3_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }}
|
||||
S3_BUILDS_BUCKET_NAME: ${{ secrets.S3_BUILDS_BUCKET_NAME }}
|
||||
BUILDS_URL: ${{ secrets.BUILDS_URL }}
|
||||
BUILD_WEBHOOK_URL: ${{ secrets.BUILD_WEBHOOK_URL }}
|
||||
GITHUB_ACTOR: ${{ github.actor }}
|
||||
run: node scripts/upload-build.cjs
|
||||
|
||||
- name: Create artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Build-${{ matrix.os }}
|
||||
path: |
|
||||
dist/win-unpacked/**
|
||||
dist/*-portable.exe
|
||||
dist/*.zip
|
||||
dist/*.dmg
|
||||
|
||||
2
.github/workflows/lint.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.11.1
|
||||
node-version: 20.18.0
|
||||
|
||||
- name: Install dependencies
|
||||
run: yarn
|
||||
|
||||
38
.github/workflows/release.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.11.1
|
||||
node-version: 20.18.0
|
||||
|
||||
- name: Install dependencies
|
||||
run: yarn
|
||||
@@ -33,7 +33,7 @@ jobs:
|
||||
run: pip install -r requirements.txt
|
||||
|
||||
- name: Build with cx_Freeze
|
||||
run: python torrent-client/setup.py build
|
||||
run: python python_rpc/setup.py build
|
||||
|
||||
- name: Build Linux
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
@@ -43,21 +43,43 @@ jobs:
|
||||
yarn build:linux
|
||||
env:
|
||||
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 }}
|
||||
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_AUTH_URL }}
|
||||
MAIN_VITE_CHECKOUT_URL: ${{ vars.MAIN_VITE_CHECKOUT_URL }}
|
||||
MAIN_VITE_ANALYTICS_API_URL: ${{ vars.MAIN_VITE_ANALYTICS_API_URL }}
|
||||
RENDERER_VITE_INTERCOM_APP_ID: ${{ vars.RENDERER_VITE_INTERCOM_APP_ID }}
|
||||
RENDERER_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.RENDERER_VITE_EXTERNAL_RESOURCES_URL }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
MAIN_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.MAIN_VITE_EXTERNAL_RESOURCES_URL }}
|
||||
- name: Build Windows
|
||||
if: matrix.os == 'windows-latest'
|
||||
run: yarn build:win
|
||||
env:
|
||||
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 }}
|
||||
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_AUTH_URL }}
|
||||
MAIN_VITE_CHECKOUT_URL: ${{ vars.MAIN_VITE_CHECKOUT_URL }}
|
||||
MAIN_VITE_ANALYTICS_API_URL: ${{ vars.MAIN_VITE_ANALYTICS_API_URL }}
|
||||
RENDERER_VITE_INTERCOM_APP_ID: ${{ vars.RENDERER_VITE_INTERCOM_APP_ID }}
|
||||
RENDERER_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.RENDERER_VITE_EXTERNAL_RESOURCES_URL }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
MAIN_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.MAIN_VITE_EXTERNAL_RESOURCES_URL }}
|
||||
- name: Create artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
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
|
||||
dist/*.pacman
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
draft: true
|
||||
files: |
|
||||
|
||||
11
.gitignore
vendored
@@ -1,7 +1,5 @@
|
||||
.vscode
|
||||
node_modules
|
||||
hydra-download-manager/
|
||||
fastlist.exe
|
||||
.vscode/
|
||||
node_modules/
|
||||
__pycache__
|
||||
dist
|
||||
out
|
||||
@@ -9,4 +7,7 @@ out
|
||||
*.log*
|
||||
.env
|
||||
.vite
|
||||
sentry.properties
|
||||
ludusavi/
|
||||
hydra-python-rpc/
|
||||
aria2/
|
||||
.python-version
|
||||
|
||||
29
README.md
@@ -2,7 +2,7 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
[<img src="./resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
@@ -13,16 +13,19 @@
|
||||
[](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)
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](./docs/README.pt-BR.md)
|
||||
[](./README.md)
|
||||
[](./docs/README.ru.md)
|
||||
[](./docs/README.uk-UA.md)
|
||||
[](./docs/README.be.md)
|
||||
[](./docs/README.es.md)
|
||||
[](./docs/README.fr.md)
|
||||
[](./docs/README.de.md)
|
||||
[](./docs/README.it.md)
|
||||
[](./docs/README.cs.md)
|
||||
[](./docs/README.da.md)
|
||||
[](./docs/README.nb.md)
|
||||
[](./docs/README.et.md)
|
||||
|
||||

|
||||
|
||||
@@ -122,6 +125,10 @@ cd hydra
|
||||
yarn
|
||||
```
|
||||
|
||||
### Install OpenSSL 1.1
|
||||
|
||||
[OpenSSL 1.1](https://slproweb.com/download/Win64OpenSSL-1_1_1w.exe) is required by libtorrent in Windows environments.
|
||||
|
||||
### Install Python 3.9
|
||||
|
||||
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/).
|
||||
|
||||
BIN
build/icon.ico
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 108 KiB |
BIN
build/icon.png
|
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 19 KiB |
5
build/installer.nsh
Normal file
@@ -0,0 +1,5 @@
|
||||
!macro customUnInstall
|
||||
${ifNot} ${isUpdated}
|
||||
RMDir /r "$LOCALAPPDATA\hydralauncher-updater"
|
||||
${endIf}
|
||||
!macroend
|
||||
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 604 KiB |
@@ -2,19 +2,19 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
[<img src="../resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra - гэта гульнявы лаўнчар з уласным убудаваным кліентам BitTorrent і самастойным scraper`ам для рэпакаў.</strong>
|
||||
<strong>Hydra - гэта гульнявы лаўнчар з уласным убудаваным кліентам BitTorrent.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.pt-BR.md)
|
||||
[](README.md)
|
||||
[](../README.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.be.md)
|
||||
@@ -23,8 +23,11 @@
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](README.da.md)
|
||||
[](README.nb.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||

|
||||
|
||||
</div>
|
||||
|
||||
@@ -139,9 +142,8 @@ pip install -r requirements.txt
|
||||
## Пераменныя асяроддзі
|
||||
|
||||
Вам спатрэбіцца ключ API SteamGridDB, каб атрымаць значкі гульняў пры ўсталёўкі.
|
||||
Калі вы жадаеце выкарыстоўваць onlinefix у якасці рэпака, вам трэба дадаць вашыя ўліковыя дадзеныя ў файл .env.
|
||||
|
||||
Як толькі вы атрымаеце ключ, вы зможаце скапіяваць або пераназваць файл `.env.example` у `.env` і змясціць у яго `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
|
||||
Як толькі вы атрымаеце ключ, вы зможаце скапіяваць або пераназваць файл `.env.example` у `.env` і змясціць у яго `STEAMGRIDDB_API_KEY`.
|
||||
|
||||
## Запуск
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
[<img src="../resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.pt-BR.md)
|
||||
[](README.md)
|
||||
[](../README.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.be.md)
|
||||
@@ -23,8 +23,11 @@
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](README.da.md)
|
||||
[](README.nb.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||

|
||||
|
||||
</div>
|
||||
|
||||
187
docs/README.da.md
Normal file
@@ -0,0 +1,187 @@
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="../resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra er en spil launcher med sin egen indbyggede bittorrent klient.</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)
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](README.da.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## Indholdsfortegnelse
|
||||
|
||||
- [Indholdsfortegnelse](#indholdsfortegnelse)
|
||||
- [Om](#om)
|
||||
- [Funktioner](#funktioner)
|
||||
- [Installation](#installation)
|
||||
- [Bidrag](#-bidrag)
|
||||
- [Bliv medlem af vores Telegram kanal](#-join-our-telegram)
|
||||
- [Fork og klon dit repo](#fork-and-clone-your-repository)
|
||||
- [Måder du kan bidrage](#ways-you-can-contribute)
|
||||
- [Projekt Struktur](#project-structure)
|
||||
- [Byg fra kildekode](#build-from-source)
|
||||
- [Installér Node.js](#install-nodejs)
|
||||
- [Installér Yarn](#install-yarn)
|
||||
- [Installér Node Afhængigheder](#install-node-dependencies)
|
||||
- [Installér Python 3.9](#install-python-39)
|
||||
- [Installér Python Afhængigheder](#install-python-dependencies)
|
||||
- [Miljøvariabler](#environment-variables)
|
||||
- [Køre](#running)
|
||||
- [Bygge](#build)
|
||||
- [Bygge bittorrent klienten](#build-the-bittorrent-client)
|
||||
- [Bygge Electron applikationen](#build-the-electron-application)
|
||||
- [Bidragere](#contributors)
|
||||
- [Licens](#license)
|
||||
|
||||
## Om
|
||||
|
||||
**Hydra** er en **Spil Launcher** med sin egen indbyggede **BitTorrent Klient**.
|
||||
<br>
|
||||
Launcheren er skrevet i TypeScript (Electron) og Python, som håndterer torrenting system ved brug af libtorrent.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Sin egen indbyggede bittorrent klient
|
||||
- How Long To Beat (HLTB) integration på spil siden
|
||||
- Downloadsti tilpasning
|
||||
- Windows og Linux understøttelse
|
||||
- Konstant opdateret
|
||||
- Og mere ...
|
||||
|
||||
## Installation
|
||||
|
||||
Følg trinene her under for at installere:
|
||||
|
||||
1. Download den seneste version af Hydra fra [Releases](https://github.com/hydralauncher/hydra/releases/latest) siden.
|
||||
- Download kun .exe hvis du vil installere Hydra på Windows.
|
||||
- Download .deb, .rpm eller .zip hvis du vil installere Hydra på Linux. (afhænger af din Linux distro)
|
||||
2. Kør den downloadede fil.
|
||||
3. Nyd Hydra!
|
||||
|
||||
## <a name="bidrag"> Bidrag
|
||||
|
||||
### <a name="join-our-telegram"></a> Bliv medlem af vores Telegram kanal
|
||||
|
||||
Vi holder vores diskusioner i vores [Telegram](https://t.me/hydralauncher) kanal.
|
||||
|
||||
### Fork og klon dit repo
|
||||
|
||||
1. Fork repoet [(klik her for at forke nu)](https://github.com/hydralauncher/hydra/fork)
|
||||
2. Klon din forkede kode `git clone https://github.com/dit_brugernavn/hydra`
|
||||
3. Lav en ny branch
|
||||
4. Skub dine commits
|
||||
5. Indsend en ny Pull Request
|
||||
|
||||
### Måder du kan bidrage
|
||||
|
||||
- Oversættelse: Vi vil gerne have at Hydra er tilgængeligt for så mange folk som overhovedet muligt. Du er velkommen til at hjælpe med at oversætte til nye sprog eller at opdatere og forbedre de sprog som allerede er tilgængelige i Hydra.
|
||||
- Kode: Hydra er lavet med Typescript, Electron og en lille smule Python. Hvis du har lyst til at bidrage, kan du blive medlem af vores [Telegram](https://t.me/hydralauncher) kanal! (Alt kommunikation foregår hovedsageligt på Engelsk, Brasiliansk eller Russisk)
|
||||
|
||||
### Projekt struktur
|
||||
|
||||
- torrent-client: Vi bruger libtorrent, et Python bibliotek, til at administrere torrent downloads
|
||||
- src/renderer: UI'en i applikationen
|
||||
- src/main: her har vi al logikken
|
||||
|
||||
## Byg fra kildekode
|
||||
|
||||
### Installér Node.js
|
||||
|
||||
Vær sikker på at du har Node.js installeret på din maskine. Hvis ikke, kan du downloade og installere det fra [nodejs.org](https://nodejs.org/).
|
||||
|
||||
### Installér Yarn
|
||||
|
||||
Yarn er et pakkehåndteringsprogram til Node.js. Hvis du ikke har installeret Yarn endnu, så kan du gøre det ved at følge instruktionerne på [yarnpkg.com](https://classic.yarnpkg.com/lang/en/docs/install/).
|
||||
|
||||
### Installér Node Afhængigheder
|
||||
|
||||
Navigér til projekt mappen og installér Node afhængighederne ved bruge af Yarn:
|
||||
|
||||
```bash
|
||||
cd hydra
|
||||
yarn
|
||||
```
|
||||
|
||||
### Installér Python 3.9
|
||||
|
||||
Vær sikker på at du har Python 3.9 installeret på din maskine. Du kan downloade og installere det her: [python.org](https://www.python.org/downloads/release/python-3913/).
|
||||
|
||||
### Installér Python Afhængigheder
|
||||
|
||||
Installér de påkrævede Python afhængigheder ved brug af pip:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Miljøvariabler
|
||||
|
||||
Du får brug for en SteamGridDB API nøgle for at kunne hente spil ikonerne under installationen.
|
||||
|
||||
Når du har det, kan du kopiere og omdøbe `.env.example` filen til `.env` og indsætte nøglen som `STEAMGRIDDB_API_KEY`.
|
||||
|
||||
## Køre
|
||||
|
||||
Når alt er sat op, kan du køre den følgende kommando for at starte både Electron processen og bittorrent klienten:
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## Bygge
|
||||
|
||||
### Byg bittorrent klienten
|
||||
|
||||
Byg bittorrent klienten ved brug af følgende kommando:
|
||||
|
||||
```bash
|
||||
python torrent-client/setup.py build
|
||||
```
|
||||
|
||||
### Byg Electron applikationen
|
||||
|
||||
Byg Electron applikationen ved brug af følgende kommando:
|
||||
|
||||
På Windows:
|
||||
|
||||
```bash
|
||||
yarn build:win
|
||||
```
|
||||
|
||||
På Linux:
|
||||
|
||||
```bash
|
||||
yarn build:linux
|
||||
```
|
||||
|
||||
## Bidragere
|
||||
|
||||
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
|
||||
</a>
|
||||
|
||||
## Licens
|
||||
|
||||
Hydra benytter sig af [MIT Licensen](LICENSE).
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
[<img src="../resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.md)
|
||||
[](../README.md)
|
||||
[](README.be.md)
|
||||
[](README.pl.md)
|
||||
[](README.pt-BR.md)
|
||||
@@ -23,8 +23,11 @@
|
||||
[](README.fr.md)
|
||||
[](README.de.md)
|
||||
[](README.cs.md)
|
||||
[](README.da.md)
|
||||
[](README.nb.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||

|
||||
|
||||
</div>
|
||||
|
||||
@@ -2,19 +2,19 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
[<img src="../resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<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>
|
||||
<strong>Hydra es un launcher de juegos con su propio cliente de bittorrent.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.pt-BR.md)
|
||||
[](README.md)
|
||||
[](../README.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.be.md)
|
||||
@@ -23,8 +23,11 @@
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](README.da.md)
|
||||
[](README.nb.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||

|
||||
|
||||
</div>
|
||||
|
||||
@@ -55,17 +58,15 @@
|
||||
|
||||
## Acerca de
|
||||
|
||||
**Hydra** es un **Launcher de Juegos** con su propio **Cliente Bittorrent** y **autogestor de Repacks**.
|
||||
**Hydra** es un **Launcher de Juegos** con su propio **Cliente Bittorrent**.
|
||||
<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 ...
|
||||
@@ -139,9 +140,8 @@ 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`.
|
||||
Una vez que los tengas, puedes copiar o renombrar el archivo `.env.example` cómo `.env` y colocarlo en `STEAMGRIDDB_API_KEY`.
|
||||
|
||||
## Ejecucion
|
||||
|
||||
186
docs/README.et.md
Normal file
@@ -0,0 +1,186 @@
|
||||
<div align="center">
|
||||
|
||||
[<img src="../resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra on mängulauncher oma sisseehitatud bittorrenti kliendiga.</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)
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](README.da.md)
|
||||
[](README.nb.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## Sisukord
|
||||
|
||||
- [Sisukord](#sisukord)
|
||||
- [Tutvustus](#tutvustus)
|
||||
- [Funktsioonid](#funktsioonid)
|
||||
- [Paigaldamine](#paigaldamine)
|
||||
- [Panustamine](#panustamine)
|
||||
- [Liitu meie Telegramiga](#liitu-meie-telegramiga)
|
||||
- [Forki ja klooni oma repositoorium](#forki-ja-klooni-oma-repositoorium)
|
||||
- [Viisid panustamiseks](#viisid-panustamiseks)
|
||||
- [Projekti Struktuur](#projekti-struktuur)
|
||||
- [Lähtekoodi kompileerimine](#lähtekoodi-kompileerimine)
|
||||
- [Node.js paigaldamine](#nodejs-paigaldamine)
|
||||
- [Yarn'i paigaldamine](#yarni-paigaldamine)
|
||||
- [Node sõltuvuste paigaldamine](#node-sõltuvuste-paigaldamine)
|
||||
- [Python 3.9 paigaldamine](#python-39-paigaldamine)
|
||||
- [Python'i sõltuvuste paigaldamine](#pythoni-sõltuvuste-paigaldamine)
|
||||
- [Keskkonna muutujad](#keskkonna-muutujad)
|
||||
- [Käivitamine](#käivitamine)
|
||||
- [Kompileerimine](#kompileerimine)
|
||||
- [Bittorrenti kliendi kompileerimine](#bittorrenti-kliendi-kompileerimine)
|
||||
- [Electron rakenduse kompileerimine](#electron-rakenduse-kompileerimine)
|
||||
- [Panustajad](#panustajad)
|
||||
- [Litsents](#litsents)
|
||||
|
||||
## Tutvustus
|
||||
|
||||
**Hydra** on **Mängulauncher** oma sisseehitatud **BitTorrent Kliendiga**.
|
||||
<br>
|
||||
Launcher on kirjutatud TypeScriptis (Electron) ja Pythonis, mis haldab torrentide süsteemi kasutades libtorrenti.
|
||||
|
||||
## Funktsioonid
|
||||
|
||||
- Sisseehitatud bittorrenti klient
|
||||
- How Long To Beat (HLTB) integratsioon mängu lehel
|
||||
- Allalaadimiste kausta kohandamine
|
||||
- Windowsi ja Linuxi tugi
|
||||
- Pidevad uuendused
|
||||
- Ja palju muud ...
|
||||
|
||||
## Paigaldamine
|
||||
|
||||
Järgi paigaldamiseks järgmisi samme:
|
||||
|
||||
1. Lae alla Hydra uusim versioon [Releases](https://github.com/hydralauncher/hydra/releases/latest) lehelt.
|
||||
- Lae alla ainult .exe fail, kui soovid paigaldada Hydrat Windowsile.
|
||||
- Lae alla .deb või .rpm või .zip fail, kui soovid paigaldada Hydrat Linuxile. (sõltub sinu Linuxi distrost)
|
||||
2. Käivita allalaaditud fail.
|
||||
3. Naudi Hydrat!
|
||||
|
||||
## Panustamine
|
||||
|
||||
### Liitu meie Telegramiga
|
||||
|
||||
Me keskendume aruteludele meie [Telegrami](https://t.me/hydralauncher) kanalis.
|
||||
|
||||
### Forki ja klooni oma repositoorium
|
||||
|
||||
1. Forki repositoorium [(klõpsa siia forkimiseks)](https://github.com/hydralauncher/hydra/fork)
|
||||
2. Klooni oma forkitud kood `git clone https://github.com/your_username/hydra`
|
||||
3. Loo uus haru
|
||||
4. Pushi oma commitid
|
||||
5. Esita uus Pull Request
|
||||
|
||||
### Viisid panustamiseks
|
||||
|
||||
- Tõlkimine: Me soovime, et Hydra oleks kättesaadav võimalikult paljudele inimestele. Võid aidata tõlkida uutesse keeltesse või uuendada ja parandada juba olemasolevaid tõlkeid Hydras.
|
||||
- Kood: Hydra on ehitatud kasutades TypeScripti, Electroni ja natuke Pythonit. Kui soovid panustada, liitu meie [Telegramiga](https://t.me/hydralauncher)!
|
||||
|
||||
### Projekti Struktuur
|
||||
|
||||
- torrent-client: Kasutame libtorrenti, Pythoni teeki, torrentide allalaadimiste haldamiseks
|
||||
- src/renderer: rakenduse kasutajaliides
|
||||
- src/main: kogu loogika asub siin.
|
||||
|
||||
## Lähtekoodi kompileerimine
|
||||
|
||||
### Node.js paigaldamine
|
||||
|
||||
Veendu, et Node.js on sinu arvutisse paigaldatud. Kui ei ole, lae alla ja paigalda see [nodejs.org](https://nodejs.org/) lehelt.
|
||||
|
||||
### Yarn'i paigaldamine
|
||||
|
||||
Yarn on Node.js paketihaldur. Kui sa pole Yarni veel paigaldanud, saad seda teha järgides juhiseid [yarnpkg.com](https://classic.yarnpkg.com/lang/en/docs/install/) lehel.
|
||||
|
||||
### Node sõltuvuste paigaldamine
|
||||
|
||||
Liigu projekti kausta ja paigalda Node sõltuvused kasutades Yarni:
|
||||
|
||||
```bash
|
||||
cd hydra
|
||||
yarn
|
||||
```
|
||||
|
||||
### Python 3.9 paigaldamine
|
||||
|
||||
Veendu, et Python 3.9 on sinu arvutisse paigaldatud. Saad selle alla laadida ja paigaldada [python.org](https://www.python.org/downloads/release/python-3913/) lehelt.
|
||||
|
||||
### Python'i sõltuvuste paigaldamine
|
||||
|
||||
Paigalda vajalikud Pythoni sõltuvused kasutades pip'i:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Keskkonna muutujad
|
||||
|
||||
Sul on vaja SteamGridDB API võtit, et laadida alla mängude ikoone paigaldamisel.
|
||||
|
||||
Kui sul on see olemas, saad kopeerida või ümber nimetada `.env.example` faili `.env` failiks ja lisada sinna `STEAMGRIDDB_API_KEY`.
|
||||
|
||||
## Käivitamine
|
||||
|
||||
Kui kõik on seadistatud, saad käivitada järgmise käsu, et käivitada nii Electroni protsess kui ka bittorrenti klient:
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## Kompileerimine
|
||||
|
||||
### Bittorrenti kliendi kompileerimine
|
||||
|
||||
Kompileeri bittorrenti klient kasutades järgmist käsku:
|
||||
|
||||
```bash
|
||||
python torrent-client/setup.py build
|
||||
```
|
||||
|
||||
### Electron rakenduse kompileerimine
|
||||
|
||||
Kompileeri Electron rakendus kasutades järgmist käsku:
|
||||
|
||||
Windowsil:
|
||||
|
||||
```bash
|
||||
yarn build:win
|
||||
```
|
||||
|
||||
Linuxil:
|
||||
|
||||
```bash
|
||||
yarn build:linux
|
||||
```
|
||||
|
||||
## Panustajad
|
||||
|
||||
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
|
||||
</a>
|
||||
|
||||
## Litsents
|
||||
|
||||
Hydra on litsentseeritud [MIT Litsentsi](LICENSE) all.
|
||||
@@ -2,19 +2,19 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
[<img src="../resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<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>
|
||||
<strong>Hydra est un lanceur de jeux avec son propre client bittorrent intégré.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.pt-BR.md)
|
||||
[](README.md)
|
||||
[](../README.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.be.md)
|
||||
@@ -23,8 +23,11 @@
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](README.da.md)
|
||||
[](README.nb.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||

|
||||
|
||||
</div>
|
||||
|
||||
@@ -55,17 +58,15 @@
|
||||
|
||||
## À propos
|
||||
|
||||
**Hydra** est un **lanceur de jeux** avec son propre **client BitTorrent** intégré et un **scraper de repack auto-géré**.
|
||||
**Hydra** est un **lanceur de jeux** avec son propre **client BitTorrent** intégré.
|
||||
<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 ...
|
||||
@@ -139,9 +140,8 @@ 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`.
|
||||
Une fois que vous l'avez, vous pouvez copier ou renommer le fichier `.env.example` en `.env` et y mettre `STEAMGRIDDB_API_KEY`.
|
||||
|
||||
## Lancement
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
[<img src="./resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra è un game launcher con il proprio client bittorrent e autogestore di repacks.</strong>
|
||||
<strong>Hydra è un game launcher con il proprio client bittorrent.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
@@ -23,8 +23,11 @@
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](README.da.md)
|
||||
[](README.nb.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||

|
||||
|
||||
</div>
|
||||
|
||||
@@ -55,17 +58,15 @@
|
||||
|
||||
## A proposito
|
||||
|
||||
**Hydra** è un **Game Launcher** con il proprio **Client BitTorrent** e **autogestore di repack**.
|
||||
**Hydra** è un **Game Launcher** con il proprio **Client BitTorrent**.
|
||||
<br>
|
||||
Il launcher è scritto in TypeScript (Electron) and Python, che gestisce il sistema di torrenting appoggiandosi a libtorrent.
|
||||
|
||||
## Caratteristiche
|
||||
|
||||
- Motore di ricerca automatizzato sulle fonti di repack dal [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/")
|
||||
- Client Bittorrent integrato
|
||||
- Integrazione How Long To Beat (HLTB) nella pagina del gioco
|
||||
- Percorso del download Personalizzato
|
||||
- Notifiche di aggiornamenti sulla list dei repacks
|
||||
- Supporto Windows e Linux
|
||||
- Costantemente Aggiornato
|
||||
- E molto altro ...
|
||||
@@ -139,9 +140,8 @@ pip install -r requirements.txt
|
||||
## Variabili d'ambiente
|
||||
|
||||
Avrai bisogno di una chiave API SteamGridDB per poter caricare le icone di gioco.
|
||||
Se intendi avere onlinefix come repacker dovrai aggiungere le tue credenziali al file .env
|
||||
|
||||
Una volta ottenuta, puoi copiare e rinominare il file `.env.example` a `.env` e metterlo in `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
|
||||
Una volta ottenuta, puoi copiare e rinominare il file `.env.example` a `.env` e metterlo in `STEAMGRIDDB_API_KEY`.
|
||||
|
||||
## Esecuzione
|
||||
|
||||
188
docs/README.nb.md
Normal file
@@ -0,0 +1,188 @@
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="../resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra er en spill launcher sin egen innebygt bittorrent klient.</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)
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](README.nb.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## Innhold
|
||||
|
||||
- [Innhold](#innhold)
|
||||
- [Om](#om)
|
||||
- [Funksjoner](#funksjoner)
|
||||
- [Installasjon](#installasjon)
|
||||
- [Bidra](#-bidra)
|
||||
- [Bli med i Telegram kanalen vår](#-join-our-telegram)
|
||||
- [Forke og klone repoet ditt](#fork-and-clone-your-repository)
|
||||
- [Måter du kan bidra](#ways-you-can-contribute)
|
||||
- [Prosjekt Struktur](#project-structure)
|
||||
- [Bygg fra kilden](#build-from-source)
|
||||
- [Installere Node.js](#install-nodejs)
|
||||
- [Installere Yarn](#install-yarn)
|
||||
- [Installere Node-avhengigheter](#install-node-dependencies)
|
||||
- [Installere Python 3.9](#install-python-39)
|
||||
- [Installere Python-avhengigheter](#install-python-dependencies)
|
||||
- [Miljøvariabler](#environment-variables)
|
||||
- [Kjøre](#running)
|
||||
- [Bygge](#build)
|
||||
- [Bygg bittorrent klienten](#build-the-bittorrent-client)
|
||||
- [Bygg Electron applikationen](#build-the-electron-application)
|
||||
- [Bidragsytere](#contributors)
|
||||
- [Lisens](#license)
|
||||
|
||||
## Om
|
||||
|
||||
**Hydra** er en **Spill Launcher** sin egne innbygte **BitTorrent Klient**.
|
||||
<br>
|
||||
Launcheren er skrevet i TypeScript (Electron) og Python, som håndterer torrent systemet ved bruk av libtorrent.
|
||||
|
||||
## Funksjoner
|
||||
|
||||
- Sin egen innebyggte bittorrent klient
|
||||
- How Long To Beat (HLTB) integrasjon på spillsiden
|
||||
- Nedlastingssti tilpasning
|
||||
- Windows og Linux understøttelse
|
||||
- Konstant oppdatert
|
||||
- Og mer ...
|
||||
|
||||
## Installasjon
|
||||
|
||||
Følg trinnene her under for å innstallere:
|
||||
|
||||
1. Last ned den seneste versjonen av Hydra fra [Releases](https://github.com/hydralauncher/hydra/releases/latest) siden.
|
||||
- Last kun .exe filen ned om du vil installere Hydra på Windows.
|
||||
- Last kun .deb, .rpm eller .zip ned om du vil installere Hydra på Linux. (kommer an på Linux distroen din)
|
||||
2. Kjør den nedlastede filen.
|
||||
3. Nyt Hydra!
|
||||
|
||||
## <a name="contributing"> Bidra
|
||||
|
||||
### <a name="join-our-telegram"></a> Bli med i Telegram kanalen vår
|
||||
|
||||
Vi holder diskusjonene våres i [Telegram](https://t.me/hydralauncher) kanalen.
|
||||
|
||||
### Forke og klone repoet ditt
|
||||
|
||||
1. Fork repoet [(trykk her for å forke nå)](https://github.com/hydralauncher/hydra/fork)
|
||||
2. Klon den forkede koden `git clone https://github.com/brukernavnet_ditt/hydra`
|
||||
3. Lag en ny branch
|
||||
4. Skyv committene dine
|
||||
5. Send inn en ny Pull-forespørsel.
|
||||
|
||||
### Måter du kan bidra
|
||||
|
||||
- Oversetting: Vi har lyst at Hydra skal bli tilgjengelig for så mange som mulig. Hjelp gjerne med å oversette til nye språk eller oppdater og forbedre de som allerede er tilgjengelige i 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)!
|
||||
- Kode: Hydra er laget med Typescript, Electron og lite gran Pythong. Hvis du har lyst på å bidra, bli med i [Telegram](https://t.me/hydralauncher) kanalen vår!
|
||||
|
||||
### Prosjektstruktur
|
||||
|
||||
- torrent-client: Vi bruker libtorrent, et Python-bibliotek, til å håndtere torrent nedlastinger.
|
||||
- src/renderer: UIen til applikasjonen
|
||||
- src/main: all logikken er her.
|
||||
|
||||
## Bygg fra kildekoden
|
||||
|
||||
### Installere Node.js
|
||||
|
||||
Vær sikker på at du har installert Node.js på maskinen din. Hvis du ikke har det, må du laste ned og installere det fra [nodejs.org](https://nodejs.org/).
|
||||
|
||||
### Installere Yarn
|
||||
|
||||
Yarn er et pakkehåndteringsverktøy til Node.js. Hvis du ikke allerede har installert Yarn, da kan du gjøre det ved å følge instruksjonene på [yarnpkg.com](https://classic.yarnpkg.com/lang/en/docs/install/).
|
||||
|
||||
### Installere Node-avhengigheter
|
||||
|
||||
Naviger til prosjektmappen og installer Node-avhengighetene ved bruk av Yarn:
|
||||
|
||||
```bash
|
||||
cd hydra
|
||||
yarn
|
||||
```
|
||||
|
||||
### Installere Python 3.9
|
||||
|
||||
Vær sikker på at du har installert Python 3.9 på maskinen din. Du kan laste ned og installere det på [python.org](https://www.python.org/downloads/release/python-3913/).
|
||||
|
||||
### Installere Python-avhengigheter
|
||||
|
||||
Installer de nødvendige Python-avhengigheter ved bruk av pip:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Miljøvariabler
|
||||
|
||||
Du trenger en SteamGridDB API nøkkel for å kunne hente spillikonene ved installasjon.
|
||||
|
||||
Når du har det, kan du kopiere eller endre navnet på `.env.example` filen til å være `.env` og lagre nøkkelen som `STEAMGRIDDB_API_KEY`.
|
||||
|
||||
## Kjøre
|
||||
|
||||
Når alt er satt op, kan du kjøre følgende kommando for å start både Electron prosessen og bittorrent klienten.
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## Bygge
|
||||
|
||||
### Bygge bittorrent klienten
|
||||
|
||||
Bygg bittorrent klienten ved å bruke denne kommandoen:
|
||||
|
||||
```bash
|
||||
python torrent-client/setup.py build
|
||||
```
|
||||
|
||||
### Bygge Electron applikasjonen
|
||||
|
||||
Bygg Electron applikasjonen ved å bruke denne kommandoen:
|
||||
|
||||
På Windows:
|
||||
|
||||
```bash
|
||||
yarn build:win
|
||||
```
|
||||
|
||||
På Linux:
|
||||
|
||||
```bash
|
||||
yarn build:linux
|
||||
```
|
||||
|
||||
## Bidragsytere
|
||||
|
||||
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
|
||||
</a>
|
||||
|
||||
## Lisens
|
||||
|
||||
Hydra bruker [MIT Lisensen](LICENSE).
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
[<img src="./resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<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>
|
||||
<strong>Hydra - to program uruchamiający gry z własnym wbudowanym klientem bittorrent.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
@@ -23,8 +23,11 @@
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](README.da.md)
|
||||
[](README.nb.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||

|
||||
|
||||
</div>
|
||||
|
||||
@@ -55,17 +58,15 @@
|
||||
|
||||
## O nas
|
||||
|
||||
**Hydra** - jest **programem uruchamiającym gry** z wbudowanym **klientem BitTorrent** i **samozarządzającym się repackagerem**.
|
||||
**Hydra** - jest **programem uruchamiającym gry** z wbudowanym **klientem BitTorrent**.
|
||||
<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 ...
|
||||
@@ -143,9 +144,8 @@ 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`.
|
||||
Po jego uzyskaniu można skopiować plik lub zmienić jego nazwę `.env.example` na `.env` i umieść go na`STEAMGRIDDB_API_KEY`.
|
||||
|
||||
## Run
|
||||
|
||||
@@ -2,19 +2,19 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
[<img src="../resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<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>
|
||||
<strong>Hydra é um Launcher de Jogos com seu próprio cliente de bittorrent integrado.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.pt-BR.md)
|
||||
[](README.md)
|
||||
[](../README.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.be.md)
|
||||
@@ -23,8 +23,11 @@
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](README.da.md)
|
||||
[](README.nb.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||

|
||||
|
||||
</div>
|
||||
|
||||
@@ -48,24 +51,22 @@
|
||||
- [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)
|
||||
- [ Criar o cliente bittorrent](#-build-the-bittorrent-client)
|
||||
- [Criar a aplicação Electron](#-build-the-electron-application)
|
||||
- [Contribuidores](#-contributors)
|
||||
- [Licença](#-licença)
|
||||
|
||||
## <a name="about"> Sobre
|
||||
|
||||
**Hydra** é um **Launcher de Jogos** com seu próprio **Cliente BitTorrent incorporado** e um **raspador de repack auto-gerenciado**.
|
||||
**Hydra** é um **Launcher de Jogos** com seu próprio **Cliente BitTorrent incorporado**.
|
||||
<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 ...
|
||||
@@ -136,14 +137,13 @@ Instale as dependências Python necessárias usando o pip:
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## <a name="environment-variables"></a> Environment variables
|
||||
## <a name="environment-variables"></a> Variáveis de ambiente
|
||||
|
||||
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`.
|
||||
Depois de obtê-lo, você pode copiar ou renomear o arquivo `.env.example` para `.env` e inserir `STEAMGRIDDB_API_KEY`.
|
||||
|
||||
## <a name="running"></a> Running
|
||||
## <a name="running"></a> Executando
|
||||
|
||||
Uma vez que você tenha configurado tudo, você pode executar o seguinte comando para iniciar tanto o processo Electron quanto o cliente BitTorrent:
|
||||
|
||||
@@ -153,7 +153,7 @@ yarn dev
|
||||
|
||||
## <a name="build"></a> Build
|
||||
|
||||
### <a name="build-the-bittorrent-client"></a> Build the bittorrent client
|
||||
### <a name="build-the-bittorrent-client"></a> Criar o cliente bittorrent
|
||||
|
||||
Compile o cliente BitTorrent usando este comando
|
||||
|
||||
@@ -161,7 +161,7 @@ Compile o cliente BitTorrent usando este comando
|
||||
python torrent-client/setup.py build
|
||||
```
|
||||
|
||||
### <a name="build-the-electron-application"></a> Build the Electron application
|
||||
### <a name="build-the-electron-application"></a> Criar a aplicação Electron
|
||||
|
||||
Compile a aplicação Electron usando este comando:
|
||||
|
||||
@@ -177,7 +177,7 @@ No Linux:
|
||||
yarn build:linux
|
||||
```
|
||||
|
||||
## <a name="contributors"></a> Contributors
|
||||
## <a name="contributors"></a> Contribuidores
|
||||
|
||||
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
|
||||
@@ -2,19 +2,19 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
[<img src="../resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra - это игровой лаунчер с собственным встроенным клиентом BitTorrent и самостоятельным scraper`ом для репаков.</strong>
|
||||
<strong>Hydra - это игровой лаунчер с собственным встроенным клиентом BitTorrent.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.pt-BR.md)
|
||||
[](README.md)
|
||||
[](../README.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.be.md)
|
||||
@@ -23,8 +23,11 @@
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](README.da.md)
|
||||
[](README.nb.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||

|
||||
|
||||
</div>
|
||||
|
||||
@@ -139,9 +142,8 @@ pip install -r requirements.txt
|
||||
## Переменные среды
|
||||
|
||||
Вам понадобится ключ API SteamGridDB, чтобы получить значки игр при установке.
|
||||
Если вы хотите использовать onlinefix в качестве репака, вам нужно добавить ваши учетные данные в файл .env.
|
||||
|
||||
Как только у вас будет ключ, вы можете скопировать или переименовать файл `.env.example` в `.env` и поместить в него `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
|
||||
Как только у вас будет ключ, вы можете скопировать или переименовать файл `.env.example` в `.env` и поместить в него `STEAMGRIDDB_API_KEY`.
|
||||
|
||||
## Запуск
|
||||
|
||||
@@ -2,19 +2,19 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
|
||||
[<img src="../resources/icon.png" width="144"/>](https://help.hydralauncher.gg)
|
||||
|
||||
<h1 align="center">Hydra Launcher</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Hydra - це ігровий лаунчер з власним вбудованим bittorrent-клієнтом і самокерованим збирачем репаків.</strong>
|
||||
<strong>Hydra - це ігровий лаунчер з власним вбудованим bittorrent-клієнтом.</strong>
|
||||
</p>
|
||||
|
||||
[](https://github.com/hydralauncher/hydra/actions)
|
||||
[](https://github.com/hydralauncher/hydra/releases)
|
||||
|
||||
[](README.pt-BR.md)
|
||||
[](README.md)
|
||||
[](../README.md)
|
||||
[](README.ru.md)
|
||||
[](README.uk-UA.md)
|
||||
[](README.be.md)
|
||||
@@ -23,8 +23,11 @@
|
||||
[](README.de.md)
|
||||
[](README.it.md)
|
||||
[](README.cs.md)
|
||||
[](README.da.md)
|
||||
[](README.nb.md)
|
||||
[](README.et.md)
|
||||
|
||||

|
||||

|
||||
|
||||
</div>
|
||||
|
||||
@@ -143,9 +146,8 @@ pip install -r requirements.txt
|
||||
## Змінні середовища
|
||||
|
||||
Вам знадобиться ключ API SteamGridDB, щоб отримати іконки ігор під час встановлення.
|
||||
Якщо ви хочете використовувати onlinefix як перепакувальник, вам потрібно додати свої облікові дані до .env
|
||||
|
||||
Отримавши його, ви можете скопіювати або перейменувати файл `.env.example` на `.env`і помістити його на`STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
|
||||
Отримавши його, ви можете скопіювати або перейменувати файл `.env.example` на `.env`і помістити його на`STEAMGRIDDB_API_KEY`.
|
||||
|
||||
## Запустіть
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
appId: site.hydralauncher.hydra
|
||||
appId: gg.hydralauncher.hydra
|
||||
productName: Hydra
|
||||
directories:
|
||||
buildResources: build
|
||||
extraResources:
|
||||
- hydra-download-manager
|
||||
- aria2
|
||||
- ludusavi
|
||||
- hydra-python-rpc
|
||||
- seeds
|
||||
- from: node_modules/create-desktop-shortcuts/src/windows.vbs
|
||||
- from: resources/achievement.wav
|
||||
files:
|
||||
- "!**/.vscode/*"
|
||||
- "!src/*"
|
||||
@@ -27,6 +30,7 @@ nsis:
|
||||
createDesktopShortcut: always
|
||||
oneClick: false
|
||||
allowToChangeInstallationDirectory: true
|
||||
include: installer.nsh
|
||||
portable:
|
||||
artifactName: ${name}-${version}-portable.${ext}
|
||||
mac:
|
||||
|
||||
@@ -6,16 +6,9 @@ import {
|
||||
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);
|
||||
|
||||
@@ -35,7 +28,7 @@ export default defineConfig(({ mode }) => {
|
||||
"@shared": resolve("src/shared"),
|
||||
},
|
||||
},
|
||||
plugins: [externalizeDepsPlugin(), swcPlugin(), sentryPlugin],
|
||||
plugins: [externalizeDepsPlugin(), swcPlugin()],
|
||||
},
|
||||
preload: {
|
||||
plugins: [externalizeDepsPlugin()],
|
||||
@@ -51,7 +44,7 @@ export default defineConfig(({ mode }) => {
|
||||
"@shared": resolve("src/shared"),
|
||||
},
|
||||
},
|
||||
plugins: [svgr(), react(), vanillaExtractPlugin(), sentryPlugin],
|
||||
plugins: [svgr(), react(), vanillaExtractPlugin()],
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
68
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "hydralauncher",
|
||||
"version": "2.1.2",
|
||||
"version": "3.1.3",
|
||||
"description": "Hydra",
|
||||
"main": "./out/main/index.js",
|
||||
"author": "Los Broxas",
|
||||
@@ -23,7 +23,7 @@
|
||||
"start": "electron-vite preview",
|
||||
"dev": "electron-vite dev",
|
||||
"build": "npm run typecheck && electron-vite build",
|
||||
"postinstall": "electron-builder install-app-deps",
|
||||
"postinstall": "electron-builder install-app-deps && node ./scripts/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",
|
||||
@@ -34,80 +34,84 @@
|
||||
"dependencies": {
|
||||
"@electron-toolkit/preload": "^3.0.0",
|
||||
"@electron-toolkit/utils": "^3.0.0",
|
||||
"@fontsource/noto-sans": "^5.0.22",
|
||||
"@hookform/resolvers": "^3.9.0",
|
||||
"@fontsource/noto-sans": "^5.1.0",
|
||||
"@hookform/resolvers": "^3.9.1",
|
||||
"@primer/octicons-react": "^19.9.0",
|
||||
"@radix-ui/react-dropdown-menu": "^2.1.2",
|
||||
"@reduxjs/toolkit": "^2.2.3",
|
||||
"@sentry/electron": "^5.1.0",
|
||||
"@vanilla-extract/css": "^1.14.2",
|
||||
"@vanilla-extract/dynamic": "^2.1.1",
|
||||
"@vanilla-extract/dynamic": "^2.1.2",
|
||||
"@vanilla-extract/recipes": "^0.5.2",
|
||||
"auto-launch": "^5.0.6",
|
||||
"axios": "^1.7.7",
|
||||
"better-sqlite3": "^11.2.1",
|
||||
"axios": "^1.7.9",
|
||||
"better-sqlite3": "^11.7.0",
|
||||
"check-disk-space": "^3.4.0",
|
||||
"classnames": "^2.5.1",
|
||||
"color": "^4.2.3",
|
||||
"color.js": "^1.2.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",
|
||||
"flexsearch": "^0.7.43",
|
||||
"dexie": "^4.0.10",
|
||||
"electron-log": "^5.2.4",
|
||||
"electron-updater": "^6.3.9",
|
||||
"file-type": "^19.6.0",
|
||||
"i18next": "^23.11.2",
|
||||
"i18next-browser-languagedetector": "^7.2.1",
|
||||
"icojs": "^0.19.3",
|
||||
"jsdom": "^24.0.0",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"knex": "^3.1.0",
|
||||
"lodash-es": "^4.17.21",
|
||||
"lottie-react": "^2.4.0",
|
||||
"parse-torrent": "^11.0.16",
|
||||
"piscina": "^4.5.1",
|
||||
"parse-torrent": "^11.0.17",
|
||||
"piscina": "^4.7.0",
|
||||
"rc-virtual-list": "^3.16.1",
|
||||
"react-hook-form": "^7.53.0",
|
||||
"react-i18next": "^14.1.0",
|
||||
"react-loading-skeleton": "^3.4.0",
|
||||
"react-redux": "^9.1.1",
|
||||
"react-router-dom": "^6.22.3",
|
||||
"sound-play": "^1.1.0",
|
||||
"sudo-prompt": "^9.2.1",
|
||||
"tar": "^7.4.3",
|
||||
"typeorm": "^0.3.20",
|
||||
"user-agents": "^1.1.193",
|
||||
"yaml": "^2.4.1",
|
||||
"yup": "^1.4.0",
|
||||
"zod": "^3.23.8"
|
||||
"user-agents": "^1.1.387",
|
||||
"yaml": "^2.6.1",
|
||||
"yup": "^1.5.0",
|
||||
"zod": "^3.24.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "^19.3.0",
|
||||
"@commitlint/config-conventional": "^19.2.2",
|
||||
"@aws-sdk/client-s3": "^3.705.0",
|
||||
"@commitlint/cli": "^19.6.0",
|
||||
"@commitlint/config-conventional": "^19.6.0",
|
||||
"@electron-toolkit/eslint-config-prettier": "^2.0.0",
|
||||
"@electron-toolkit/eslint-config-ts": "^1.0.1",
|
||||
"@electron-toolkit/eslint-config-ts": "^2.0.0",
|
||||
"@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/folder-hash": "^4.0.4",
|
||||
"@types/jsdom": "^21.1.7",
|
||||
"@types/jsonwebtoken": "^9.0.7",
|
||||
"@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/sound-play": "^1.1.3",
|
||||
"@types/user-agents": "^1.0.4",
|
||||
"@vanilla-extract/vite-plugin": "^4.0.7",
|
||||
"@vitejs/plugin-react": "^4.2.1",
|
||||
"electron": "^30.3.0",
|
||||
"electron-builder": "^24.9.1",
|
||||
"electron": "^31.7.6",
|
||||
"electron-builder": "^25.1.8",
|
||||
"electron-vite": "^2.0.0",
|
||||
"eslint": "^8.56.0",
|
||||
"eslint-plugin-jsx-a11y": "^6.8.0",
|
||||
"eslint-plugin-react": "^7.33.2",
|
||||
"eslint-plugin-jsx-a11y": "^6.10.2",
|
||||
"eslint-plugin-react": "^7.37.2",
|
||||
"eslint-plugin-react-hooks": "^4.6.0",
|
||||
"husky": "^9.0.11",
|
||||
"prettier": "^3.2.4",
|
||||
"husky": "^9.1.7",
|
||||
"prettier": "^3.4.2",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"sass-embedded": "^1.80.6",
|
||||
"ts-node": "^10.9.2",
|
||||
"typescript": "^5.3.3",
|
||||
"vite": "^5.0.12",
|
||||
|
||||
47
python_rpc/http_downloader.py
Normal file
@@ -0,0 +1,47 @@
|
||||
import aria2p
|
||||
|
||||
class HttpDownloader:
|
||||
def __init__(self):
|
||||
self.download = None
|
||||
self.aria2 = aria2p.API(
|
||||
aria2p.Client(
|
||||
host="http://localhost",
|
||||
port=6800,
|
||||
secret=""
|
||||
)
|
||||
)
|
||||
|
||||
def start_download(self, url: str, save_path: str, header: str):
|
||||
if self.download:
|
||||
self.aria2.resume([self.download])
|
||||
else:
|
||||
downloads = self.aria2.add(url, options={"header": header, "dir": save_path})
|
||||
self.download = downloads[0]
|
||||
|
||||
def pause_download(self):
|
||||
if self.download:
|
||||
self.aria2.pause([self.download])
|
||||
|
||||
def cancel_download(self):
|
||||
if self.download:
|
||||
self.aria2.remove([self.download])
|
||||
self.download = None
|
||||
|
||||
def get_download_status(self):
|
||||
if self.download == None:
|
||||
return None
|
||||
|
||||
download = self.aria2.get_download(self.download.gid)
|
||||
|
||||
response = {
|
||||
'folderName': download.name,
|
||||
'fileSize': download.total_length,
|
||||
'progress': download.completed_length / download.total_length if download.total_length else 0,
|
||||
'downloadSpeed': download.download_speed,
|
||||
'numPeers': 0,
|
||||
'numSeeds': 0,
|
||||
'status': download.status,
|
||||
'bytesDownloaded': download.completed_length,
|
||||
}
|
||||
|
||||
return response
|
||||
183
python_rpc/main.py
Normal file
@@ -0,0 +1,183 @@
|
||||
from flask import Flask, request, jsonify
|
||||
import sys, json, urllib.parse, psutil
|
||||
from torrent_downloader import TorrentDownloader
|
||||
from http_downloader import HttpDownloader
|
||||
from profile_image_processor import ProfileImageProcessor
|
||||
import libtorrent as lt
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# Retrieve command line arguments
|
||||
torrent_port = sys.argv[1]
|
||||
http_port = sys.argv[2]
|
||||
rpc_password = sys.argv[3]
|
||||
start_download_payload = sys.argv[4]
|
||||
start_seeding_payload = sys.argv[5]
|
||||
|
||||
downloads = {}
|
||||
# This can be streamed down from Node
|
||||
downloading_game_id = -1
|
||||
|
||||
torrent_session = lt.session({'listen_interfaces': '0.0.0.0:{port}'.format(port=torrent_port)})
|
||||
|
||||
if start_download_payload:
|
||||
initial_download = json.loads(urllib.parse.unquote(start_download_payload))
|
||||
downloading_game_id = initial_download['game_id']
|
||||
|
||||
if initial_download['url'].startswith('magnet'):
|
||||
torrent_downloader = TorrentDownloader(torrent_session)
|
||||
downloads[initial_download['game_id']] = torrent_downloader
|
||||
try:
|
||||
torrent_downloader.start_download(initial_download['url'], initial_download['save_path'], "")
|
||||
except Exception as e:
|
||||
print("Error starting torrent download", e)
|
||||
else:
|
||||
http_downloader = HttpDownloader()
|
||||
downloads[initial_download['game_id']] = http_downloader
|
||||
try:
|
||||
http_downloader.start_download(initial_download['url'], initial_download['save_path'], initial_download.get('header'))
|
||||
except Exception as e:
|
||||
print("Error starting http download", e)
|
||||
|
||||
if start_seeding_payload:
|
||||
initial_seeding = json.loads(urllib.parse.unquote(start_seeding_payload))
|
||||
for seed in initial_seeding:
|
||||
torrent_downloader = TorrentDownloader(torrent_session, lt.torrent_flags.upload_mode)
|
||||
downloads[seed['game_id']] = torrent_downloader
|
||||
try:
|
||||
torrent_downloader.start_download(seed['url'], seed['save_path'], "")
|
||||
except Exception as e:
|
||||
print("Error starting seeding", e)
|
||||
|
||||
def validate_rpc_password():
|
||||
"""Middleware to validate RPC password."""
|
||||
header_password = request.headers.get('x-hydra-rpc-password')
|
||||
if header_password != rpc_password:
|
||||
return jsonify({"error": "Unauthorized"}), 401
|
||||
|
||||
@app.route("/status", methods=["GET"])
|
||||
def status():
|
||||
auth_error = validate_rpc_password()
|
||||
if auth_error:
|
||||
return auth_error
|
||||
|
||||
downloader = downloads.get(downloading_game_id)
|
||||
if downloader:
|
||||
status = downloads.get(downloading_game_id).get_download_status()
|
||||
return jsonify(status), 200
|
||||
else:
|
||||
return jsonify(None)
|
||||
|
||||
@app.route("/seed-status", methods=["GET"])
|
||||
def seed_status():
|
||||
auth_error = validate_rpc_password()
|
||||
if auth_error:
|
||||
return auth_error
|
||||
|
||||
seed_status = []
|
||||
|
||||
for game_id, downloader in downloads.items():
|
||||
if not downloader:
|
||||
continue
|
||||
|
||||
response = downloader.get_download_status()
|
||||
if response is None:
|
||||
continue
|
||||
|
||||
if response.get('status') == 5:
|
||||
seed_status.append({
|
||||
'gameId': game_id,
|
||||
**response,
|
||||
})
|
||||
|
||||
return jsonify(seed_status), 200
|
||||
|
||||
@app.route("/healthcheck", methods=["GET"])
|
||||
def healthcheck():
|
||||
return "", 200
|
||||
|
||||
@app.route("/process-list", methods=["GET"])
|
||||
def process_list():
|
||||
auth_error = validate_rpc_password()
|
||||
if auth_error:
|
||||
return auth_error
|
||||
|
||||
process_list = [proc.info for proc in psutil.process_iter(['exe', 'pid', 'name'])]
|
||||
return jsonify(process_list), 200
|
||||
|
||||
@app.route("/profile-image", methods=["POST"])
|
||||
def profile_image():
|
||||
auth_error = validate_rpc_password()
|
||||
if auth_error:
|
||||
return auth_error
|
||||
|
||||
data = request.get_json()
|
||||
image_path = data.get('image_path')
|
||||
|
||||
try:
|
||||
processed_image_path, mime_type = ProfileImageProcessor.process_image(image_path)
|
||||
return jsonify({'imagePath': processed_image_path, 'mimeType': mime_type}), 200
|
||||
except Exception as e:
|
||||
return jsonify({"error": str(e)}), 400
|
||||
|
||||
@app.route("/action", methods=["POST"])
|
||||
def action():
|
||||
global torrent_session
|
||||
global downloading_game_id
|
||||
|
||||
auth_error = validate_rpc_password()
|
||||
if auth_error:
|
||||
return auth_error
|
||||
|
||||
data = request.get_json()
|
||||
action = data.get('action')
|
||||
game_id = data.get('game_id')
|
||||
|
||||
if action == 'start':
|
||||
url = data.get('url')
|
||||
|
||||
existing_downloader = downloads.get(game_id)
|
||||
|
||||
if url.startswith('magnet'):
|
||||
if existing_downloader and isinstance(existing_downloader, TorrentDownloader):
|
||||
existing_downloader.start_download(url, data['save_path'], "")
|
||||
else:
|
||||
torrent_downloader = TorrentDownloader(torrent_session)
|
||||
downloads[game_id] = torrent_downloader
|
||||
torrent_downloader.start_download(url, data['save_path'], "")
|
||||
else:
|
||||
if existing_downloader and isinstance(existing_downloader, HttpDownloader):
|
||||
existing_downloader.start_download(url, data['save_path'], data.get('header'))
|
||||
else:
|
||||
http_downloader = HttpDownloader()
|
||||
downloads[game_id] = http_downloader
|
||||
http_downloader.start_download(url, data['save_path'], data.get('header'))
|
||||
|
||||
downloading_game_id = game_id
|
||||
|
||||
elif action == 'pause':
|
||||
downloader = downloads.get(game_id)
|
||||
if downloader:
|
||||
downloader.pause_download()
|
||||
downloading_game_id = -1
|
||||
elif action == 'cancel':
|
||||
downloader = downloads.get(game_id)
|
||||
if downloader:
|
||||
downloader.cancel_download()
|
||||
elif action == 'resume_seeding':
|
||||
torrent_downloader = TorrentDownloader(torrent_session, lt.torrent_flags.upload_mode)
|
||||
downloads[game_id] = torrent_downloader
|
||||
torrent_downloader.start_download(data['url'], data['save_path'], "")
|
||||
elif action == 'pause_seeding':
|
||||
downloader = downloads.get(game_id)
|
||||
if downloader:
|
||||
downloader.cancel_download()
|
||||
|
||||
else:
|
||||
return jsonify({"error": "Invalid action"}), 400
|
||||
|
||||
return "", 200
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=int(http_port))
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
from PIL import Image
|
||||
import tempfile
|
||||
import os, uuid
|
||||
import os, uuid, tempfile
|
||||
|
||||
class ProfileImageProcessor:
|
||||
|
||||
@@ -16,8 +15,8 @@ class ProfileImageProcessor:
|
||||
mime_type = image.get_format_mimetype()
|
||||
return image_path, mime_type
|
||||
else:
|
||||
newUUID = str(uuid.uuid4())
|
||||
new_image_path = os.path.join(tempfile.gettempdir(), newUUID) + ".webp"
|
||||
new_uuid = str(uuid.uuid4())
|
||||
new_image_path = os.path.join(tempfile.gettempdir(), new_uuid) + ".webp"
|
||||
image.save(new_image_path)
|
||||
|
||||
new_image = Image.open(new_image_path)
|
||||
@@ -3,18 +3,18 @@ from cx_Freeze import setup, Executable
|
||||
# Dependencies are automatically detected, but it might need fine tuning.
|
||||
build_exe_options = {
|
||||
"packages": ["libtorrent"],
|
||||
"build_exe": "hydra-download-manager",
|
||||
"build_exe": "hydra-python-rpc",
|
||||
"include_msvcr": True
|
||||
}
|
||||
|
||||
setup(
|
||||
name="hydra-download-manager",
|
||||
name="hydra-python-rpc",
|
||||
version="0.1",
|
||||
description="Hydra",
|
||||
options={"build_exe": build_exe_options},
|
||||
executables=[Executable(
|
||||
"torrent-client/main.py",
|
||||
target_name="hydra-download-manager",
|
||||
"python_rpc/main.py",
|
||||
target_name="hydra-python-rpc",
|
||||
icon="build/icon.ico"
|
||||
)]
|
||||
)
|
||||
@@ -1,10 +1,10 @@
|
||||
import libtorrent as lt
|
||||
|
||||
class TorrentDownloader:
|
||||
def __init__(self, port: str):
|
||||
self.torrent_handles = {}
|
||||
self.downloading_game_id = -1
|
||||
self.session = lt.session({'listen_interfaces': '0.0.0.0:{port}'.format(port=port)})
|
||||
def __init__(self, torrent_session, flags = lt.torrent_flags.auto_managed):
|
||||
self.torrent_handle = None
|
||||
self.session = torrent_session
|
||||
self.flags = flags
|
||||
self.trackers = [
|
||||
"udp://tracker.opentrackr.org:1337/announce",
|
||||
"http://tracker.opentrackr.org:1337/announce",
|
||||
@@ -102,57 +102,48 @@ class TorrentDownloader:
|
||||
"http://bvarf.tracker.sh:2086/announce",
|
||||
]
|
||||
|
||||
def start_download(self, game_id: int, magnet: str, save_path: str):
|
||||
params = {'url': magnet, 'save_path': save_path, 'trackers': self.trackers}
|
||||
torrent_handle = self.session.add_torrent(params)
|
||||
self.torrent_handles[game_id] = torrent_handle
|
||||
torrent_handle.set_flags(lt.torrent_flags.auto_managed)
|
||||
torrent_handle.resume()
|
||||
def start_download(self, magnet: str, save_path: str, header: str):
|
||||
params = {'url': magnet, 'save_path': save_path, 'trackers': self.trackers, 'flags': self.flags}
|
||||
self.torrent_handle = self.session.add_torrent(params)
|
||||
self.torrent_handle.resume()
|
||||
|
||||
self.downloading_game_id = game_id
|
||||
def pause_download(self):
|
||||
if self.torrent_handle:
|
||||
self.torrent_handle.pause()
|
||||
self.torrent_handle.unset_flags(lt.torrent_flags.auto_managed)
|
||||
|
||||
def pause_download(self, game_id: int):
|
||||
torrent_handle = self.torrent_handles.get(game_id)
|
||||
if torrent_handle:
|
||||
torrent_handle.pause()
|
||||
torrent_handle.unset_flags(lt.torrent_flags.auto_managed)
|
||||
self.downloading_game_id = -1
|
||||
|
||||
def cancel_download(self, game_id: int):
|
||||
torrent_handle = self.torrent_handles.get(game_id)
|
||||
if torrent_handle:
|
||||
torrent_handle.pause()
|
||||
self.session.remove_torrent(torrent_handle)
|
||||
self.torrent_handles[game_id] = None
|
||||
self.downloading_game_id = -1
|
||||
def cancel_download(self):
|
||||
if self.torrent_handle:
|
||||
self.torrent_handle.pause()
|
||||
self.session.remove_torrent(self.torrent_handle)
|
||||
self.torrent_handle = None
|
||||
|
||||
def abort_session(self):
|
||||
for game_id in self.torrent_handles:
|
||||
torrent_handle = self.torrent_handles[game_id]
|
||||
torrent_handle.pause()
|
||||
self.session.remove_torrent(torrent_handle)
|
||||
self.torrent_handle = self.torrent_handles[game_id]
|
||||
self.torrent_handle.pause()
|
||||
self.session.remove_torrent(self.torrent_handle)
|
||||
|
||||
self.session.abort()
|
||||
self.torrent_handles = {}
|
||||
self.downloading_game_id = -1
|
||||
self.torrent_handle = None
|
||||
|
||||
def get_download_status(self):
|
||||
if self.downloading_game_id == -1:
|
||||
if self.torrent_handle is None:
|
||||
return None
|
||||
|
||||
torrent_handle = self.torrent_handles.get(self.downloading_game_id)
|
||||
|
||||
status = torrent_handle.status()
|
||||
info = torrent_handle.get_torrent_info()
|
||||
|
||||
return {
|
||||
status = self.torrent_handle.status()
|
||||
info = self.torrent_handle.get_torrent_info()
|
||||
|
||||
response = {
|
||||
'folderName': info.name() if info else "",
|
||||
'fileSize': info.total_size() if info else 0,
|
||||
'gameId': self.downloading_game_id,
|
||||
'progress': status.progress,
|
||||
'downloadSpeed': status.download_rate,
|
||||
'uploadSpeed': status.upload_rate,
|
||||
'numPeers': status.num_peers,
|
||||
'numSeeds': status.num_seeds,
|
||||
'status': status.state,
|
||||
'bytesDownloaded': status.progress * info.total_size() if info else status.all_time_download,
|
||||
}
|
||||
|
||||
return response
|
||||
@@ -1,7 +1,8 @@
|
||||
libtorrent
|
||||
cx_Freeze
|
||||
cx_Freeze == 7.2.3
|
||||
cx_Logging; sys_platform == 'win32'
|
||||
lief; sys_platform == 'win32'
|
||||
pywin32; sys_platform == 'win32'
|
||||
psutil
|
||||
Pillow
|
||||
flask
|
||||
aria2p
|
||||
|
||||
BIN
resources/achievement.wav
Normal file
|
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 18 KiB |
120
scripts/postinstall.cjs
Normal file
@@ -0,0 +1,120 @@
|
||||
const { default: axios } = require("axios");
|
||||
const util = require("node:util");
|
||||
const fs = require("node:fs");
|
||||
const path = require("node:path");
|
||||
const { spawnSync } = require("node:child_process");
|
||||
|
||||
const exec = util.promisify(require("node:child_process").exec);
|
||||
|
||||
const fileName = {
|
||||
win32: "ludusavi-v0.25.0-win64.zip",
|
||||
linux: "ludusavi-v0.25.0-linux.zip",
|
||||
darwin: "ludusavi-v0.25.0-mac.zip",
|
||||
};
|
||||
|
||||
const downloadLudusavi = async () => {
|
||||
if (fs.existsSync("ludusavi")) {
|
||||
console.log("Ludusavi already exists, skipping download...");
|
||||
return;
|
||||
}
|
||||
|
||||
const file = fileName[process.platform];
|
||||
const downloadUrl = `https://github.com/mtkennerly/ludusavi/releases/download/v0.25.0/${file}`;
|
||||
|
||||
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...`);
|
||||
|
||||
const pwd = process.cwd();
|
||||
|
||||
const targetPath = path.join(pwd, "ludusavi");
|
||||
|
||||
await exec(`npx extract-zip ${file} ${targetPath}`);
|
||||
|
||||
if (process.platform !== "win32") {
|
||||
fs.chmodSync(path.join(targetPath, "ludusavi"), 0o755);
|
||||
}
|
||||
|
||||
console.log("Extracted. Renaming folder...");
|
||||
|
||||
console.log(`Extracted ${file}, removing compressed downloaded file...`);
|
||||
fs.rmSync(file);
|
||||
});
|
||||
};
|
||||
|
||||
const downloadAria2WindowsAndLinux = 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.mkdirSync("aria2");
|
||||
fs.copyFileSync(
|
||||
path.join(file.replace(".zip", ""), "aria2c.exe"),
|
||||
"aria2/aria2c.exe"
|
||||
);
|
||||
fs.rmSync(file.replace(".zip", ""), { recursive: true });
|
||||
} 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);
|
||||
});
|
||||
};
|
||||
|
||||
const copyAria2Macos = async () => {
|
||||
console.log("Checking if aria2 is installed...");
|
||||
|
||||
const isAria2Installed = spawnSync("which", ["aria2c"]).status;
|
||||
|
||||
if (isAria2Installed != 0) {
|
||||
console.log("Please install aria2");
|
||||
console.log("brew install aria2");
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("Copying aria2 binary...");
|
||||
fs.mkdirSync("aria2");
|
||||
await exec(`cp $(which aria2c) aria2/aria2c`);
|
||||
};
|
||||
|
||||
if (process.platform == "darwin") {
|
||||
copyAria2Macos();
|
||||
} else {
|
||||
downloadAria2WindowsAndLinux();
|
||||
}
|
||||
|
||||
downloadLudusavi();
|
||||
66
scripts/upload-build.cjs
Normal file
@@ -0,0 +1,66 @@
|
||||
const fs = require("node:fs");
|
||||
const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3");
|
||||
const path = require("node:path");
|
||||
const packageJson = require("../package.json");
|
||||
|
||||
if (!process.env.BUILD_WEBHOOK_URL) {
|
||||
console.log("No BUILD_WEBHOOK_URL provided, skipping upload");
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
const s3 = new S3Client({
|
||||
region: "auto",
|
||||
endpoint: process.env.S3_ENDPOINT,
|
||||
forcePathStyle: true,
|
||||
credentials: {
|
||||
accessKeyId: process.env.S3_ACCESS_KEY_ID,
|
||||
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
|
||||
},
|
||||
});
|
||||
|
||||
const dist = path.resolve(__dirname, "..", "dist");
|
||||
|
||||
const extensionsToUpload = [".deb", ".exe", ".pacman"];
|
||||
|
||||
fs.readdir(dist, async (err, files) => {
|
||||
if (err) throw err;
|
||||
|
||||
const uploads = await Promise.all(
|
||||
files
|
||||
.filter((file) => extensionsToUpload.includes(path.extname(file)))
|
||||
.map(async (file) => {
|
||||
console.log(`⌛️ Uploading ${file}...`);
|
||||
const fileName = `${new Date().getTime()}-${file}`;
|
||||
|
||||
const command = new PutObjectCommand({
|
||||
Bucket: process.env.S3_BUILDS_BUCKET_NAME,
|
||||
Key: fileName,
|
||||
Body: fs.createReadStream(path.resolve(dist, file)),
|
||||
// 3 days
|
||||
Expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 3),
|
||||
});
|
||||
|
||||
await s3.send(command);
|
||||
|
||||
return {
|
||||
url: `${process.env.BUILDS_URL}/${fileName}`,
|
||||
name: fileName,
|
||||
};
|
||||
})
|
||||
);
|
||||
|
||||
if (uploads.length > 0) {
|
||||
await fetch(process.env.BUILD_WEBHOOK_URL, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify({
|
||||
uploads,
|
||||
branchName: process.env.BRANCH_NAME,
|
||||
version: packageJson.version,
|
||||
githubActor: process.env.GITHUB_ACTOR,
|
||||
}),
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -1,34 +1,49 @@
|
||||
{
|
||||
"language_name": "اَلْعَرَبِيَّةُ",
|
||||
"app": {
|
||||
"successfully_signed_in": "تم تسجيل الدخول بنجاح"
|
||||
},
|
||||
"home": {
|
||||
"featured": "مميّز",
|
||||
"trending": "شائع",
|
||||
"surprise_me": "فاجئني",
|
||||
"no_results": "لم يتم العثور على نتائج"
|
||||
"no_results": "لم يتم العثور على نتائج",
|
||||
"start_typing": "بدء الكتابة للبحث...",
|
||||
"hot": "الأكثر رواجا الآن",
|
||||
"weekly": "📅 أفضل ألعاب الأسبوع",
|
||||
"achievements": "🏆 ألعاب للتغلب عليها"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "قائمة الألعاب",
|
||||
"downloads": "التحميلات",
|
||||
"downloads": "التنزيلات",
|
||||
"settings": "إعدادات",
|
||||
"my_library": "مكتبتي",
|
||||
"downloading_metadata": "{{title}} (جارٍ تنزيل البيانات الوصفية...)",
|
||||
"paused": "{{title}} (متوقف)",
|
||||
"downloading": "{{title}} ({{percentage}} - جارٍ التنزيل...)",
|
||||
"paused": "{{title}} (متوقف مؤقتًا)",
|
||||
"downloading": "{{title}} ({{percentage}} - جاري التنزيل...)",
|
||||
"filter": "بحث في المكتبة",
|
||||
"home": "الرئيسية"
|
||||
"home": "الرئيسية",
|
||||
"queued": "{{title}} (في قائمة الانتظار)",
|
||||
"game_has_no_executable": "لم يتم تحديد اللعبة القابلة للتنفيذ",
|
||||
"sign_in": "تسجيل الدخول",
|
||||
"friends": "أصدقاء",
|
||||
"need_help": "بحاجة الى مساعدة؟"
|
||||
},
|
||||
"header": {
|
||||
"search": "ابحث عن الألعاب",
|
||||
"home": "الرئيسية",
|
||||
"catalogue": "قائمة الألعاب",
|
||||
"downloads": "التحميلات",
|
||||
"downloads": "التنزيلات",
|
||||
"search_results": "نتائج البحث",
|
||||
"settings": "إعدادات"
|
||||
"settings": "إعدادات",
|
||||
"version_available_install": "إصدار {{version}} متاح. ",
|
||||
"version_available_download": "إصدار {{version}} متاح. "
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "لا يوجد تنزيلات جارية",
|
||||
"downloading_metadata": "جارٍ تنزيل بيانات وصف {{title}}",
|
||||
"downloading": "جارٍ تنزيل {{title}}… ({{percentage}} مكتملة) - الانتهاء {{eta}} - {{speed}}"
|
||||
"no_downloads_in_progress": "لا توجد تنزيلات قيد التقدم",
|
||||
"downloading_metadata": "جارٍ التنزيل {{title}} البيانات الوصفية...",
|
||||
"downloading": "جارٍ التنزيل {{title}}… ({{percentage}} مكتملة) - الانتهاء {{eta}} - {{speed}}",
|
||||
"calculating_eta": "جارٍ التنزيل {{title}}… ({{percentage}} مكتمل) - حساب الوقت المتبقي...",
|
||||
"checking_files": "التحقق {{title}} ملفات…({{percentage}} مكتمل)"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "الصفحة التالية",
|
||||
@@ -36,101 +51,242 @@
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "افتح خيارات التنزيل",
|
||||
"download_options_zero": "لا يوجد خيار تنزيل",
|
||||
"download_options_one": "{{count}} خيار تنزيل",
|
||||
"download_options_other": "{{count}} خيار تنزيل",
|
||||
"download_options_zero": "{{count}} خيارات التنزيل",
|
||||
"updated_at": "تم التحديث {{updated_at}}",
|
||||
"install": "تثبيت",
|
||||
"install": "ثَبَّتَ",
|
||||
"resume": "استئناف",
|
||||
"pause": "إيقاف",
|
||||
"cancel": "إلغاء",
|
||||
"remove": "إزالة",
|
||||
"space_left_on_disk": "{{space}} متبقية على القرص",
|
||||
"eta": "الوقت المتبقي {{eta}}",
|
||||
"downloading_metadata": "جاري تنزيل البيانات الوصفية...",
|
||||
"filter": "تصفية حزم إعادة التجميع",
|
||||
"calculating_eta": "جارٍ حساب الوقت المتبقي…",
|
||||
"downloading_metadata": "جارٍ تنزيل البيانات الوصفية…",
|
||||
"filter": "إعادة حزم التصفية",
|
||||
"requirements": "متطلبات النظام",
|
||||
"minimum": "الحد الأدنى",
|
||||
"recommended": "موصى به",
|
||||
"release_date": "تم الإصدار في {{date}}",
|
||||
"publisher": "نشر بواسطة {{publisher}}",
|
||||
"recommended": "مُستَحسَن",
|
||||
"paused": "متوقف مؤقتًا",
|
||||
"release_date": "صدر بتاريخ {{date}}",
|
||||
"publisher": "نشرت من قبل {{publisher}}",
|
||||
"hours": "ساعات",
|
||||
"minutes": "دقائق",
|
||||
"amount_hours": "{{amount}} ساعات",
|
||||
"amount_minutes": "{{amount}} دقائق",
|
||||
"accuracy": "دقة {{accuracy}}%",
|
||||
"add_to_library": "إضافة إلى المكتبة",
|
||||
"accuracy": "{{accuracy}}٪ دقة",
|
||||
"add_to_library": "أضف إلى المكتبة",
|
||||
"remove_from_library": "إزالة من المكتبة",
|
||||
"no_downloads": "لا توجد تنزيلات متاحة",
|
||||
"no_downloads": "لا التنزيلات المتاحة",
|
||||
"play_time": "تم اللعب لمدة {{amount}}",
|
||||
"last_time_played": "آخر مرة لعبت {{period}}",
|
||||
"not_played_yet": "لم تلعب {{title}} بعد",
|
||||
"last_time_played": "لعبت آخر مرة {{period}}",
|
||||
"not_played_yet": "أنت لم تلعب {{title}} حتى الآن",
|
||||
"next_suggestion": "الاقتراح التالي",
|
||||
"play": "لعب",
|
||||
"deleting": "جاري حذف المثبت...",
|
||||
"deleting": "جارٍ حذف المثبت…",
|
||||
"close": "إغلاق",
|
||||
"playing_now": "قيد التشغيل الآن",
|
||||
"playing_now": "قيداللعب الآن",
|
||||
"change": "تغيير",
|
||||
"repacks_modal_description": "اختر الحزمة التي تريد تنزيلها",
|
||||
"select_folder_hint": "لتغيير المجلد الافتراضي، انتقل إلى الإعدادات",
|
||||
"download_now": "تنزيل الآن",
|
||||
"no_shop_details": "لم يتم استرداد تفاصيل المتجر.",
|
||||
"select_folder_hint": "لتغيير المجلد الافتراضي، انتقل إلى <0>إعدادات</0>",
|
||||
"download_now": "قم بالتنزيل الآن",
|
||||
"no_shop_details": "لا يمكن استرداد تفاصيل المتجر.",
|
||||
"download_options": "خيارات التنزيل",
|
||||
"download_path": "مسار التنزيل",
|
||||
"download_path": "مسار التحميل",
|
||||
"previous_screenshot": "لقطة الشاشة السابقة",
|
||||
"next_screenshot": "لقطة الشاشة التالية",
|
||||
"screenshot": "لقطة شاشة {{number}}",
|
||||
"open_screenshot": "افتح لقطة الشاشة {{number}}"
|
||||
"screenshot": "لقطة الشاشة {{number}}",
|
||||
"open_screenshot": "فتح لقطة الشاشة {{number}}",
|
||||
"download_settings": "تحميل الإعدادات",
|
||||
"downloader": "أداة التنزيل",
|
||||
"select_executable": "يختار",
|
||||
"no_executable_selected": "لم يتم تحديد أي ملف قابل للتنفيذ",
|
||||
"open_folder": "افتح المجلد",
|
||||
"open_download_location": "انظر الملفات التي تم تنزيلها",
|
||||
"create_shortcut": "إنشاء اختصار سطح المكتب",
|
||||
"clear": "واضح",
|
||||
"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": "حدث خطأ أثناء إنشاء الاختصار",
|
||||
"nsfw_content_title": "تحتوي هذه اللعبة على محتوى غير مناسب",
|
||||
"nsfw_content_description": "{{title}} يحتوي على محتوى قد لا يكون مناسبًا لجميع الأعمار. ",
|
||||
"allow_nsfw_content": "اسمح",
|
||||
"refuse_nsfw_content": "عُد",
|
||||
"stats": "احصائيات",
|
||||
"download_count": "التنزيلات",
|
||||
"player_count": "اللاعبين النشطين",
|
||||
"download_error": "خيار التنزيل هذا غير متوفر",
|
||||
"download": "تحميل",
|
||||
"executable_path_in_use": "قابل للتنفيذ قيد الاستخدام بالفعل بواسطة \"{{game}}\"",
|
||||
"warning": "تحذير:",
|
||||
"hydra_needs_to_remain_open": "لإجراء هذا التنزيل، يجب أن يظل Hydra مفتوحًا حتى اكتماله. ",
|
||||
"achievements": "الإنجازات",
|
||||
"achievements_count": "الإنجازات {{unlockedCount}}/{{achievementsCount}}",
|
||||
"cloud_save": "حفظ السحابة",
|
||||
"cloud_save_description": "احفظ تقدمك في السحابة واستمر في اللعب على أي جهاز",
|
||||
"backups": "النسخ الاحتياطية",
|
||||
"install_backup": "ثَبَّتَ",
|
||||
"delete_backup": "يمسح",
|
||||
"create_backup": "نسخة احتياطية جديدة",
|
||||
"last_backup_date": "آخر نسخة احتياطية قيد التشغيل {{date}}",
|
||||
"no_backup_preview": "لم يتم العثور على ألعاب محفوظة لهذا العنوان",
|
||||
"restoring_backup": "استعادة النسخة الاحتياطية ({{progress}} مكتمل)…",
|
||||
"uploading_backup": "جارٍ تحميل النسخة الاحتياطية…",
|
||||
"no_backups": "لم تقم بإنشاء أي نسخ احتياطية لهذه اللعبة حتى الآن",
|
||||
"backup_uploaded": "تم تحميل النسخة الاحتياطية",
|
||||
"backup_deleted": "تم حذف النسخة الاحتياطية",
|
||||
"backup_restored": "تمت استعادة النسخة الاحتياطية",
|
||||
"see_all_achievements": "شاهد جميع الإنجازات",
|
||||
"sign_in_to_see_achievements": "قم بتسجيل الدخول لرؤية الإنجازات",
|
||||
"mapping_method_automatic": "تلقائي",
|
||||
"mapping_method_manual": "يدوي",
|
||||
"mapping_method_label": "طريقة رسم الخرائط",
|
||||
"files_automatically_mapped": "تم تعيين الملفات تلقائيًا",
|
||||
"no_backups_created": "لم يتم إنشاء نسخ احتياطية لهذه اللعبة",
|
||||
"manage_files": "إدارة الملفات",
|
||||
"loading_save_preview": "جارٍ البحث عن حفظ الألعاب...",
|
||||
"wine_prefix": "بادئة النبيذ",
|
||||
"wine_prefix_description": "بادئة Wine المستخدمة لتشغيل هذه اللعبة",
|
||||
"no_download_option_info": "لا توجد معلومات متاحة",
|
||||
"backup_deletion_failed": "فشل في حذف النسخة الاحتياطية",
|
||||
"max_number_of_artifacts_reached": "تم الوصول إلى الحد الأقصى لعدد النسخ الاحتياطية لهذه اللعبة",
|
||||
"achievements_not_sync": "لا تتم مزامنة إنجازاتك",
|
||||
"manage_files_description": "إدارة الملفات التي سيتم نسخها احتياطيًا واستعادتها",
|
||||
"select_folder": "حدد المجلد",
|
||||
"backup_from": "نسخة احتياطية من {{date}}",
|
||||
"custom_backup_location_set": "تعيين موقع النسخ الاحتياطي المخصص",
|
||||
"no_directory_selected": "لم يتم تحديد أي دليل",
|
||||
"download_options_one": "{{count}} خيار التنزيل",
|
||||
"download_options_two": "{{count}} خيارات التنزيل",
|
||||
"download_options_few": "{{count}} خيارات التنزيل",
|
||||
"download_options_many": "{{count}} خيارات التنزيل",
|
||||
"download_options_other": "{{count}} خيارات التنزيل"
|
||||
},
|
||||
"activation": {
|
||||
"title": "تفعيل هايدرا",
|
||||
"title": "تفعيل Hydra",
|
||||
"installation_id": "معرف التثبيت:",
|
||||
"enter_activation_code": "أدخل رمز التفعيل الخاص بك",
|
||||
"message": "إذا كنت لا تعرف أين تسأل عن هذا ، فلا يجب أن يكون لديك هذا.",
|
||||
"activate": "تفعيل",
|
||||
"loading": "جار التحميل…"
|
||||
"message": "إذا كنت لا تعرف أين تطلب هذا، فلا ينبغي أن يكون لديك هذا.",
|
||||
"activate": "فعل",
|
||||
"loading": "تحميل…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "استئناف",
|
||||
"pause": "إيقاف مؤقت",
|
||||
"eta": "الوقت المتبقي {{eta}}",
|
||||
"paused": "متوقفة مؤقتًا",
|
||||
"verifying": "جار التحقق…",
|
||||
"completed": "اكتمل",
|
||||
"paused": "متوقف مؤقتًا",
|
||||
"verifying": "جارٍ التحقق…",
|
||||
"completed": "مكتمل",
|
||||
"removed": "لم يتم تحميلها",
|
||||
"cancel": "إلغاء",
|
||||
"filter": "تصفية الألعاب التي تم تنزيلها",
|
||||
"remove": "إزالة",
|
||||
"downloading_metadata": "جار تنزيل البيانات الوصفية…",
|
||||
"deleting": "جار حذف المثبت…",
|
||||
"downloading_metadata": "جارٍ تنزيل البيانات الوصفية…",
|
||||
"deleting": "جارٍ حذف المثبت…",
|
||||
"delete": "إزالة المثبت",
|
||||
"delete_modal_title": "هل أنت متأكد؟",
|
||||
"delete_modal_description": "سيؤدي هذا إلى إزالة جميع ملفات التثبيت من جهاز الكمبيوتر الخاص بك",
|
||||
"install": "تثبيت"
|
||||
"delete_modal_description": "سيؤدي هذا إلى إزالة كافة ملفات التثبيت من جهاز الكمبيوتر الخاص بك",
|
||||
"install": "ثَبَّتَ",
|
||||
"download_in_progress": "في تَقَدم",
|
||||
"queued_downloads": "التنزيلات في قائمة الانتظار",
|
||||
"downloads_completed": "مكتمل",
|
||||
"queued": "في قائمة الانتظار",
|
||||
"no_downloads_title": "هذا فارغ",
|
||||
"no_downloads_description": "لم تقم بتنزيل أي شيء باستخدام Hydra بعد، ولكن لم يفت الأوان بعد للبدء.",
|
||||
"checking_files": "جارٍ فحص الملفات…"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "مسار التنزيلات",
|
||||
"change": "تحديث",
|
||||
"notifications": "الإشعارات",
|
||||
"notifications": "إشعارات",
|
||||
"enable_download_notifications": "عند اكتمال التنزيل",
|
||||
"enable_repack_list_notifications": "عند إضافة حزمة جديدة",
|
||||
"real_debrid_api_token_label": "رمز واجهة برمجة التطبيقات (API) لـReal-Debrid ",
|
||||
"quit_app_instead_hiding": "إنهاء هايدرا بدلاً من التصغير الى شريط الحالة",
|
||||
"launch_with_system": "تشغيل هايدرا عند بدء تشغيل النظام",
|
||||
"real_debrid_api_token_label": "رمز Real-Debrid API",
|
||||
"quit_app_instead_hiding": "لا تخفي Hydra عند الإغلاق",
|
||||
"launch_with_system": "قم بتشغيل Hydra عند بدء تشغيل النظام",
|
||||
"general": "عام",
|
||||
"behavior": "السلوك",
|
||||
"enable_real_debrid": "تفعيل Real-Debrid ",
|
||||
"real_debrid_api_token_hint": "يمكنك الحصول على مفتاح API الخاص بك هنا",
|
||||
"save_changes": "حفظ التغييرات"
|
||||
"behavior": "سلوك",
|
||||
"download_sources": "تحميل المصادر",
|
||||
"language": "لغة",
|
||||
"real_debrid_api_token": "رمز API",
|
||||
"enable_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 بجلب روابط التنزيل من هذه المصادر. ",
|
||||
"validate_download_source": "التحقق من صحة",
|
||||
"remove_download_source": "إزالة",
|
||||
"add_download_source": "أضف المصدر",
|
||||
"download_count_zero": "{{countFormatted}} خيارات التنزيل",
|
||||
"download_source_url": "تنزيل عنوان URL المصدر",
|
||||
"add_download_source_description": "أدخل عنوان URL لملف .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": "وجد {{countFormatted}} خيارات التنزيل",
|
||||
"import": "يستورد",
|
||||
"public": "عام",
|
||||
"private": "خاص",
|
||||
"friends_only": "الأصدقاء فقط",
|
||||
"privacy": "خصوصية",
|
||||
"profile_visibility": "رؤية الملف الشخصي",
|
||||
"profile_visibility_description": "اختر من يمكنه رؤية ملفك الشخصي ومكتبتك",
|
||||
"required_field": "هذه الخانة مطلوبه",
|
||||
"source_already_exists": "تمت إضافة هذا المصدر بالفعل",
|
||||
"must_be_valid_url": "يجب أن يكون المصدر عنوان URL صالحًا",
|
||||
"blocked_users": "المستخدمين المحظورين",
|
||||
"user_unblocked": "تم إلغاء حظر المستخدم",
|
||||
"enable_achievement_notifications": "عندما يتم فتح الإنجاز",
|
||||
"launch_minimized": "تم تصغير إطلاق Hydra",
|
||||
"disable_nsfw_alert": "تعطيل تنبيه NSFW",
|
||||
"show_hidden_achievement_description": "إظهار وصف الإنجازات المخفية قبل فتحها",
|
||||
"download_count_one": "{{countFormatted}} خيار التنزيل",
|
||||
"download_count_two": "{{countFormatted}} خيارات التنزيل",
|
||||
"download_count_few": "{{countFormatted}} خيارات التنزيل",
|
||||
"download_count_many": "{{countFormatted}} خيارات التنزيل",
|
||||
"download_count_other": "{{countFormatted}} خيارات التنزيل",
|
||||
"found_download_option_one": "وجد {{countFormatted}} خيار التنزيل",
|
||||
"found_download_option_two": "وجد {{countFormatted}} خيارات التنزيل",
|
||||
"found_download_option_few": "وجد {{countFormatted}} خيارات التنزيل",
|
||||
"found_download_option_many": "وجد {{countFormatted}} خيارات التنزيل",
|
||||
"found_download_option_other": "وجد {{countFormatted}} خيارات التنزيل"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "تم التحميل",
|
||||
"game_ready_to_install": "{{title}} جاهزة للتثبيت",
|
||||
"repack_list_updated": "قائمة التجميعات المحدثة",
|
||||
"repack_count_one": "{{count}} حزمة مضافة",
|
||||
"repack_count_other": "{{count}} حزم مُضافة"
|
||||
"download_complete": "اكتمل التنزيل",
|
||||
"game_ready_to_install": "{{title}} جاهز للتثبيت",
|
||||
"repack_list_updated": "تم تحديث قائمة إعادة التعبئة",
|
||||
"new_update_available": "إصدار {{version}} متاح",
|
||||
"restart_to_install_update": "أعد تشغيل Hydra لتثبيت التحديث",
|
||||
"notification_achievement_unlocked_title": "تم فتح الإنجاز لـ {{game}}",
|
||||
"notification_achievement_unlocked_body": "{{achievement}} وغيرها {{count}} تم فتحها",
|
||||
"repack_count_zero": "{{count}} تمت إضافة العبوات",
|
||||
"repack_count_one": "{{count}} تمت إضافة أعد حزم",
|
||||
"repack_count_two": "{{count}} تمت إضافة العبوات",
|
||||
"repack_count_few": "{{count}} تمت إضافة العبوات",
|
||||
"repack_count_many": "{{count}} تمت إضافة العبوات",
|
||||
"repack_count_other": "{{count}} تمت إضافة العبوات"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "فتح هايدرا",
|
||||
"open": "افتح Hydra",
|
||||
"quit": "خروج"
|
||||
},
|
||||
"game_card": {
|
||||
@@ -138,10 +294,109 @@
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "البرامج غير مثبتة",
|
||||
"description": "لم يتم العثور على ملفات Wine أو Lutris التنفيذية على نظامك",
|
||||
"instructions": "تحقق من الطريقة الصحيحة لتثبيت أي منها على توزيعة Linux الخاصة بك حتى تعمل اللعبة بشكل طبيعي"
|
||||
"description": "لم يتم العثور على الملفات التنفيذية الخاصة بـ Wine أو Lutris على نظامك",
|
||||
"instructions": "تحقق من الطريقة الصحيحة لتثبيت أي منها على توزيعة Linux لديك حتى تعمل اللعبة بشكل طبيعي"
|
||||
},
|
||||
"modal": {
|
||||
"close": "زر إغلاق"
|
||||
"close": "زر الإغلاق"
|
||||
},
|
||||
"forms": {
|
||||
"toggle_password_visibility": "تبديل رؤية كلمة المرور"
|
||||
},
|
||||
"user_profile": {
|
||||
"amount_hours": "{{amount}} ساعات",
|
||||
"amount_minutes": "{{amount}} دقائق",
|
||||
"last_time_played": "لعبت آخر مرة {{period}}",
|
||||
"activity": "النشاط الأخير",
|
||||
"library": "مكتبة",
|
||||
"total_play_time": "إجمالي وقت اللعب",
|
||||
"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": "مكتبتك مرتبطة بحسابك الحالي. ",
|
||||
"add_friends": "أضف أصدقاء",
|
||||
"add": "يضيف",
|
||||
"friend_code": "رمز الصديق",
|
||||
"see_profile": "انظر الملف الشخصي",
|
||||
"sending": "إرسال",
|
||||
"friend_request_sent": "تم إرسال طلب الصداقة",
|
||||
"friends": "أصدقاء",
|
||||
"friends_list": "قائمة الأصدقاء",
|
||||
"user_not_found": "لم يتم العثور على المستخدم",
|
||||
"block_user": "حظر المستخدم",
|
||||
"add_friend": "إضافة صديق",
|
||||
"request_sent": "تم إرسال الطلب",
|
||||
"request_received": "تم استلام الطلب",
|
||||
"accept_request": "قبول الطلب",
|
||||
"ignore_request": "تجاهل الطلب",
|
||||
"cancel_request": "إلغاء الطلب",
|
||||
"undo_friendship": "التراجع عن الصداقة",
|
||||
"request_accepted": "تم قبول الطلب",
|
||||
"user_blocked_successfully": "تم حظر المستخدم بنجاح",
|
||||
"user_block_modal_text": "هذا سوف يمنع {{displayName}}",
|
||||
"blocked_users": "المستخدمين المحظورين",
|
||||
"unblock": "إلغاء الحظر",
|
||||
"no_friends_added": "ليس لديك أي أصدقاء مضافين",
|
||||
"pending": "قيد الانتظار",
|
||||
"no_pending_invites": "ليس لديك أي دعوات معلقة",
|
||||
"no_blocked_users": "ليس لديك أي مستخدمين محظورين",
|
||||
"friend_code_copied": "تم نسخ رمز الصديق",
|
||||
"undo_friendship_modal_text": "سيؤدي هذا إلى التراجع عن صداقتك معه {{displayName}}",
|
||||
"privacy_hint": "لضبط من يمكنه رؤية هذا، انتقل إلى <0>إعدادات</0>",
|
||||
"locked_profile": "هذا الملف الشخصي خاص",
|
||||
"image_process_failure": "فشل أثناء معالجة الصورة",
|
||||
"required_field": "هذه الخانة مطلوبه",
|
||||
"displayname_min_length": "يجب أن يتكون اسم العرض من 3 أحرف على الأقل",
|
||||
"displayname_max_length": "يجب ألا يزيد طول اسم العرض عن 50 حرفًا",
|
||||
"report_profile": "الإبلاغ عن هذا الملف الشخصي",
|
||||
"report_reason": "لماذا تقوم بالإبلاغ عن هذا الملف الشخصي؟",
|
||||
"report_description": "معلومات إضافية",
|
||||
"report_description_placeholder": "معلومات إضافية",
|
||||
"report": "تقرير",
|
||||
"report_reason_hate": "خطاب الكراهية",
|
||||
"report_reason_sexual_content": "المحتوى الجنسي",
|
||||
"report_reason_violence": "عنف",
|
||||
"report_reason_spam": "رسائل إلكترونية مزعجة",
|
||||
"profile_reported": "تم الإبلاغ عن الملف الشخصي",
|
||||
"your_friend_code": "رمز صديقك:",
|
||||
"upload_banner": "تحميل لافتة",
|
||||
"uploading_banner": "جارٍ تحميل البانر…",
|
||||
"background_image_updated": "تم تحديث صورة الخلفية",
|
||||
"report_reason_zero": "آخر",
|
||||
"report_reason_one": "لماذا تقوم بالإبلاغ عن هذا الملف الشخصي؟",
|
||||
"report_reason_two": "آخر",
|
||||
"report_reason_few": "آخر",
|
||||
"report_reason_many": "آخر",
|
||||
"report_reason_other": "آخر"
|
||||
},
|
||||
"achievement": {
|
||||
"achievement_unlocked": "تم فتح الإنجاز",
|
||||
"user_achievements": "{{displayName}}إنجازات",
|
||||
"your_achievements": "إنجازاتك",
|
||||
"unlocked_at": "مقفلة في: {{date}}",
|
||||
"subscription_needed": "مطلوب اشتراك Hydra Cloud لرؤية هذا المحتوى",
|
||||
"new_achievements_unlocked": "مفتوح {{achievementCount}} انجازات جديدة من {{gameCount}} ألعاب",
|
||||
"achievement_progress": "{{unlockedCount}}/{{totalCount}} الإنجازات",
|
||||
"achievements_unlocked_for_game": "مفتوح {{achievementCount}} انجازات جديدة ل {{gameTitle}}"
|
||||
},
|
||||
"hydra_cloud": {
|
||||
"subscription_tour_title": "اشتراك Hydra كلاود",
|
||||
"subscribe_now": "اشترك الآن",
|
||||
"cloud_saving": "الحفظ السحابي",
|
||||
"cloud_achievements": "احفظ إنجازاتك على السحابة",
|
||||
"animated_profile_picture": "صور شخصية متحركة",
|
||||
"premium_support": "دعم متميز",
|
||||
"show_and_compare_achievements": "عرض ومقارنة إنجازاتك مع المستخدمين الآخرين",
|
||||
"animated_profile_banner": "لافتة الملف الشخصي المتحركة"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
"language_name": "беларуская мова",
|
||||
"home": {
|
||||
"featured": "Рэкамэндаванае",
|
||||
"trending": "Актуальнае",
|
||||
"surprise_me": "Здзіві мяне",
|
||||
"no_results": "Няма вынікаў"
|
||||
},
|
||||
|
||||
415
src/locales/bg/translation.json
Normal file
@@ -0,0 +1,415 @@
|
||||
{
|
||||
"language_name": "Български",
|
||||
"app": {
|
||||
"successfully_signed_in": "Успешно вписване"
|
||||
},
|
||||
"home": {
|
||||
"featured": "Препоръчани",
|
||||
"surprise_me": "Изненадай ме",
|
||||
"no_results": "Не са намерени резултати",
|
||||
"start_typing": "Търсене...",
|
||||
"hot": "Актуално сега",
|
||||
"weekly": "📅 Най-доброто от седмицата",
|
||||
"achievements": "🏆 Игри, които да победите"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Каталог",
|
||||
"downloads": "Изтегляния",
|
||||
"settings": "Настройки",
|
||||
"my_library": "Моята библиотека",
|
||||
"downloading_metadata": "{{title}} (Сваляне на метаданни…)",
|
||||
"paused": "{{title}} (Пауза)",
|
||||
"downloading": "{{title}} ({{percentage}} - Изтегляне…)",
|
||||
"filter": "Търсене по име",
|
||||
"home": "Начало",
|
||||
"queued": "{{title}} (Опашка)",
|
||||
"game_has_no_executable": "Играта няма избран изпълним файл",
|
||||
"sign_in": "Вписване",
|
||||
"friends": "Приятели",
|
||||
"need_help": "Имате нужда от помощ??"
|
||||
},
|
||||
"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}} готово) - Изчисляване на оставащо време…",
|
||||
"checking_files": "Проверка на {{title}} файловете… ({{percentage}} готово)"
|
||||
},
|
||||
"catalogue": {
|
||||
"search": "Филтър…",
|
||||
"developers": "Разработчици",
|
||||
"genres": "Жанрове",
|
||||
"tags": "Тагове",
|
||||
"publishers": "Издатели",
|
||||
"download_sources": "Източници за изтегляне",
|
||||
"result_count": "{{resultCount}} резултати",
|
||||
"filter_count": "{{filterCount}} налични",
|
||||
"clear_filters": "Изчисти {{filterCount}} избрани"
|
||||
},
|
||||
"game_details": {
|
||||
"launch_options": "Опции за стартиране",
|
||||
"launch_options_description": "Напредналите потребители могат да въведат модификации на своите опции за стартиране",
|
||||
"launch_options_placeholder": "Няма зададен параметър",
|
||||
"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": "Филтрирай repacks",
|
||||
"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": "Избери repack който искаш да изтеглиш",
|
||||
"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": "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": "Грешка при създаването на пряк път",
|
||||
"nsfw_content_title": "Тази игра съдържа неподходящо съдържание",
|
||||
"nsfw_content_description": "{{title}} съдържа съдържание, което може да не е подходящо за всички възрасти. Сигурни ли сте, че искате да продължите?",
|
||||
"allow_nsfw_content": "Продължи",
|
||||
"refuse_nsfw_content": "Назад",
|
||||
"stats": "Статистики",
|
||||
"download_count": "Сваляния",
|
||||
"player_count": "Активни играчи",
|
||||
"download_error": "Тази опция за изтегляне не е налична",
|
||||
"download": "Свали",
|
||||
"executable_path_in_use": "Изпълнимият файл вече се използва от \"{{game}}\"",
|
||||
"warning": "Внимание:",
|
||||
"hydra_needs_to_remain_open": "за това изтегляне, Hydra трябва да остане отворена, когато е завършено. Ако Hydra се затвори преди завършването, ще загубите напредъка си..",
|
||||
"achievements": "Постижения",
|
||||
"achievements_count": "Постижения {{unlockedCount}}/{{achievementsCount}}",
|
||||
"cloud_save": "Запазване в облака",
|
||||
"cloud_save_description": "Запазете напредъка си в облака и продължете да играете на всяко устройство",
|
||||
"backups": "Резервни копия",
|
||||
"install_backup": "Инсталирай",
|
||||
"delete_backup": "Изтрий",
|
||||
"create_backup": "Ново копие",
|
||||
"last_backup_date": "Последно копие от {{date}}",
|
||||
"no_backup_preview": "Не бяха намерени запазени игри за това заглавие",
|
||||
"restoring_backup": "Възстановяване на резервно копие ({{progress}} готово)…",
|
||||
"uploading_backup": "Качване на резервно копие…",
|
||||
"no_backups": "Все още не сте създали резервни копия за тази игра",
|
||||
"backup_uploaded": "Качено резервно копие",
|
||||
"backup_deleted": "Изтрито резервно копие",
|
||||
"backup_restored": "Възстановен бекъп",
|
||||
"see_all_achievements": "Вижте всички постижения",
|
||||
"sign_in_to_see_achievements": "Влезте, за да видите постиженията",
|
||||
"mapping_method_automatic": "Автоматично",
|
||||
"mapping_method_manual": "Ръчно",
|
||||
"mapping_method_label": "Метод на картографиране",
|
||||
"files_automatically_mapped": "Автоматично картографиране на файлове",
|
||||
"no_backups_created": "Не са създадени резервни копия за тази игра",
|
||||
"manage_files": "Управление на файлове",
|
||||
"loading_save_preview": "Търсене на запазени игри…",
|
||||
"wine_prefix": "Wine Префикс",
|
||||
"wine_prefix_description": "Wine prefix използван за тази игра",
|
||||
"no_download_option_info": "Няма налични данни",
|
||||
"backup_deletion_failed": "Неуспешно изтриване на резервно копие",
|
||||
"max_number_of_artifacts_reached": "Достигнат максимален брой резервни копия за тази игра",
|
||||
"achievements_not_sync": "Постиженията не са синхронизирани",
|
||||
"manage_files_description": "Управлявайте кои файлове ще бъдат архивирани и възстановени",
|
||||
"select_folder": "Избери папка",
|
||||
"backup_from": "Резервно копие от {{date}}",
|
||||
"custom_backup_location_set": "Задаване на персонализирано местоположение за архивиране"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Активирай Hydra",
|
||||
"installation_id": "Идентификатор на инсталацията:",
|
||||
"enter_activation_code": "Въведете кода за активиране",
|
||||
"message": "Ако не знаете къде да попитате за това, значи не трябва да го имате..",
|
||||
"activate": "Активирай",
|
||||
"loading": "Зареждане…"
|
||||
},
|
||||
"downloads": {
|
||||
"seeding": "Сийдване",
|
||||
"stop_seeding": "Спри сийдването",
|
||||
"resume_seeding": "Продължи сийдването",
|
||||
"options": "Управление",
|
||||
"resume": "Продължи",
|
||||
"pause": "Пауза",
|
||||
"eta": "Conclusion {{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, но никога не е късно да започнете...",
|
||||
"checking_files": "Проверка на файлове…"
|
||||
},
|
||||
"settings": {
|
||||
"seed_after_download_complete": "Сийд след завършване на изтеглянето",
|
||||
"show_hidden_achievement_description": "Показвай описанието на скритите постижения преди отключването им",
|
||||
"downloads_path": "Инсталационен път",
|
||||
"change": "Актуализиране",
|
||||
"notifications": "Известия",
|
||||
"enable_download_notifications": "Когато изтеглянето е завършено",
|
||||
"enable_repack_list_notifications": "Когато се добави нов repack",
|
||||
"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_source_url": "URL адрес на източника за изтегляне",
|
||||
"add_download_source_description": "Вмъкнете URL адреса на файла .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 линк",
|
||||
"found_download_option_zero": "Няма намерени опции за сваляне",
|
||||
"found_download_option_one": "Намерени {{countFormatted}} опции за сваляне",
|
||||
"found_download_option_other": "Намерени {{countFormatted}} опции за сваляне",
|
||||
"import": "Внеси",
|
||||
"public": "Публичен",
|
||||
"private": "Личен",
|
||||
"friends_only": "Само за приятели",
|
||||
"privacy": "Поверителност",
|
||||
"profile_visibility": "Видимост на профила",
|
||||
"profile_visibility_description": "Изберете кой може да вижда вашия профил и библиотека",
|
||||
"required_field": "Това поле е задължително",
|
||||
"source_already_exists": "Този източник вече е добавен",
|
||||
"must_be_valid_url": "Източникът трябва да е валиден URL адрес.",
|
||||
"blocked_users": "Блокирани потребители",
|
||||
"user_unblocked": "Потребителят е бил деблокиран",
|
||||
"enable_achievement_notifications": "Когато е отключено постижение",
|
||||
"launch_minimized": "Стартиране на Hydra минимизирано",
|
||||
"disable_nsfw_alert": "Деактивиране на предупреждението NSFW"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Изтеглянето е завършено",
|
||||
"game_ready_to_install": "{{title}} е готово за инсталиране",
|
||||
"repack_list_updated": "Repack лист е обновен",
|
||||
"repack_count_one": "{{count}} repack е добавен",
|
||||
"repack_count_other": "{{count}} repacks добавени",
|
||||
"new_update_available": "Версия {{version}} е налична",
|
||||
"restart_to_install_update": "Рестартирайте Hydra, за да инсталирате актуализацията",
|
||||
"notification_achievement_unlocked_title": "Отключено постижение за {{game}}",
|
||||
"notification_achievement_unlocked_body": "{{achievement}} и други {{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": {
|
||||
"stats": "Статистики",
|
||||
"achievements": "Постижения",
|
||||
"games": "Игри",
|
||||
"top_percentile": "Топ {{percentile}}%",
|
||||
"ranking_updated_weekly": "Класацията се актуализира седмично",
|
||||
"playing": "Играе {{game}}",
|
||||
"achievements_unlocked": "Отключени постижения",
|
||||
"earned_points": "Спечелени точки",
|
||||
"show_achievements_on_profile": "Показвай своите постижения в профила",
|
||||
"show_points_on_profile": "Показвай спечелените точки в профила",
|
||||
"amount_hours": "{{amount}} часове",
|
||||
"amount_minutes": "{{amount}} минути",
|
||||
"last_time_played": "Последно играно {{period}}",
|
||||
"activity": "Скорошна активност",
|
||||
"library": "Библиотека",
|
||||
"total_play_time": "Общо време за игра",
|
||||
"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": "Вашата библиотека е свързана с текущата ви сметка. Когато се отпишете, библиотеката ви вече няма да е видима и напредъкът няма да бъде запазен. Продължете с отписването?",
|
||||
"add_friends": "Добави приятели",
|
||||
"add": "Добави",
|
||||
"friend_code": "Приятелски код",
|
||||
"see_profile": "Виж профила",
|
||||
"sending": "Изпращане",
|
||||
"friend_request_sent": "Изпратена покана за приятелство",
|
||||
"friends": "Приятели",
|
||||
"friends_list": "Списък с приятели",
|
||||
"user_not_found": "Не е намерен потребител",
|
||||
"block_user": "Блокирай потребител",
|
||||
"add_friend": "Добави приятел",
|
||||
"request_sent": "Изпратена покана",
|
||||
"request_received": "Получена покана",
|
||||
"accept_request": "Приеми поканата",
|
||||
"ignore_request": "Игнирирай поканата",
|
||||
"cancel_request": "Откажи поканата",
|
||||
"undo_friendship": "Отмяна на приятелството",
|
||||
"request_accepted": "Поканата е приета",
|
||||
"user_blocked_successfully": "Потребителят е блокиран успешно",
|
||||
"user_block_modal_text": "Това ще блокира {{displayName}}",
|
||||
"blocked_users": "Блокирани потребители",
|
||||
"unblock": "Отблокирай",
|
||||
"no_friends_added": "Не сте добавили приятели",
|
||||
"pending": "Чакащи",
|
||||
"no_pending_invites": "Нямате чакащи покани",
|
||||
"no_blocked_users": "Нямате блокирани потребители",
|
||||
"friend_code_copied": "Приятелския код е копиран",
|
||||
"undo_friendship_modal_text": "Това ще отмени приятелството ви с {{displayName}}",
|
||||
"privacy_hint": "За да настроите кой може да вижда това, отидете в <0>Настройки</0>",
|
||||
"locked_profile": "Този профил е личен",
|
||||
"image_process_failure": "Грешка при обработката на изображението",
|
||||
"required_field": "Това поле е задължително",
|
||||
"displayname_min_length": "Името трябва да е дълго поне 3 символа",
|
||||
"displayname_max_length": "Името трябва да е с дължина не повече от 50 символа.",
|
||||
"report_profile": "Докладвай този профил",
|
||||
"report_reason": "Защо докладвате този профил?",
|
||||
"report_description": "Допълнителна информация",
|
||||
"report_description_placeholder": "Допълнителна информация",
|
||||
"report": "Докладвай",
|
||||
"report_reason_hate": "Омразна реч",
|
||||
"report_reason_sexual_content": "Сексуално съдържание",
|
||||
"report_reason_violence": "Насилия",
|
||||
"report_reason_spam": "Спам",
|
||||
"report_reason_other": "Друго",
|
||||
"profile_reported": "Профилът е докладван",
|
||||
"your_friend_code": "Вашия приятелски код:",
|
||||
"upload_banner": "Качи банер",
|
||||
"uploading_banner": "Качване на банер…",
|
||||
"background_image_updated": "Обновено фоново изображение"
|
||||
},
|
||||
"achievement": {
|
||||
"hidden_achievement_tooltip": "Това е скрито постижение",
|
||||
"achievement_earn_points": "Спечели {{points}} точки с това постижение",
|
||||
"earned_points": "Спечелени точки:",
|
||||
"available_points": "Налични точки:",
|
||||
"how_to_earn_achievements_points": "Как да спечелиш точки за постижения?",
|
||||
"achievement_unlocked": "Постижението е отключено",
|
||||
"user_achievements": "Постиженията на {{displayName}} ",
|
||||
"your_achievements": "Вашите Постижения",
|
||||
"unlocked_at": "Отключено на: {{date}}",
|
||||
"subscription_needed": "Необходим е абонамент за Hydra Cloud, за да видите това съдържание",
|
||||
"new_achievements_unlocked": "Отключени {{achievementCount}} нови постижения от {{gameCount}} игра",
|
||||
"achievement_progress": "{{unlockedCount}}/{{totalCount}} постижения",
|
||||
"achievements_unlocked_for_game": "Отключени {{achievementCount}} нови постижения за {{gameTitle}}"
|
||||
},
|
||||
"hydra_cloud": {
|
||||
"hydra_cloud": "Hydra Cloud",
|
||||
"hydra_cloud_feature_found": "Открихте функция на Hydra Cloud!",
|
||||
"learn_more": "Научете повече",
|
||||
"subscription_tour_title": "Hydra Cloud Абонамент",
|
||||
"subscribe_now": "Абонирай се сега",
|
||||
"cloud_saving": "Запазване в облака",
|
||||
"cloud_achievements": "Запазете постиженията си в облака",
|
||||
"animated_profile_picture": "Анимирана профилна снимка",
|
||||
"premium_support": "Премиум поддръжка",
|
||||
"show_and_compare_achievements": "Показвайте и сравнявайте постиженията си с тези на други потребители",
|
||||
"animated_profile_banner": "Анимиран профилен банер"
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,6 @@
|
||||
},
|
||||
"home": {
|
||||
"featured": "Destacats",
|
||||
"trending": "Populars",
|
||||
"surprise_me": "Sorprèn-me",
|
||||
"no_results": "No s'ha trobat res"
|
||||
},
|
||||
@@ -178,9 +177,6 @@
|
||||
"download_count_zero": "No hi ha baixades a la llista",
|
||||
"download_count_one": "{{countFormatted}} a la llista de baixades",
|
||||
"download_count_other": "{{countFormatted}} baixades a la llista",
|
||||
"download_options_zero": "No hi ha cap descàrrega disponible",
|
||||
"download_options_one": "{{countFormatted}} descàrrega disponible",
|
||||
"download_options_other": "{{countFormatted}} baixades disponibles",
|
||||
"download_source_url": "Descarrega l'URL de la font",
|
||||
"add_download_source_description": "Inseriu la URL que conté el fitxer .json",
|
||||
"download_source_up_to_date": "Actualitzat",
|
||||
@@ -228,7 +224,7 @@
|
||||
"last_time_played": "Última partida {{period}}",
|
||||
"activity": "Activitat recent",
|
||||
"library": "Biblioteca",
|
||||
"total_play_time": "Temps total de joc:{{amount}}",
|
||||
"total_play_time": "Temps total de joc",
|
||||
"no_recent_activity_title": "Hmmm… encara no res",
|
||||
"no_recent_activity_description": "No has jugat a cap joc recentment. És el moment de canviar-ho!",
|
||||
"display_name": "Nom de visualització",
|
||||
|
||||
@@ -5,9 +5,12 @@
|
||||
},
|
||||
"home": {
|
||||
"featured": "Doporučené",
|
||||
"trending": "Trendy",
|
||||
"surprise_me": "Překvap mě",
|
||||
"no_results": "Výsledek nenalezen"
|
||||
"no_results": "Výsledek nenalezen",
|
||||
"start_typing": "Začni psát pro vyhledávání...",
|
||||
"hot": "Teď populární",
|
||||
"weekly": "📅 Nejlepší hry týdne",
|
||||
"achievements": "🏆 Hry k překonání"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Katalog",
|
||||
@@ -21,7 +24,9 @@
|
||||
"home": "Domov",
|
||||
"queued": "{{title}} (V řadě)",
|
||||
"game_has_no_executable": "Hra nemá zvolen žádný spustitelný soubor",
|
||||
"sign_in": "Přihlásit se"
|
||||
"sign_in": "Přihlásit se",
|
||||
"friends": "Přátelé",
|
||||
"need_help": "Potřebujete pomoc?"
|
||||
},
|
||||
"header": {
|
||||
"search": "Vyhledat hry",
|
||||
@@ -114,7 +119,54 @@
|
||||
"download_paused": "Stahování pozastaveno",
|
||||
"last_downloaded_option": "Poslední stažená možnost",
|
||||
"create_shortcut_success": "Zástupce vytvořen úspěšně",
|
||||
"create_shortcut_error": "Chyba při pokusu vytvořit zástupce"
|
||||
"create_shortcut_error": "Chyba při pokusu vytvořit zástupce",
|
||||
"nsfw_content_title": "Tahle hra obsahuje nevhodný obsah",
|
||||
"nsfw_content_description": "{{title}} obsahuje obsah, který by nemusel být vhodný pro všechny věkové skupiny. Jste si jisti, že chcete pokračovat?",
|
||||
"allow_nsfw_content": "Pokračovat",
|
||||
"refuse_nsfw_content": "Jít zpět",
|
||||
"stats": "Statistiky",
|
||||
"download_count": "Stažení",
|
||||
"player_count": "Aktivní hráči",
|
||||
"download_error": "Tahle možnost stažení není dostupná",
|
||||
"download": "Stáhnout",
|
||||
"executable_path_in_use": "Spustitelný soubor již používá \"{{game}}\"",
|
||||
"warning": "Varování",
|
||||
"hydra_needs_to_remain_open": "Pro tohle stažení, musí Hydra zůstat otevřená až do konce stahování. Pokud Hydru zavřete dříve, postup stahování bude ztracen.",
|
||||
"achievements": "Achievementy",
|
||||
"achievements_count": "Achievementy {{unlockedCount}}/{{achievementsCount}}",
|
||||
"cloud_save": "Uložení v cloudu",
|
||||
"cloud_save_description": "Uložte si svůj postup v cloud a pokračujte v hraní na jakémkoliv zářízení",
|
||||
"backups": "Zálohy",
|
||||
"install_backup": "Nainstalovat",
|
||||
"delete_backup": "Smazat",
|
||||
"create_backup": "Vytvořit zálohu",
|
||||
"last_backup_date": "Poslední záloha vytvořena {{date}}",
|
||||
"no_backup_preview": "Žádné zálohy nebyly nalezeny pro tuhle hru",
|
||||
"restoring_backup": "Obnovuji zálohu ({{progress}} hotovo)...",
|
||||
"uploading_backup": "Nahrávání zálohy...",
|
||||
"no_backups": "Nemáte zatím vytvořeny žádné zálohy pro tuto hru",
|
||||
"backup_uploaded": "Záloha nahrána",
|
||||
"backup_deleted": "Záloha odstraněna",
|
||||
"backup_restored": "Záloha obnovena",
|
||||
"see_all_achievements": "Zobrazit všechny achievementy",
|
||||
"sign_in_to_see_achievements": "Musíte se přihlásit pro zobrazení achievementů",
|
||||
"mapping_method_automatic": "Automaticky",
|
||||
"mapping_method_manual": "Manuálně",
|
||||
"mapping_method_label": "Metoda mapování",
|
||||
"files_automatically_mapped": "Soubory automaticky zmapovány",
|
||||
"no_backups_created": "Žádné zálohy nebyly vytvořeny pro tuto hru",
|
||||
"manage_files": "Spravovat soubory",
|
||||
"loading_save_preview": "Hledání uložených her...",
|
||||
"wine_prefix": "Wine Prefix",
|
||||
"wine_prefix_description": "Wine Prefix použit pro spuštění této hry",
|
||||
"no_download_option_info": "Žádné informace nejsou dostupny",
|
||||
"backup_deletion_failed": "Nepovedlo se odstranit zálohu",
|
||||
"max_number_of_artifacts_reached": "Dosáhli jste maximálního počtu záloh pro tuto hru",
|
||||
"achievements_not_sync": "Vaše achievementy nejsou synchronizovány",
|
||||
"manage_files_description": "Spravovat, které soubory budou zálohovány a obnoveny",
|
||||
"select_folder": "Vybrat složku",
|
||||
"backup_from": "Zálohy z {{date}}",
|
||||
"custom_backup_location_set": "Vlastní umístění záloh nastaveno"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Aktivovat hydru",
|
||||
@@ -190,7 +242,21 @@
|
||||
"found_download_option_zero": "Nenalezena žádná možnost stahování",
|
||||
"found_download_option_one": "Nalezena {{countFormatted}} možnost stahování",
|
||||
"found_download_option_other": "Nalezeny {{countFormatted}} možnosti stahování",
|
||||
"import": "Importovat"
|
||||
"import": "Importovat",
|
||||
"public": "Veřejné",
|
||||
"private": "Soukromé",
|
||||
"friends_only": "Pouze přátelé",
|
||||
"privacy": "Soukromí",
|
||||
"profile_visibility": "Viditelnost profilu",
|
||||
"profile_visibility_description": "Vyberte si, kdo může vidět váš profil a knihovnu",
|
||||
"required_field": "Toto pole je povinné",
|
||||
"source_already_exists": "Tento zdroj byl již přidán",
|
||||
"must_be_valid_url": "Zdroj musí být platký odkaz URL",
|
||||
"blocked_users": "Zablokovaní uživatelé",
|
||||
"user_unblocked": "Uživatel byl odblokován",
|
||||
"enable_achievement_notifications": "Když je odemknut achievement",
|
||||
"launch_minimized": "Spustit v minimalizovaném režimu",
|
||||
"disable_nsfw_alert": "Deaktivovat upozornění na nevhodný obsah"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Stahování dokončeno",
|
||||
@@ -199,7 +265,9 @@
|
||||
"repack_count_one": "{{count}} repack přidán",
|
||||
"repack_count_other": "{{count}} repacky přidány",
|
||||
"new_update_available": "Version {{version}} je dostupná",
|
||||
"restart_to_install_update": "Restartuj Hydru pro aktualizaci"
|
||||
"restart_to_install_update": "Restartuj Hydru pro aktualizaci",
|
||||
"notification_achievement_unlocked_title": "Achievement pro {{game}} byl odemknut",
|
||||
"notification_achievement_unlocked_body": "{{achievement}} a dalších {{count}} byly odemknuty"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Otevřít Hydru",
|
||||
@@ -225,7 +293,7 @@
|
||||
"last_time_played": "Naposledy hráno {{period}}",
|
||||
"activity": "Nedávná aktivita",
|
||||
"library": "Knihovna",
|
||||
"total_play_time": "Celkový odehraný čas: {{amount}}",
|
||||
"total_play_time": "Celkový odehraný čas",
|
||||
"no_recent_activity_title": "Hmmm… nic tu není",
|
||||
"no_recent_activity_description": "V poslední době si nehrál žádnout hru, můžeš to ale napravit!",
|
||||
"display_name": "Zobrazované jméno",
|
||||
@@ -267,6 +335,47 @@
|
||||
"no_pending_invites": "Nemáte žádné příchozí žádosti",
|
||||
"no_blocked_users": "Nemáte nikoho zablokovaného",
|
||||
"friend_code_copied": "Kód přítele zkopírován",
|
||||
"undo_friendship_modal_text": "Tímto zrušíte své přátelství s {{displayName}}"
|
||||
"undo_friendship_modal_text": "Tímto zrušíte své přátelství s {{displayName}}",
|
||||
"privacy_hint": "Pro změnu toho, kdo tohle může vidět, jděte do <0>Nastavení</0>",
|
||||
"locked_profile": "Tento profil je soukromý",
|
||||
"image_process_failure": "Nastala chyba při zpracování obrázku",
|
||||
"required_field": "Toto pole je povinné",
|
||||
"displayname_min_length": "Uživatelské jméno musí být minimálně 3 znaky dlouhé",
|
||||
"displayname_max_length": "Uživatelské jméno musí být maximálně 50 znaků dlouhé",
|
||||
"report_profile": "Nahlásit profil",
|
||||
"report_reason": "Proč nahlašujete tento profil?",
|
||||
"report_description": "Přídavné informace",
|
||||
"report_description_placeholder": "Přídavné informace",
|
||||
"report": "Nahlásit",
|
||||
"report_reason_hate": "Nenávistné projevy",
|
||||
"report_reason_sexual_content": "Sexuální obsah",
|
||||
"report_reason_violence": "Násilí",
|
||||
"report_reason_spam": "Spam",
|
||||
"report_reason_other": "Ostatní",
|
||||
"profile_reported": "Profil nahlášen",
|
||||
"your_friend_code": "Tvůj kód přítele:",
|
||||
"upload_banner": "Nahrát banner profilu",
|
||||
"uploading_banner": "Nahrávání banneru",
|
||||
"background_image_updated": "Obrázek pozadí byl změněn"
|
||||
},
|
||||
"achievement": {
|
||||
"achievement_unlocked": "Achievement odemčen",
|
||||
"user_achievements": "Achievementy uživatele {{displayName}}",
|
||||
"your_achievements": "Vaše achievementy",
|
||||
"unlocked_at": "Odemčeno: {{date}}",
|
||||
"subscription_needed": "Je vyžadováno předplatné Hydra Cloud pro zobrazení tohoto obsahu",
|
||||
"new_achievements_unlocked": "Odemčeno {{achievementCount}} nových achievementů z {{gameCount}} her",
|
||||
"achievement_progress": "{{unlockedCount}}/{{totalCount}} achievementů",
|
||||
"achievements_unlocked_for_game": "Odemčeno {{achievementCount}} nových achievementů pro {{gameTitle}}"
|
||||
},
|
||||
"hydra_cloud": {
|
||||
"subscription_tour_title": "Předplatné Hydra Cloud",
|
||||
"subscribe_now": "Připojit se",
|
||||
"cloud_saving": "Ukládání v cloudu",
|
||||
"cloud_achievements": "Ukládejte vaše achievementy do cloudu",
|
||||
"animated_profile_picture": "Animované profilové obrázky",
|
||||
"premium_support": "Prémiová podpora",
|
||||
"show_and_compare_achievements": "Zobraz a porovnej achievementy s ostatními uživateli",
|
||||
"animated_profile_banner": "Animovaný banner na profilu"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
{
|
||||
"language_name": "Dansk",
|
||||
"app": {
|
||||
"successfully_signed_in": "Loggede ind successfuldt"
|
||||
},
|
||||
"home": {
|
||||
"featured": "Anbefalet",
|
||||
"trending": "Trender",
|
||||
"surprise_me": "Overrask mig",
|
||||
"no_results": "Ingen resultater fundet"
|
||||
"no_results": "Ingen resultater fundet",
|
||||
"start_typing": "Begynd at skrive for at søge...",
|
||||
"hot": "Populært lige nu",
|
||||
"weekly": "📅 Mest populære spil denne uge"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Katalog",
|
||||
@@ -12,27 +17,35 @@
|
||||
"settings": "Indstillinger",
|
||||
"my_library": "Mit bibliotek",
|
||||
"downloading_metadata": "{{title}} (Downloader metadata…)",
|
||||
"paused": "{{title}} (Paused)",
|
||||
"downloading": "{{title}} ({{percentage}} - Downloading…)",
|
||||
"filter": "Filtrer bibliotek",
|
||||
"home": "Hjem"
|
||||
"paused": "{{title}} (Sat på pause)",
|
||||
"downloading": "{{title}} ({{percentage}} - Downloader…)",
|
||||
"filter": "Filtrér bibliotek",
|
||||
"home": "Hjem",
|
||||
"queued": "{{title}} (I køen)",
|
||||
"game_has_no_executable": "Spillet har ikke nogen eksekverbar fil valgt",
|
||||
"sign_in": "Log ind",
|
||||
"friends": "Venner"
|
||||
},
|
||||
"header": {
|
||||
"search": "Søg spil",
|
||||
"search": "Søg efter spil",
|
||||
"home": "Hjem",
|
||||
"catalogue": "Katalog",
|
||||
"downloads": "Downloads",
|
||||
"search_results": "Søge resultater",
|
||||
"settings": "Indstillinger"
|
||||
"settings": "Indstillinger",
|
||||
"version_available_install": "Version {{version}} tilgængelig. Klik her for at genstarte og installere.",
|
||||
"version_available_download": "Version {{version}} tilgængelig. Klik her for at downloade."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Ingen downloads igang",
|
||||
"downloading_metadata": "Downloader {{title}} metadata…",
|
||||
"downloading": "Downloader {{title}}… ({{percentage}} færdig) - Konklusion {{eta}} - {{speed}}"
|
||||
"downloading": "Downloader {{title}}… ({{percentage}} færdig) - Fuldt downloadet {{eta}} - {{speed}}",
|
||||
"calculating_eta": "Downloader {{title}}… ({{percentage}} færdig) - Udregner resterende tid…",
|
||||
"checking_files": "Checker {{title}} filer… ({{percentage}} færdig)"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Næste side",
|
||||
"previous_page": "Tidligere side"
|
||||
"previous_page": "Forrige side"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Åben download muligheder",
|
||||
@@ -47,11 +60,13 @@
|
||||
"remove": "Fjern",
|
||||
"space_left_on_disk": "{{space}} tilbage på harddisken",
|
||||
"eta": "Konklusion {{eta}}",
|
||||
"calculating_eta": "Udregner resterende tid…",
|
||||
"downloading_metadata": "Downloader metadata…",
|
||||
"filter": "Filtrer repacks",
|
||||
"filter": "Filtrér repacks",
|
||||
"requirements": "System behov",
|
||||
"minimum": "Mindste",
|
||||
"recommended": "Anbefalet",
|
||||
"paused": "Sat på pause",
|
||||
"release_date": "Offentliggjort den {{date}}",
|
||||
"publisher": "Udgivet af {{publisher}}",
|
||||
"hours": "timer",
|
||||
@@ -70,10 +85,51 @@
|
||||
"deleting": "Sletter installatør…",
|
||||
"close": "Luk",
|
||||
"playing_now": "Spiller nu",
|
||||
"change": "Ændré",
|
||||
"change": "Ændre",
|
||||
"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"
|
||||
"download_now": "Download nu",
|
||||
"no_shop_details": "Kunne ikke modtage butiks detaljerne.",
|
||||
"download_options": "Download muligheder",
|
||||
"download_path": "Download sti",
|
||||
"previous_screenshot": "Forrige skærmbillede",
|
||||
"next_screenshot": "Næste skærmbillede",
|
||||
"screenshot": "Skærmbillede {{number}}",
|
||||
"open_screenshot": "Åben skærmbillede {{number}}",
|
||||
"download_settings": "Download indstillinger",
|
||||
"downloader": "Downloader",
|
||||
"select_executable": "Vælg",
|
||||
"no_executable_selected": "Ingen eksekverbar fil valgt",
|
||||
"open_folder": "Åben mappe",
|
||||
"open_download_location": "Se downloadede filer",
|
||||
"create_shortcut": "Lav skrivebords genvej",
|
||||
"remove_files": "Fjern filer",
|
||||
"remove_from_library_title": "Er du sikker?",
|
||||
"remove_from_library_description": "Dette vil fjerne {{game}} fra dit bibliotek",
|
||||
"options": "Valgmuligheder",
|
||||
"executable_section_title": "Eksekverbar fil",
|
||||
"executable_section_description": "Sti til filen som skal bruges når \"Spil\" bliver klikket",
|
||||
"downloads_secion_title": "Downloads",
|
||||
"downloads_section_description": "Undersøg opdateringer eller andre versioner af dette spil",
|
||||
"danger_zone_section_title": "Farezonen",
|
||||
"danger_zone_section_description": "Fjern dette spil fra dit bibliotek eller filerne der er blevet downloadet af Hydra",
|
||||
"download_in_progress": "Download undervejs",
|
||||
"download_paused": "Download sat på pause",
|
||||
"last_downloaded_option": "Sidste download mulighed",
|
||||
"create_shortcut_success": "Genvej lavet successfuldt",
|
||||
"create_shortcut_error": "Fejl under skabelsen af genvej",
|
||||
"nsfw_content_title": "Dette spil indeholder upassende indhold",
|
||||
"nsfw_content_description": "{{title}} indeholder indhold der ikke egner sig til alle aldre. Er du sikker på at du vil fortsætte?",
|
||||
"allow_nsfw_content": "Fortsæt",
|
||||
"refuse_nsfw_content": "Gå tilbage",
|
||||
"stats": "Statistik",
|
||||
"download_count": "Downloads",
|
||||
"player_count": "Aktive spillere",
|
||||
"download_error": "Denne download mulighed er ikke tilgængelig",
|
||||
"download": "Download",
|
||||
"executable_path_in_use": "Eksekverbar allerede i brug af \"{{game}}\"",
|
||||
"warning": "Advarsel:",
|
||||
"hydra_needs_to_remain_open": "Hydra skal forblive åbent for at denne download kan gennemføres. I tilfælde af at Hydra lukker før downloaden er færdig, mister du dit fremskridt."
|
||||
},
|
||||
"activation": {
|
||||
"title": "Aktivér Hydra",
|
||||
@@ -81,45 +137,95 @@
|
||||
"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…"
|
||||
"loading": "Indlæser…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Fortsæt",
|
||||
"pause": "Pause",
|
||||
"eta": "Konklusion {{eta}}",
|
||||
"paused": "Pauset",
|
||||
"paused": "Sat på pause",
|
||||
"verifying": "Verificerer…",
|
||||
"completed": "Færdigt",
|
||||
"removed": "Ikke downloadet",
|
||||
"cancel": "Annullér",
|
||||
"filter": "Filtrer downloadet spil",
|
||||
"filter": "Filtrér 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"
|
||||
"install": "Installér",
|
||||
"download_in_progress": "Undervejs",
|
||||
"queued_downloads": "Downloadkø",
|
||||
"downloads_completed": "Gennemførte",
|
||||
"queued": "I kø",
|
||||
"no_downloads_title": "Rimelig tomt",
|
||||
"no_downloads_description": "Du har ikke downloadet noget med Hydra endnu, men det er aldrig for sent at begynde.",
|
||||
"checking_files": "Undersøger filer…"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Downloads sti",
|
||||
"change": "Opdatering",
|
||||
"change": "Opdatér",
|
||||
"notifications": "Notifikationer",
|
||||
"enable_download_notifications": "Når et download bliver færdigt",
|
||||
"enable_download_notifications": "Når en download bliver færdigt",
|
||||
"enable_repack_list_notifications": "Når en ny repack bliver tilføjet",
|
||||
"real_debrid_api_token_label": "Real-Debrid API nøgle",
|
||||
"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",
|
||||
"download_sources": "Download kilder",
|
||||
"language": "Sprog",
|
||||
"real_debrid_api_token": "API nøgle",
|
||||
"enable_real_debrid": "Slå Real-Debrid til",
|
||||
"real_debrid_description": "Real-Debrid er en ubegrænset downloader der gør det muligt for dig at downloade filer med det samme og med den bedste udnyttelse af din internet hastighed.",
|
||||
"real_debrid_invalid_token": "Ugyldig API nøgle",
|
||||
"real_debrid_api_token_hint": "Du kan få din API nøgle <0>her</0>",
|
||||
"save_changes": "Gem ændringer"
|
||||
"real_debrid_free_account_error": "Brugeren \"{{username}}\" er en gratis bruger. Venligst abbonér på Real-Debrid",
|
||||
"real_debrid_linked_message": "Brugeren \"{{username}}\" er forbundet",
|
||||
"save_changes": "Gem ændringer",
|
||||
"changes_saved": "Ændringer gemt successfuldt",
|
||||
"download_sources_description": "Hydra vil hente download links fra disse kilder. Kilde URLen skal være et direkte link til en .json fil der indeholder download linkene.",
|
||||
"validate_download_source": "Validér",
|
||||
"remove_download_source": "Fjern",
|
||||
"add_download_source": "Tilføj kilde",
|
||||
"download_count_zero": "Ingen download muligheder",
|
||||
"download_count_one": "{{countFormatted}} download mulighed",
|
||||
"download_count_other": "{{countFormatted}} download muligheder",
|
||||
"download_source_url": "Download kilde URL",
|
||||
"add_download_source_description": "Indsæt URLen der indeholder .json filen",
|
||||
"download_source_up_to_date": "Op til dato",
|
||||
"download_source_errored": "Fejlede",
|
||||
"sync_download_sources": "Synkronisér kilder",
|
||||
"removed_download_source": "Download kilde fjernet",
|
||||
"added_download_source": "Tilføjede download kilde",
|
||||
"download_sources_synced": "Alle download kilder er synkroniserede",
|
||||
"insert_valid_json_url": "Indsæt en gyldig JSON url",
|
||||
"found_download_option_zero": "Ingen download mulighed fundet",
|
||||
"found_download_option_one": "Fandt {{countFormatted}} download mulighed",
|
||||
"found_download_option_other": "Fandt {{countFormatted}} download mulighed",
|
||||
"import": "Importér",
|
||||
"public": "Offentlig",
|
||||
"private": "Privat",
|
||||
"friends_only": "Kun blandt venner",
|
||||
"privacy": "Privatliv",
|
||||
"profile_visibility": "Synlighed af profil",
|
||||
"profile_visibility_description": "Vælg hvem der kan se din profil og dit bibliotek",
|
||||
"required_field": "Dette felt er påkrævet",
|
||||
"source_already_exists": "Denne kilde er allerede blevet tilføjet",
|
||||
"must_be_valid_url": "Kilden skal være en gyldig URL",
|
||||
"blocked_users": "Blokerede brugere",
|
||||
"user_unblocked": "Brugeren er blevet afblokeret"
|
||||
},
|
||||
"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"
|
||||
"repack_count_other": "{{count}} repacks tilføjet",
|
||||
"new_update_available": "Version {{version}} tilgængelig",
|
||||
"restart_to_install_update": "Genstart Hydra for at installere opdateringen"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Åben Hydra",
|
||||
@@ -130,10 +236,80 @@
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programmer ikke installeret",
|
||||
"description": "Wine eller Lutris eksekverbare blev ikke fundet på dit system",
|
||||
"description": "Wine eller Lutris eksekverbar 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"
|
||||
},
|
||||
"forms": {
|
||||
"toggle_password_visibility": "Skift synlighed af kodeord"
|
||||
},
|
||||
"user_profile": {
|
||||
"amount_hours": "{{amount}} timer",
|
||||
"amount_minutes": "{{amount}} minuter",
|
||||
"last_time_played": "Sidst spillet {{period}}",
|
||||
"activity": "Seneste aktivitet",
|
||||
"library": "Bibliotek",
|
||||
"total_play_time": "Samlet spiltid",
|
||||
"no_recent_activity_title": "Hmmm… ikke noget her",
|
||||
"no_recent_activity_description": "Du har ikke spillet nogen spil for nyligt. Dét er det på tide at lave om på!",
|
||||
"display_name": "Brugernavn",
|
||||
"saving": "Gemmer",
|
||||
"save": "Gem",
|
||||
"edit_profile": "Redigér Profil",
|
||||
"saved_successfully": "Gemt successfuldt",
|
||||
"try_again": "Venligst, prøv igen",
|
||||
"sign_out_modal_title": "Er du sikker?",
|
||||
"cancel": "Annullér",
|
||||
"successfully_signed_out": "Loggede ud successfuldt",
|
||||
"sign_out": "Log ud",
|
||||
"playing_for": "Spiller i {{amount}}",
|
||||
"sign_out_modal_text": "Dit bibliotek er koblet sammen med din nuværende bruger. Når du logger ud er dit bibliotek ikke synligt længere, og nogen som helst form for fremskridt bliver ikke gemt. Vil du fortsætte med at logge ud?",
|
||||
"add_friends": "Tilføj venner",
|
||||
"add": "Tilføj",
|
||||
"friend_code": "Venne kode",
|
||||
"see_profile": "Se profil",
|
||||
"sending": "Sender",
|
||||
"friend_request_sent": "Venne anmodning sendt",
|
||||
"friends": "Venner",
|
||||
"friends_list": "Venne liste",
|
||||
"user_not_found": "Bruger ikke fundet",
|
||||
"block_user": "Blokér bruger",
|
||||
"add_friend": "Tilføj ven",
|
||||
"request_sent": "Anmodning sendt",
|
||||
"request_received": "Anmodning modtaget",
|
||||
"accept_request": "Acceptér anmodning",
|
||||
"ignore_request": "Ignorér anmodning",
|
||||
"cancel_request": "Annullér anmodning",
|
||||
"undo_friendship": "Fortryd venskab",
|
||||
"request_accepted": "Anmodning accepteret",
|
||||
"user_blocked_successfully": "Bruger blokeret successfuldt",
|
||||
"user_block_modal_text": "Dette blokerer {{displayName}}",
|
||||
"blocked_users": "Blokerede brugere",
|
||||
"unblock": "Afblokér",
|
||||
"no_friends_added": "Du har stadig ikke tilføjet nogen venner",
|
||||
"pending": "Afventer",
|
||||
"no_pending_invites": "Du har ingen afventende invitationer",
|
||||
"no_blocked_users": "Du har ingen blokerede brugere",
|
||||
"friend_code_copied": "Venne kode kopieret",
|
||||
"undo_friendship_modal_text": "Dette vil fortryde dit venskab med {{displayName}}",
|
||||
"privacy_hint": "For at justere hvem der kan se dette, gå til <0>Indstillingerne</0>",
|
||||
"locked_profile": "Denne profil er privat",
|
||||
"image_process_failure": "Fejlede under håndteringen af billedet",
|
||||
"required_field": "Dette felt er påkrævet",
|
||||
"displayname_min_length": "Brugernavnet skal være mindst 3 karakterer langt",
|
||||
"displayname_max_length": "Brugernavnet skal være højest 50 karakterer langt",
|
||||
"report_profile": "Rapportér denne profil",
|
||||
"report_reason": "Hvorfor rapportérer du denne profil?",
|
||||
"report_description": "Yderligere information",
|
||||
"report_description_placeholder": "Yderligere information",
|
||||
"report": "Rapportér",
|
||||
"report_reason_hate": "Hadefuld tale",
|
||||
"report_reason_sexual_content": "Seksuelt indhold",
|
||||
"report_reason_violence": "Vold",
|
||||
"report_reason_spam": "Spam",
|
||||
"report_reason_other": "Andet",
|
||||
"profile_reported": "Profil rapporteret"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
},
|
||||
"home": {
|
||||
"featured": "Empfohlen",
|
||||
"trending": "Beliebt",
|
||||
"surprise_me": "Überrasche mich",
|
||||
"no_results": "Keine Ergebnisse gefunden"
|
||||
},
|
||||
@@ -225,7 +224,7 @@
|
||||
"last_time_played": "Zuletzt gespielt {{period}}",
|
||||
"activity": "Letzte Aktivität",
|
||||
"library": "Bibliothek",
|
||||
"total_play_time": "Gesamtspielzeit: {{amount}}",
|
||||
"total_play_time": "Gesamtspielzeit",
|
||||
"no_recent_activity_title": "Hmmm… hier ist nichts",
|
||||
"no_recent_activity_description": "Du hast in letzter Zeit keine Spiele gespielt. Es wird Zeit das zu ändern!",
|
||||
"display_name": "Anzeigename",
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
},
|
||||
"home": {
|
||||
"featured": "Featured",
|
||||
"trending": "Trending",
|
||||
"surprise_me": "Surprise me",
|
||||
"no_results": "No results found",
|
||||
"start_typing": "Starting typing to search...",
|
||||
"hot": "🔥 Hot now",
|
||||
"weekly": "📅 Top games of the week"
|
||||
"hot": "Hot now",
|
||||
"weekly": "📅 Top games of the week",
|
||||
"achievements": "🏆 Games to beat"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Catalogue",
|
||||
@@ -25,7 +25,8 @@
|
||||
"queued": "{{title}} (Queued)",
|
||||
"game_has_no_executable": "Game has no executable selected",
|
||||
"sign_in": "Sign in",
|
||||
"friends": "Friends"
|
||||
"friends": "Friends",
|
||||
"need_help": "Need help?"
|
||||
},
|
||||
"header": {
|
||||
"search": "Search games",
|
||||
@@ -40,13 +41,20 @@
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "No downloads in progress",
|
||||
"downloading_metadata": "Downloading {{title}} metadata…",
|
||||
"downloading": "Downloading {{title}}… ({{percentage}} complete) - Conclusion {{eta}} - {{speed}}",
|
||||
"downloading": "Downloading {{title}}… ({{percentage}} complete) - Completion {{eta}} - {{speed}}",
|
||||
"calculating_eta": "Downloading {{title}}… ({{percentage}} complete) - Calculating remaining time…",
|
||||
"checking_files": "Checking {{title}} files… ({{percentage}} complete)"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Next page",
|
||||
"previous_page": "Previous page"
|
||||
"search": "Filter…",
|
||||
"developers": "Developers",
|
||||
"genres": "Genres",
|
||||
"tags": "Tags",
|
||||
"publishers": "Publishers",
|
||||
"download_sources": "Download sources",
|
||||
"result_count": "{{resultCount}} results",
|
||||
"filter_count": "{{filterCount}} available",
|
||||
"clear_filters": "Clear {{filterCount}} selected"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Open download options",
|
||||
@@ -104,6 +112,7 @@
|
||||
"open_folder": "Open folder",
|
||||
"open_download_location": "See downloaded files",
|
||||
"create_shortcut": "Create desktop shortcut",
|
||||
"clear": "Clear",
|
||||
"remove_files": "Remove files",
|
||||
"remove_from_library_title": "Are you sure?",
|
||||
"remove_from_library_description": "This will remove {{game}} from your library",
|
||||
@@ -130,7 +139,46 @@
|
||||
"download": "Download",
|
||||
"executable_path_in_use": "Executable already in use by \"{{game}}\"",
|
||||
"warning": "Warning:",
|
||||
"hydra_needs_to_remain_open": "for this download, Hydra needs to remain open util its conclusion. In case Hydra closes before the conclusion, you will lose your progress."
|
||||
"hydra_needs_to_remain_open": "for this download, Hydra needs to remain open util it's completed. If Hydra closes before completing, you will lose your progress.",
|
||||
"achievements": "Achievements",
|
||||
"achievements_count": "Achievements {{unlockedCount}}/{{achievementsCount}}",
|
||||
"cloud_save": "Cloud save",
|
||||
"cloud_save_description": "Save your progress in the cloud and continue playing on any device",
|
||||
"backups": "Backups",
|
||||
"install_backup": "Install",
|
||||
"delete_backup": "Delete",
|
||||
"create_backup": "New backup",
|
||||
"last_backup_date": "Last backup on {{date}}",
|
||||
"no_backup_preview": "No save games were found for this title",
|
||||
"restoring_backup": "Restoring backup ({{progress}} complete)…",
|
||||
"uploading_backup": "Uploading backup…",
|
||||
"no_backups": "You haven't created any backups for this game yet",
|
||||
"backup_uploaded": "Backup uploaded",
|
||||
"backup_deleted": "Backup deleted",
|
||||
"backup_restored": "Backup restored",
|
||||
"see_all_achievements": "See all achievements",
|
||||
"sign_in_to_see_achievements": "Sign in to see achievements",
|
||||
"mapping_method_automatic": "Automatic",
|
||||
"mapping_method_manual": "Manual",
|
||||
"mapping_method_label": "Mapping method",
|
||||
"files_automatically_mapped": "Files automatically mapped",
|
||||
"no_backups_created": "No backups created for this game",
|
||||
"manage_files": "Manage files",
|
||||
"loading_save_preview": "Searching for save games…",
|
||||
"wine_prefix": "Wine Prefix",
|
||||
"wine_prefix_description": "The Wine prefix used to run this game",
|
||||
"launch_options": "Launch Options",
|
||||
"launch_options_description": "Advanced users may choose to enter modifications to their launch options",
|
||||
"launch_options_placeholder": "No parameter specified",
|
||||
"no_download_option_info": "No information available",
|
||||
"backup_deletion_failed": "Failed to delete backup",
|
||||
"max_number_of_artifacts_reached": "Maximum number of backups reached for this game",
|
||||
"achievements_not_sync": "See how to synchronize your achievements",
|
||||
"manage_files_description": "Manage which files will be backed up and restored",
|
||||
"select_folder": "Select folder",
|
||||
"backup_from": "Backup from {{date}}",
|
||||
"custom_backup_location_set": "Custom backup location set",
|
||||
"no_directory_selected": "No directory selected"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Activate Hydra",
|
||||
@@ -163,7 +211,11 @@
|
||||
"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…"
|
||||
"checking_files": "Checking files…",
|
||||
"seeding": "Seeding",
|
||||
"stop_seeding": "Stop seeding",
|
||||
"resume_seeding": "Resume seeding",
|
||||
"options": "Manage"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Downloads path",
|
||||
@@ -180,7 +232,7 @@
|
||||
"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_description": "Real-Debrid is an unrestricted downloader that allows you to quickly download files, only limited by 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",
|
||||
@@ -195,7 +247,7 @@
|
||||
"download_count_one": "{{countFormatted}} download option",
|
||||
"download_count_other": "{{countFormatted}} download options",
|
||||
"download_source_url": "Download source URL",
|
||||
"add_download_source_description": "Insert the URL containing the .json file",
|
||||
"add_download_source_description": "Insert the URL of the .json file",
|
||||
"download_source_up_to_date": "Up-to-date",
|
||||
"download_source_errored": "Errored",
|
||||
"sync_download_sources": "Sync sources",
|
||||
@@ -214,10 +266,15 @@
|
||||
"profile_visibility": "Profile visibility",
|
||||
"profile_visibility_description": "Choose who can see your profile and library",
|
||||
"required_field": "This field is required",
|
||||
"source_already_exists": "This source has been already added",
|
||||
"source_already_exists": "This source has already been added",
|
||||
"must_be_valid_url": "The source must be a valid URL",
|
||||
"blocked_users": "Blocked users",
|
||||
"user_unblocked": "User has been unblocked"
|
||||
"user_unblocked": "User has been unblocked",
|
||||
"enable_achievement_notifications": "When an achievement is unlocked",
|
||||
"launch_minimized": "Launch Hydra minimized",
|
||||
"disable_nsfw_alert": "Disable NSFW alert",
|
||||
"seed_after_download_complete": "Seed after download complete",
|
||||
"show_hidden_achievement_description": "Show hidden achievements description before unlocking them"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Download complete",
|
||||
@@ -226,7 +283,9 @@
|
||||
"repack_count_one": "{{count}} repack added",
|
||||
"repack_count_other": "{{count}} repacks added",
|
||||
"new_update_available": "Version {{version}} available",
|
||||
"restart_to_install_update": "Restart Hydra to install the update"
|
||||
"restart_to_install_update": "Restart Hydra to install the update",
|
||||
"notification_achievement_unlocked_title": "Achievement unlocked for {{game}}",
|
||||
"notification_achievement_unlocked_body": "{{achievement}} and other {{count}} were unlocked"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Open Hydra",
|
||||
@@ -250,9 +309,9 @@
|
||||
"amount_hours": "{{amount}} hours",
|
||||
"amount_minutes": "{{amount}} minutes",
|
||||
"last_time_played": "Last played {{period}}",
|
||||
"activity": "Recent activity",
|
||||
"activity": "Recent Activity",
|
||||
"library": "Library",
|
||||
"total_play_time": "Total playtime: {{amount}}",
|
||||
"total_play_time": "Total playtime",
|
||||
"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",
|
||||
@@ -289,7 +348,7 @@
|
||||
"user_block_modal_text": "This will block {{displayName}}",
|
||||
"blocked_users": "Blocked users",
|
||||
"unblock": "Unblock",
|
||||
"no_friends_added": "You still don't have added friends",
|
||||
"no_friends_added": "You have no added friends",
|
||||
"pending": "Pending",
|
||||
"no_pending_invites": "You have no pending invites",
|
||||
"no_blocked_users": "You have no blocked users",
|
||||
@@ -311,6 +370,48 @@
|
||||
"report_reason_violence": "Violence",
|
||||
"report_reason_spam": "Spam",
|
||||
"report_reason_other": "Other",
|
||||
"profile_reported": "Profile reported"
|
||||
"profile_reported": "Profile reported",
|
||||
"your_friend_code": "Your friend code:",
|
||||
"upload_banner": "Upload banner",
|
||||
"uploading_banner": "Uploading banner…",
|
||||
"background_image_updated": "Background image updated",
|
||||
"stats": "Stats",
|
||||
"achievements": "achievements",
|
||||
"games": "Games",
|
||||
"top_percentile": "Top {{percentile}}%",
|
||||
"ranking_updated_weekly": "Ranking is updated weekly",
|
||||
"playing": "Playing {{game}}",
|
||||
"achievements_unlocked": "Achievements Unlocked",
|
||||
"earned_points": "Earned points",
|
||||
"show_achievements_on_profile": "Show your achievements on your profile",
|
||||
"show_points_on_profile": "Show your earned points on your profile"
|
||||
},
|
||||
"achievement": {
|
||||
"achievement_unlocked": "Achievement unlocked",
|
||||
"user_achievements": "{{displayName}}'s Achievements",
|
||||
"your_achievements": "Your Achievements",
|
||||
"unlocked_at": "Unlocked at: {{date}}",
|
||||
"subscription_needed": "A Hydra Cloud subscription is required to see this content",
|
||||
"new_achievements_unlocked": "Unlocked {{achievementCount}} new achievements from {{gameCount}} games",
|
||||
"achievement_progress": "{{unlockedCount}}/{{totalCount}} achievements",
|
||||
"achievements_unlocked_for_game": "Unlocked {{achievementCount}} new achievements for {{gameTitle}}",
|
||||
"hidden_achievement_tooltip": "This is a hidden achievement",
|
||||
"achievement_earn_points": "Earn {{points}} points with this achievement",
|
||||
"earned_points": "Earned points:",
|
||||
"available_points": "Available points:",
|
||||
"how_to_earn_achievements_points": "How to earn achievements points?"
|
||||
},
|
||||
"hydra_cloud": {
|
||||
"subscription_tour_title": "Hydra Cloud Subscription",
|
||||
"subscribe_now": "Subscribe now",
|
||||
"cloud_saving": "Cloud saving",
|
||||
"cloud_achievements": "Save your achievements on the cloud",
|
||||
"animated_profile_picture": "Animated profile pictures",
|
||||
"premium_support": "Premium Support",
|
||||
"show_and_compare_achievements": "Show and compare your achievements to other users",
|
||||
"animated_profile_banner": "Animated profile banner",
|
||||
"hydra_cloud": "Hydra Cloud",
|
||||
"hydra_cloud_feature_found": "You've just discovered a Hydra Cloud feature!",
|
||||
"learn_more": "Learn More"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
{
|
||||
"language_name": "Español",
|
||||
"app": {
|
||||
"successfully_signed_in": "Sesión iniciada correctamente"
|
||||
"successfully_signed_in": "Sesión iniciada exitosamente"
|
||||
},
|
||||
"home": {
|
||||
"featured": "Destacado",
|
||||
"trending": "Tendencias",
|
||||
"surprise_me": "¡Sorpréndeme!",
|
||||
"no_results": "No se encontraron resultados",
|
||||
"hot": "🔥 Caliente ahora",
|
||||
"weekly": "📅 Los mejores juegos de la semana",
|
||||
"start_typing": "Empieza a escribir para buscar..."
|
||||
"no_results": "Sin resultados encontrados",
|
||||
"start_typing": "Empieza a escribir para buscar...",
|
||||
"hot": "Popular Ahora",
|
||||
"weekly": "📅 Mejores juegos de la semana",
|
||||
"achievements": "🏆 Juegos para completar"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Catálogo",
|
||||
@@ -22,10 +22,11 @@
|
||||
"downloading": "{{title}} ({{percentage}} - Descargando…)",
|
||||
"filter": "Buscar en la biblioteca",
|
||||
"home": "Inicio",
|
||||
"queued": "{{title}} (En Cola)",
|
||||
"game_has_no_executable": "El juego no tiene un ejecutable",
|
||||
"queued": "{{title}} (En cola)",
|
||||
"game_has_no_executable": "El juego no tiene un ejecutable seleccionado",
|
||||
"sign_in": "Iniciar sesión",
|
||||
"friends": "Amigos"
|
||||
"friends": "Amigos",
|
||||
"need_help": "¿Necesitas ayuda?"
|
||||
},
|
||||
"header": {
|
||||
"search": "Buscar juegos",
|
||||
@@ -34,8 +35,8 @@
|
||||
"downloads": "Descargas",
|
||||
"search_results": "Resultados de búsqueda",
|
||||
"settings": "Ajustes",
|
||||
"version_available_install": "Version {{version}} disponible. Haz clic aquí para reiniciar e instalar.",
|
||||
"version_available_download": "Version {{version}} disponible. Haz clic aquí para descargar."
|
||||
"version_available_install": "Versión {{version}} disponible. Presiona acá para descargar y reinstalar.",
|
||||
"version_available_download": "Versión {{version}} disponible. Presiona aquí para descargar."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Sin descargas en progreso",
|
||||
@@ -45,8 +46,15 @@
|
||||
"checking_files": "Verificando archivos de {{title}}… ({{percentage}} completado)"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Siguiente página",
|
||||
"previous_page": "Pagina anterior"
|
||||
"search": "Filtrar…",
|
||||
"developers": "Desarrolladores",
|
||||
"genres": "Géneros",
|
||||
"tags": "Marcadores",
|
||||
"publishers": "Editores",
|
||||
"download_sources": "Fuentes de descarga",
|
||||
"result_count": "{{resultCount}} resultados",
|
||||
"filter_count": "{{filterCount}} disponibles",
|
||||
"clear_filters": "Limpiar {{filterCount}} seleccionados"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Ver opciones de descargas",
|
||||
@@ -78,7 +86,7 @@
|
||||
"add_to_library": "Agregar a la biblioteca",
|
||||
"remove_from_library": "Eliminar de la biblioteca",
|
||||
"no_downloads": "No hay descargas disponibles",
|
||||
"play_time": "Jugado por {{amount}}",
|
||||
"play_time": "Has jugado {{amount}}",
|
||||
"last_time_played": "Jugado por última vez: {{period}}",
|
||||
"not_played_yet": "Aún no has jugado a {{title}}",
|
||||
"next_suggestion": "Siguiente sugerencia",
|
||||
@@ -119,16 +127,55 @@
|
||||
"last_downloaded_option": "Última opción descargada",
|
||||
"create_shortcut_success": "Atajo creado con éxito",
|
||||
"create_shortcut_error": "Error al crear un atajo",
|
||||
"allow_nsfw_content": "Continuar",
|
||||
"download": "Descargar",
|
||||
"download_count": "Descargas",
|
||||
"download_error": "Esta opción de descarga no está disponible.",
|
||||
"executable_path_in_use": "Ejecutable ya en uso por \"{{game}}\"",
|
||||
"nsfw_content_description": "{{title}} incluye contenido que puede no ser adecuado para todas las edades. \n¿Estás seguro de que quieres continuar?",
|
||||
"nsfw_content_title": "Este juego contiene contenido inapropiado.",
|
||||
"nsfw_content_description": "{{title}} puede ser no adecuado para todas las edades por su contenido. \n¿Deseas continuar de igual forma?",
|
||||
"allow_nsfw_content": "Continuar",
|
||||
"refuse_nsfw_content": "No, gracias",
|
||||
"stats": "Estadísticas",
|
||||
"download_count": "Downloads",
|
||||
"player_count": "Jugadores activos",
|
||||
"refuse_nsfw_content": "Volver",
|
||||
"stats": "Estadísticas"
|
||||
"download_error": "Esta opción de descarga no está disponible.",
|
||||
"download": "Descargar",
|
||||
"executable_path_in_use": "El ejecutable se encuentra en uso por \"{{game}}\"",
|
||||
"warning": "Advertencia:",
|
||||
"hydra_needs_to_remain_open": "Para esta descarga, Hydra necesita mantenerse abierta hasta que concluya. En caso de que Hydra se cierre antes de que concluya, podrías perder todo el progreso.",
|
||||
"achievements": "Logros",
|
||||
"achievements_count": "Logros {{unlockedCount}}/{{achievementsCount}}",
|
||||
"cloud_save": "Guardado en la nube",
|
||||
"cloud_save_description": "Guarda tu progreso en la nube y continúa jugando en cualquier dispositivo",
|
||||
"backups": "Copias de Seguridad",
|
||||
"install_backup": "Instalar",
|
||||
"delete_backup": "Eliminar",
|
||||
"create_backup": "Nueva Copia de Seguridad",
|
||||
"last_backup_date": "Última copia de seguridad el {{date}}",
|
||||
"no_backup_preview": "No se encontraron datos de guardados para este juego",
|
||||
"restoring_backup": "Restaurando copia de seguridad ({{progress}} completado)…",
|
||||
"uploading_backup": "Subiendo copia de seguridad…",
|
||||
"no_backups": "No has creado ninguna copia de seguridad para este juego aún",
|
||||
"backup_uploaded": "Copia de seguridad subida",
|
||||
"backup_deleted": "Copia de seguridad eliminada",
|
||||
"backup_restored": "Copia de seguridad restaurada",
|
||||
"see_all_achievements": "Ver todos los logros",
|
||||
"sign_in_to_see_achievements": "Inicia sesión para ver los logros",
|
||||
"mapping_method_automatic": "Automático",
|
||||
"mapping_method_manual": "Manual",
|
||||
"mapping_method_label": "Método de mapeo",
|
||||
"files_automatically_mapped": "Archivos mapeados automáticamente",
|
||||
"no_backups_created": "Sin copias de seguridad creadas para este juego",
|
||||
"manage_files": "Gestionar archivos",
|
||||
"loading_save_preview": "Buscando datos de guardados de juegos…",
|
||||
"wine_prefix": "Prefijo de Wine",
|
||||
"wine_prefix_description": "El prefijo de Wine usado para ejecutar este juego",
|
||||
"no_download_option_info": "Sin información disponible",
|
||||
"backup_deletion_failed": "La eliminación de la copia de seguridad falló",
|
||||
"max_number_of_artifacts_reached": "Número máximo de copias de seguridad de este juego alcanzadas",
|
||||
"achievements_not_sync": "Tus logros no están sincronizados",
|
||||
"manage_files_description": "Gestiona los archivos que serán respaldados y restaurados",
|
||||
"select_folder": "Seleccionar carpeta",
|
||||
"backup_from": "Copia de seguridad de {{date}}",
|
||||
"custom_backup_location_set": "Se configuró la carpeta de copia de seguridad",
|
||||
"clear": "Limpiar",
|
||||
"no_directory_selected": "No se seleccionó un directorio"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Activar Hydra",
|
||||
@@ -161,7 +208,11 @@
|
||||
"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…"
|
||||
"checking_files": "Verificando archivos…",
|
||||
"seeding": "Seeding",
|
||||
"stop_seeding": "Detener seeding",
|
||||
"resume_seeding": "Continuar seeding",
|
||||
"options": "Gestionar"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Ruta de descarga",
|
||||
@@ -205,20 +256,22 @@
|
||||
"found_download_option_one": "Se encontró {{countFormatted}} opción de descarga",
|
||||
"found_download_option_other": "Se encontraron {{countFormatted}} opciones de descarga",
|
||||
"import": "Importar",
|
||||
"blocked_users": "Usuarios bloqueados",
|
||||
"download_options_one": "",
|
||||
"download_options_other": "",
|
||||
"download_options_zero": "",
|
||||
"friends_only": "solo amigos",
|
||||
"must_be_valid_url": "La fuente debe ser una URL válida.",
|
||||
"privacy": "Privacidad",
|
||||
"public": "Público",
|
||||
"private": "Privado",
|
||||
"friends_only": "Solo amigos",
|
||||
"privacy": "Privacidad",
|
||||
"profile_visibility": "Visibilidad del perfil",
|
||||
"profile_visibility_description": "Elige quién puede ver tu perfil y biblioteca",
|
||||
"public": "Público",
|
||||
"required_field": "Este campo es obligatorio",
|
||||
"source_already_exists": "Esta fuente ya ha sido agregada.",
|
||||
"user_unblocked": "El usuario ha sido desbloqueado"
|
||||
"must_be_valid_url": "La fuente debe ser una URL válida.",
|
||||
"blocked_users": "Usuarios bloqueados",
|
||||
"user_unblocked": "El usuario ha sido desbloqueado",
|
||||
"enable_achievement_notifications": "Cuando un logro se desbloquea",
|
||||
"launch_minimized": "Iniciar Hydra minimizado",
|
||||
"disable_nsfw_alert": "Desactivar alerta NSFW",
|
||||
"seed_after_download_complete": "Realizar seeding después de que se completa la descarga",
|
||||
"show_hidden_achievement_description": "Ocultar descripción de logros ocultos antes de desbloquearlos"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Descarga completada",
|
||||
@@ -227,7 +280,9 @@
|
||||
"repack_count_one": "{{count}} repack ha sido añadido",
|
||||
"repack_count_other": "{{count}} repacks añadidos",
|
||||
"new_update_available": "Version {{version}} disponible",
|
||||
"restart_to_install_update": "Reinicia Hydra para instalar la actualización"
|
||||
"restart_to_install_update": "Reinicia Hydra para instalar la actualización",
|
||||
"notification_achievement_unlocked_title": "Logro desbloqueado de {{game}}",
|
||||
"notification_achievement_unlocked_body": "{{achievement}} y otros {{count}} fueron desbloqueados"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Abrir Hydra",
|
||||
@@ -238,7 +293,7 @@
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programas no instalados",
|
||||
"description": "Los ejecutables de Wine o Lutris no se encontraron en su sistema",
|
||||
"description": "Los ejecutables de Wine o Lutris no se encontraron en tu sistema",
|
||||
"instructions": "Comprueba como instalar de forma correcta uno de los dos en tu distro de Linux para ejecutar el juego con normalidad"
|
||||
},
|
||||
"modal": {
|
||||
@@ -253,7 +308,7 @@
|
||||
"last_time_played": "Última vez jugado: {{period}}",
|
||||
"activity": "Actividad reciente",
|
||||
"library": "Biblioteca",
|
||||
"total_play_time": "Total de tiempo jugado: {{amount}}",
|
||||
"total_play_time": "Has jugado",
|
||||
"no_recent_activity_title": "Que raro, no hay nada por acá...",
|
||||
"no_recent_activity_description": "No has jugado ningún juego recientemente, ¡vamos a cambiar eso ahora!",
|
||||
"display_name": "Nombre en pantalla",
|
||||
@@ -266,7 +321,7 @@
|
||||
"cancel": "Cancelar",
|
||||
"successfully_signed_out": "Sesión cerrada exitosamente",
|
||||
"sign_out": "Cerrar sesión",
|
||||
"playing_for": "Jugando por {{amount}}",
|
||||
"playing_for": "Llevas jugando {{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?",
|
||||
"add_friends": "Añadir amigos",
|
||||
"add": "Añadir",
|
||||
@@ -296,23 +351,64 @@
|
||||
"no_blocked_users": "No has bloqueado a ningún usuario",
|
||||
"friend_code_copied": "Código de amigo copiado",
|
||||
"undo_friendship_modal_text": "Esto deshará tu amistad con {{displayName}}",
|
||||
"displayname_max_length": "El nombre para mostrar debe tener como máximo 50 caracteres",
|
||||
"displayname_min_length": "El nombre para mostrar debe tener al menos 3 caracteres",
|
||||
"locked_profile": "Este perfil es privado.",
|
||||
"privacy_hint": "Para ajustar quién puede ver esto, ve a <0>Configuración</0>.",
|
||||
"profile_locked": "",
|
||||
"profile_reported": "Perfil reportado",
|
||||
"report": "Informe",
|
||||
"locked_profile": "Este perfil es privado",
|
||||
"image_process_failure": "Error al procesar la imagen",
|
||||
"required_field": "Este campo es obligatorio",
|
||||
"displayname_min_length": "El nombre a mostrar debe tener al menos 3 caracteres",
|
||||
"displayname_max_length": "El nombre a mostrar debe tener como máximo 50 caracteres",
|
||||
"report_profile": "Reportar este perfil",
|
||||
"report_reason": "¿Cual es el motivo del reporte?",
|
||||
"report_description": "Información adicional",
|
||||
"report_description_placeholder": "Información adicional",
|
||||
"report_profile": "Reportar este perfil",
|
||||
"report_reason": "¿Por qué estás denunciando este perfil?",
|
||||
"report_reason_hate": "Discurso de odio",
|
||||
"report_reason_other": "Otro",
|
||||
"report": "Reportar",
|
||||
"report_reason_hate": "Discursos de odio",
|
||||
"report_reason_sexual_content": "Contenido sexual",
|
||||
"report_reason_spam": "Correo basura",
|
||||
"report_reason_violence": "Violencia",
|
||||
"required_field": "Este campo es obligatorio",
|
||||
"image_process_failure": "Error al procesar la imagen"
|
||||
"report_reason_spam": "Spam / Contenido no deseado",
|
||||
"report_reason_other": "Otro",
|
||||
"profile_reported": "Perfil reportado",
|
||||
"your_friend_code": "Tu código de amigo:",
|
||||
"upload_banner": "Subir un banner",
|
||||
"uploading_banner": "Subiendo banner…",
|
||||
"background_image_updated": "Imagen de fondo actualizada",
|
||||
"playing": "Jugando {{game}}",
|
||||
"achievements": "logros",
|
||||
"achievements_unlocked": "Logros desbloqueados",
|
||||
"earned_points": "Puntos Obtenidos",
|
||||
"show_achievements_on_profile": "Mostrar tus logros en tu perfil",
|
||||
"show_points_on_profile": "Mostrar tus puntos obtenidos en tu perfil",
|
||||
"games": "Juegos",
|
||||
"ranking_updated_weekly": "El Ranking se actualiza semanalmente",
|
||||
"stats": "Estadísticas",
|
||||
"top_percentile": "Top {{percentile}}%"
|
||||
},
|
||||
"achievement": {
|
||||
"achievement_unlocked": "Logro desbloqueado",
|
||||
"user_achievements": "Logros de {{displayName}}",
|
||||
"your_achievements": "Tus Logros",
|
||||
"unlocked_at": "Desbloqueado el: {{date}}",
|
||||
"subscription_needed": "Se necesita una suscripción a Hydra Cloud necesita para ver este contenido",
|
||||
"new_achievements_unlocked": "Desbloqueados {{achievementCount}} nuevos logros de {{gameCount}} juegos",
|
||||
"achievement_progress": "{{unlockedCount}}/{{totalCount}} logros",
|
||||
"achievements_unlocked_for_game": "Se han desbloqueado {{achievementCount}} nuevos logros de {{gameTitle}}",
|
||||
"hidden_achievement_tooltip": "Este es un logro oculto",
|
||||
"achievement_earn_points": "Obtén {{points}} puntos con este logro",
|
||||
"earned_points": "Puntos obtenidos:",
|
||||
"available_points": "Puntos disponibles:",
|
||||
"how_to_earn_achievements_points": "¿Cómo obtener puntos de logros?"
|
||||
},
|
||||
"hydra_cloud": {
|
||||
"subscription_tour_title": "Suscripción Hydra Cloud",
|
||||
"subscribe_now": "Suscribirse ahora",
|
||||
"cloud_saving": "Guardado en la nube",
|
||||
"cloud_achievements": "Guarda tus logros en la nube",
|
||||
"animated_profile_picture": "Fotos de perfil animadas",
|
||||
"premium_support": "Soporte Premium",
|
||||
"show_and_compare_achievements": "Muestra y compara tus logros con otros usuarios",
|
||||
"animated_profile_banner": "Fondo de perfil animado",
|
||||
"hydra_cloud": "Hydra Cloud",
|
||||
"hydra_cloud_feature_found": "¡Has descubierto una característica de Hydra Cloud!",
|
||||
"learn_more": "Aprender más"
|
||||
}
|
||||
}
|
||||
|
||||
376
src/locales/et/translation.json
Normal file
@@ -0,0 +1,376 @@
|
||||
{
|
||||
"language_name": "Eesti",
|
||||
"app": {
|
||||
"successfully_signed_in": "Edukalt sisse logitud"
|
||||
},
|
||||
"home": {
|
||||
"featured": "Esile toodud",
|
||||
"surprise_me": "Üllata mind",
|
||||
"no_results": "Tulemusi ei leitud",
|
||||
"start_typing": "Alusta otsimiseks kirjutamist...",
|
||||
"hot": "Praegu kuum",
|
||||
"weekly": "📅 Nädala top mängud",
|
||||
"achievements": "🏆 Mängud, mida läbida"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Kataloog",
|
||||
"downloads": "Allalaadimised",
|
||||
"settings": "Seaded",
|
||||
"my_library": "Minu kogu",
|
||||
"downloading_metadata": "{{title}} (Metaandmete allalaadimine…)",
|
||||
"paused": "{{title}} (Peatatud)",
|
||||
"downloading": "{{title}} ({{percentage}} - Allalaadimine…)",
|
||||
"filter": "Filtreeri kogu",
|
||||
"home": "Avaleht",
|
||||
"queued": "{{title}} (Järjekorras)",
|
||||
"game_has_no_executable": "Mängul pole käivitusfaili valitud",
|
||||
"sign_in": "Logi sisse",
|
||||
"friends": "Sõbrad"
|
||||
},
|
||||
"header": {
|
||||
"search": "Otsi mänge",
|
||||
"home": "Avaleht",
|
||||
"catalogue": "Kataloog",
|
||||
"downloads": "Allalaadimised",
|
||||
"search_results": "Otsingutulemused",
|
||||
"settings": "Seaded",
|
||||
"version_available_install": "Versioon {{version}} on saadaval. Klõpsa siia taaskäivitamiseks ja installimiseks.",
|
||||
"version_available_download": "Versioon {{version}} on saadaval. Klõpsa siia allalaadimiseks."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Allalaadimisi pole pooleli",
|
||||
"downloading_metadata": "{{title}} metaandmete allalaadimine…",
|
||||
"downloading": "{{title}} allalaadimine… ({{percentage}} valmis) - Lõpp {{eta}} - {{speed}}",
|
||||
"calculating_eta": "{{title}} allalaadimine… ({{percentage}} valmis) - Järelejäänud aja arvutamine…",
|
||||
"checking_files": "{{title}} failide kontrollimine… ({{percentage}} valmis)"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Järgmine leht",
|
||||
"previous_page": "Eelmine leht"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Ava allalaadimise valikud",
|
||||
"download_options_zero": "Allalaadimise valikuid pole",
|
||||
"download_options_one": "{{count}} allalaadimise valik",
|
||||
"download_options_other": "{{count}} allalaadimise valikut",
|
||||
"updated_at": "Uuendatud {{updated_at}}",
|
||||
"install": "Installi",
|
||||
"resume": "Jätka",
|
||||
"pause": "Peata",
|
||||
"cancel": "Tühista",
|
||||
"remove": "Eemalda",
|
||||
"space_left_on_disk": "{{space}} kettaruumi järel",
|
||||
"eta": "Lõpp {{eta}}",
|
||||
"calculating_eta": "Järelejäänud aja arvutamine…",
|
||||
"downloading_metadata": "Metaandmete allalaadimine…",
|
||||
"filter": "Filtreeri repacke",
|
||||
"requirements": "Süsteeminõuded",
|
||||
"minimum": "Miinimum",
|
||||
"recommended": "Soovitatav",
|
||||
"paused": "Peatatud",
|
||||
"release_date": "Välja antud {{date}}",
|
||||
"publisher": "Avaldaja {{publisher}}",
|
||||
"hours": "tundi",
|
||||
"minutes": "minutit",
|
||||
"amount_hours": "{{amount}} tundi",
|
||||
"amount_minutes": "{{amount}} minutit",
|
||||
"accuracy": "{{accuracy}}% täpsus",
|
||||
"add_to_library": "Lisa kogusse",
|
||||
"remove_from_library": "Eemalda kogust",
|
||||
"no_downloads": "Allalaadimisi pole saadaval",
|
||||
"play_time": "Mängitud {{amount}}",
|
||||
"last_time_played": "Viimati mängitud {{period}}",
|
||||
"not_played_yet": "Sa pole veel {{title}} mänginud",
|
||||
"next_suggestion": "Järgmine soovitus",
|
||||
"play": "Mängi",
|
||||
"deleting": "Installeri kustutamine…",
|
||||
"close": "Sulge",
|
||||
"playing_now": "Mängib praegu",
|
||||
"change": "Muuda",
|
||||
"repacks_modal_description": "Vali repack, mida soovid alla laadida",
|
||||
"select_folder_hint": "Vaikimisi kausta muutmiseks mine <0>Seadetesse</0>",
|
||||
"download_now": "Laadi alla kohe",
|
||||
"no_shop_details": "Poe andmeid ei õnnestunud laadida.",
|
||||
"download_options": "Allalaadimise valikud",
|
||||
"download_path": "Allalaadimise tee",
|
||||
"previous_screenshot": "Eelmine kuvatõmmis",
|
||||
"next_screenshot": "Järgmine kuvatõmmis",
|
||||
"screenshot": "Kuvatõmmis {{number}}",
|
||||
"open_screenshot": "Ava kuvatõmmis {{number}}",
|
||||
"download_settings": "Allalaadimise seaded",
|
||||
"downloader": "Allalaadija",
|
||||
"select_executable": "Vali",
|
||||
"no_executable_selected": "Käivitusfaili pole valitud",
|
||||
"open_folder": "Ava kaust",
|
||||
"open_download_location": "Vaata allalaaditud faile",
|
||||
"create_shortcut": "Loo töölaua otsetee",
|
||||
"remove_files": "Eemalda failid",
|
||||
"remove_from_library_title": "Oled sa kindel?",
|
||||
"remove_from_library_description": "See eemaldab {{game}} sinu kogust",
|
||||
"options": "Valikud",
|
||||
"executable_section_title": "Käivitusfail",
|
||||
"executable_section_description": "Faili tee, mida käivitatakse \"Mängi\" nupule vajutades",
|
||||
"downloads_secion_title": "Allalaadimised",
|
||||
"downloads_section_description": "Vaata uuendusi või selle mängu teisi versioone",
|
||||
"danger_zone_section_title": "Ohutsoon",
|
||||
"danger_zone_section_description": "Eemalda see mäng oma kogust või Hydra poolt allalaaditud failid",
|
||||
"download_in_progress": "Allalaadimine käimas",
|
||||
"download_paused": "Allalaadimine peatatud",
|
||||
"last_downloaded_option": "Viimane allalaaditud variant",
|
||||
"create_shortcut_success": "Otsetee edukalt loodud",
|
||||
"create_shortcut_error": "Viga otsetee loomisel",
|
||||
"nsfw_content_title": "See mäng sisaldab sobimatut sisu",
|
||||
"nsfw_content_description": "{{title}} sisaldab sisu, mis ei pruugi sobida kõigile vanusegruppidele. Kas soovid kindlasti jätkata?",
|
||||
"allow_nsfw_content": "Jätka",
|
||||
"refuse_nsfw_content": "Mine tagasi",
|
||||
"stats": "Statistika",
|
||||
"download_count": "Allalaadimised",
|
||||
"player_count": "Aktiivsed mängijad",
|
||||
"download_error": "See allalaadimise valik pole saadaval",
|
||||
"download": "Laadi alla",
|
||||
"executable_path_in_use": "Käivitusfail on juba kasutusel mängus \"{{game}}\"",
|
||||
"warning": "Hoiatus:",
|
||||
"hydra_needs_to_remain_open": "selle allalaadimise jaoks peab Hydra jääma avatuks kuni lõpuni. Kui Hydra sulgub enne lõppu, kaotad oma progressi.",
|
||||
"achievements": "Saavutused",
|
||||
"achievements_count": "Saavutused {{unlockedCount}}/{{achievementsCount}}",
|
||||
"cloud_save": "Pilvesalvestus",
|
||||
"cloud_save_description": "Salvesta oma progress pilve ja jätka mängimist mistahes seadmes",
|
||||
"backups": "Varundused",
|
||||
"install_backup": "Installi",
|
||||
"delete_backup": "Kustuta",
|
||||
"create_backup": "Uus varundus",
|
||||
"last_backup_date": "Viimane varundus {{date}}",
|
||||
"no_backup_preview": "Selle mängu jaoks ei leitud salvestusi",
|
||||
"restoring_backup": "Varunduse taastamine ({{progress}} valmis)…",
|
||||
"uploading_backup": "Varunduse üleslaadimine…",
|
||||
"no_backups": "Sa pole veel selle mängu jaoks varundusi loonud",
|
||||
"backup_uploaded": "Varundus üles laaditud",
|
||||
"backup_deleted": "Varundus kustutatud",
|
||||
"backup_restored": "Varundus taastatud",
|
||||
"see_all_achievements": "Vaata kõiki saavutusi",
|
||||
"sign_in_to_see_achievements": "Logi sisse, et näha saavutusi",
|
||||
"mapping_method_automatic": "Automaatne",
|
||||
"mapping_method_manual": "Käsitsi",
|
||||
"mapping_method_label": "Kaardistamise meetod",
|
||||
"files_automatically_mapped": "Failid automaatselt kaardistatud",
|
||||
"no_backups_created": "Selle mängu jaoks pole varundusi loodud",
|
||||
"manage_files": "Halda faile",
|
||||
"loading_save_preview": "Salvestuste otsimine…",
|
||||
"wine_prefix": "Wine Prefix",
|
||||
"wine_prefix_description": "Wine prefix, mida kasutatakse selle mängu käivitamiseks",
|
||||
"no_download_option_info": "Info pole saadaval",
|
||||
"backup_deletion_failed": "Varunduse kustutamine ebaõnnestus",
|
||||
"max_number_of_artifacts_reached": "Selle mängu varunduste maksimaalne arv on saavutatud",
|
||||
"achievements_not_sync": "Sinu saavutused pole sünkroniseeritud",
|
||||
"manage_files_description": "Hallake, millised failid varundatakse ja taastatakse",
|
||||
"select_folder": "Vali kaust",
|
||||
"backup_from": "Varundamine kuupäevast {{date}}",
|
||||
"custom_backup_location_set": "Kohandatud varundamise asukoht määratud"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Aktiveeri Hydra",
|
||||
"installation_id": "Installatsiooni ID:",
|
||||
"enter_activation_code": "Sisesta oma aktiveerimiskood",
|
||||
"message": "Kui sa ei tea, kust seda küsida, siis sa ei peaks seda omama.",
|
||||
"activate": "Aktiveeri",
|
||||
"loading": "Laadimine…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Jätka",
|
||||
"pause": "Peata",
|
||||
"eta": "Lõpp {{eta}}",
|
||||
"paused": "Peatatud",
|
||||
"verifying": "Kontrollimine…",
|
||||
"completed": "Lõpetatud",
|
||||
"removed": "Pole alla laaditud",
|
||||
"cancel": "Tühista",
|
||||
"filter": "Filtreeri allalaaditud mänge",
|
||||
"remove": "Eemalda",
|
||||
"downloading_metadata": "Metaandmete allalaadimine…",
|
||||
"deleting": "Installeri kustutamine…",
|
||||
"delete": "Eemalda installer",
|
||||
"delete_modal_title": "Oled sa kindel?",
|
||||
"delete_modal_description": "See eemaldab kõik installifailid sinu arvutist",
|
||||
"install": "Installi",
|
||||
"download_in_progress": "Töös",
|
||||
"queued_downloads": "Järjekorras allalaadimised",
|
||||
"downloads_completed": "Lõpetatud",
|
||||
"queued": "Järjekorras",
|
||||
"no_downloads_title": "Nii tühi",
|
||||
"no_downloads_description": "Sa pole veel Hydraga midagi alla laadinud, aga pole kunagi hilja alustada.",
|
||||
"checking_files": "Failide kontrollimine…"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Allalaadimiste tee",
|
||||
"change": "Uuenda",
|
||||
"notifications": "Teavitused",
|
||||
"enable_download_notifications": "Kui allalaadimine on lõpetatud",
|
||||
"enable_repack_list_notifications": "Kui uus repack on lisatud",
|
||||
"real_debrid_api_token_label": "Real-Debrid API võti",
|
||||
"quit_app_instead_hiding": "Ära peida Hydrat sulgemisel",
|
||||
"launch_with_system": "Käivita Hydra süsteemi käivitamisel",
|
||||
"general": "Üldine",
|
||||
"behavior": "Käitumine",
|
||||
"download_sources": "Allalaadimise allikad",
|
||||
"language": "Keel",
|
||||
"real_debrid_api_token": "API Võti",
|
||||
"enable_real_debrid": "Luba Real-Debrid",
|
||||
"real_debrid_description": "Real-Debrid on piiranguteta allalaadija, mis võimaldab sul faile alla laadida koheselt ja sinu internetiühenduse parima kiirusega.",
|
||||
"real_debrid_invalid_token": "Vigane API võti",
|
||||
"real_debrid_api_token_hint": "Sa saad oma API võtme <0>siit</0>",
|
||||
"real_debrid_free_account_error": "Konto \"{{username}}\" on tasuta konto. Palun telli Real-Debrid",
|
||||
"real_debrid_linked_message": "Konto \"{{username}}\" ühendatud",
|
||||
"save_changes": "Salvesta muudatused",
|
||||
"changes_saved": "Muudatused edukalt salvestatud",
|
||||
"download_sources_description": "Hydra laeb allalaadimise lingid nendest allikatest. Allika URL peab olema otsene link .json failile, mis sisaldab allalaadimise linke.",
|
||||
"validate_download_source": "Valideeri",
|
||||
"remove_download_source": "Eemalda",
|
||||
"add_download_source": "Lisa allikas",
|
||||
"download_count_zero": "Allalaadimise valikuid pole",
|
||||
"download_count_one": "{{countFormatted}} allalaadimise valik",
|
||||
"download_count_other": "{{countFormatted}} allalaadimise valikut",
|
||||
"download_source_url": "Allalaadimise allika URL",
|
||||
"add_download_source_description": "Sisesta URL, mis sisaldab .json faili",
|
||||
"download_source_up_to_date": "Ajakohane",
|
||||
"download_source_errored": "Vigane",
|
||||
"sync_download_sources": "Sünkroniseeri allikad",
|
||||
"removed_download_source": "Allalaadimise allikas eemaldatud",
|
||||
"added_download_source": "Allalaadimise allikas lisatud",
|
||||
"download_sources_synced": "Kõik allalaadimise allikad on sünkroniseeritud",
|
||||
"insert_valid_json_url": "Sisesta kehtiv JSON url",
|
||||
"found_download_option_zero": "Allalaadimise valikuid ei leitud",
|
||||
"found_download_option_one": "Leitud {{countFormatted}} allalaadimise valik",
|
||||
"found_download_option_other": "Leitud {{countFormatted}} allalaadimise valikut",
|
||||
"import": "Impordi",
|
||||
"public": "Avalik",
|
||||
"private": "Privaatne",
|
||||
"friends_only": "Ainult sõpradele",
|
||||
"privacy": "Privaatsus",
|
||||
"profile_visibility": "Profiili nähtavus",
|
||||
"profile_visibility_description": "Vali, kes saavad näha sinu profiili ja kogu",
|
||||
"required_field": "See väli on kohustuslik",
|
||||
"source_already_exists": "See allikas on juba lisatud",
|
||||
"must_be_valid_url": "Allikas peab olema kehtiv URL",
|
||||
"blocked_users": "Blokeeritud kasutajad",
|
||||
"user_unblocked": "Kasutaja blokeering on eemaldatud",
|
||||
"enable_achievement_notifications": "Kui saavutus avatakse"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Allalaadimine lõpetatud",
|
||||
"game_ready_to_install": "{{title}} on valmis installimiseks",
|
||||
"repack_list_updated": "Repackide nimekiri uuendatud",
|
||||
"repack_count_one": "{{count}} repack lisatud",
|
||||
"repack_count_other": "{{count}} repacki lisatud",
|
||||
"new_update_available": "Versioon {{version}} saadaval",
|
||||
"restart_to_install_update": "Taaskäivita Hydra uuenduse installimiseks",
|
||||
"notification_achievement_unlocked_title": "Saavutus avatud mängus {{game}}",
|
||||
"notification_achievement_unlocked_body": "{{achievement}} ja veel {{count}} avati"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Ava Hydra",
|
||||
"quit": "Välju"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Allalaadimisi pole saadaval"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programmid pole installitud",
|
||||
"description": "Wine või Lutrise käivitusfaile ei leitud sinu süsteemist",
|
||||
"instructions": "Kontrolli õiget viisi nende installimiseks oma Linuxi distrol, et mäng saaks normaalselt töötada"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Sulgemise nupp"
|
||||
},
|
||||
"forms": {
|
||||
"toggle_password_visibility": "Lülita parooli nähtavust"
|
||||
},
|
||||
"user_profile": {
|
||||
"amount_hours": "{{amount}} tundi",
|
||||
"amount_minutes": "{{amount}} minutit",
|
||||
"last_time_played": "Viimati mängitud {{period}}",
|
||||
"activity": "Hiljutine aktiivsus",
|
||||
"library": "Kogu",
|
||||
"total_play_time": "Kogu mängitud aeg",
|
||||
"no_recent_activity_title": "Hmmm… siin pole midagi",
|
||||
"no_recent_activity_description": "Sa pole hiljuti ühtegi mängu mänginud. On aeg seda muuta!",
|
||||
"display_name": "Kuvatav nimi",
|
||||
"saving": "Salvestamine",
|
||||
"save": "Salvesta",
|
||||
"edit_profile": "Muuda profiili",
|
||||
"saved_successfully": "Edukalt salvestatud",
|
||||
"try_again": "Palun proovi uuesti",
|
||||
"sign_out_modal_title": "Oled sa kindel?",
|
||||
"cancel": "Tühista",
|
||||
"successfully_signed_out": "Edukalt välja logitud",
|
||||
"sign_out": "Logi välja",
|
||||
"playing_for": "Mängib {{amount}}",
|
||||
"sign_out_modal_text": "Sinu kogu on seotud sinu praeguse kontoga. Välja logides pole sinu kogu enam nähtav ja edasist progressi ei salvestata. Jätkata väljalogimisega?",
|
||||
"add_friends": "Lisa sõpru",
|
||||
"add": "Lisa",
|
||||
"friend_code": "Sõbrakood",
|
||||
"see_profile": "Vaata profiili",
|
||||
"sending": "Saatmine",
|
||||
"friend_request_sent": "Sõbrakutse saadetud",
|
||||
"friends": "Sõbrad",
|
||||
"friends_list": "Sõprade nimekiri",
|
||||
"user_not_found": "Kasutajat ei leitud",
|
||||
"block_user": "Blokeeri kasutaja",
|
||||
"add_friend": "Lisa sõbraks",
|
||||
"request_sent": "Kutse saadetud",
|
||||
"request_received": "Kutse saadud",
|
||||
"accept_request": "Võta kutse vastu",
|
||||
"ignore_request": "Ignoreeri kutset",
|
||||
"cancel_request": "Tühista kutse",
|
||||
"undo_friendship": "Tühista sõprus",
|
||||
"request_accepted": "Kutse vastu võetud",
|
||||
"user_blocked_successfully": "Kasutaja edukalt blokeeritud",
|
||||
"user_block_modal_text": "See blokeerib kasutaja {{displayName}}",
|
||||
"blocked_users": "Blokeeritud kasutajad",
|
||||
"unblock": "Eemalda blokeering",
|
||||
"no_friends_added": "Sul pole veel lisatud sõpru",
|
||||
"pending": "Ootel",
|
||||
"no_pending_invites": "Sul pole ootel kutseid",
|
||||
"no_blocked_users": "Sul pole blokeeritud kasutajaid",
|
||||
"friend_code_copied": "Sõbrakood kopeeritud",
|
||||
"undo_friendship_modal_text": "See tühistab sinu sõpruse kasutajaga {{displayName}}",
|
||||
"privacy_hint": "Et muuta, kes seda näevad, mine <0>Seadetesse</0>",
|
||||
"locked_profile": "See profiil on privaatne",
|
||||
"image_process_failure": "Viga pildi töötlemisel",
|
||||
"required_field": "See väli on kohustuslik",
|
||||
"displayname_min_length": "Kuvatav nimi peab olema vähemalt 3 tähemärki pikk",
|
||||
"displayname_max_length": "Kuvatav nimi võib olla maksimaalselt 50 tähemärki pikk",
|
||||
"report_profile": "Teata sellest profiilist",
|
||||
"report_reason": "Miks sa sellest profiilist teatad?",
|
||||
"report_description": "Lisainfo",
|
||||
"report_description_placeholder": "Lisainfo",
|
||||
"report": "Teata",
|
||||
"report_reason_hate": "Vaenukõne",
|
||||
"report_reason_sexual_content": "Seksuaalne sisu",
|
||||
"report_reason_violence": "Vägivald",
|
||||
"report_reason_spam": "Rämpspost",
|
||||
"report_reason_other": "Muu",
|
||||
"profile_reported": "Profiilist teatatud",
|
||||
"your_friend_code": "Sinu sõbrakood:",
|
||||
"upload_banner": "Lae üles bänner",
|
||||
"uploading_banner": "Bänneri üleslaadimine…",
|
||||
"background_image_updated": "Bänner uuendatud"
|
||||
},
|
||||
"achievement": {
|
||||
"achievement_unlocked": "Saavutus avatud",
|
||||
"user_achievements": "{{displayName}} saavutused",
|
||||
"your_achievements": "Sinu saavutused",
|
||||
"unlocked_at": "Avatud: {{date}}",
|
||||
"subscription_needed": "Selle sisu nägemiseks on vaja Hydra Cloud tellimust",
|
||||
"new_achievements_unlocked": "Avatud {{achievementCount}} uut saavutust {{gameCount}} mängust"
|
||||
},
|
||||
"hydra_cloud": {
|
||||
"subscription_tour_title": "Hydra Cloud Tellimus",
|
||||
"subscribe_now": "Telli kohe",
|
||||
"cloud_saving": "Pilvesalvestus",
|
||||
"cloud_achievements": "Salvesta oma saavutused pilve",
|
||||
"animated_profile_picture": "Animeeritud profiilipildid",
|
||||
"premium_support": "Premium tugi",
|
||||
"show_and_compare_achievements": "Näita ja võrdle oma saavutusi teiste kasutajatega",
|
||||
"animated_profile_banner": "Animeeritud profiilibänner"
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,6 @@
|
||||
"language_name": "فارسی",
|
||||
"home": {
|
||||
"featured": "پیشنهادی",
|
||||
"trending": "پرطرفدار",
|
||||
"surprise_me": "سوپرایزم کن",
|
||||
"no_results": "اتمامای پیدا نشد"
|
||||
},
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
"language_name": "Français",
|
||||
"home": {
|
||||
"featured": "En vedette",
|
||||
"trending": "Tendance",
|
||||
"surprise_me": "Surprenez-moi",
|
||||
"no_results": "Aucun résultat trouvé"
|
||||
},
|
||||
@@ -58,14 +57,14 @@
|
||||
"remove_from_library": "Supprimer de la bibliothèque",
|
||||
"no_downloads": "Aucun téléchargement disponible",
|
||||
"next_suggestion": "Suggestion suivante",
|
||||
"play_time": "Joué pour {{montant}}",
|
||||
"play_time": "Joué pour {{amount}}",
|
||||
"install": "Installer",
|
||||
"play": "Jouer",
|
||||
"not_played_yet": "Vous n'avez pas encore joué à {{title}}",
|
||||
"close": "Fermer",
|
||||
"deleting": "Suppression du programme d'installation…",
|
||||
"playing_now": "Jeu en cours",
|
||||
"last_time_played": "Dernièrement joué {{période}}"
|
||||
"last_time_played": "Dernièrement joué {{period}}"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Activer Hydra",
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
"language_name": "Magyar",
|
||||
"home": {
|
||||
"featured": "Featured",
|
||||
"trending": "Népszerű",
|
||||
"surprise_me": "Lepj meg",
|
||||
"no_results": "Nem található"
|
||||
},
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
},
|
||||
"home": {
|
||||
"featured": "Unggulan",
|
||||
"trending": "Sedang Tren",
|
||||
"surprise_me": "Kejutkan saya",
|
||||
"no_results": "Tidak ada hasil ditemukan"
|
||||
},
|
||||
@@ -178,9 +177,6 @@
|
||||
"download_count_zero": "Tidak ada unduhan dalam daftar",
|
||||
"download_count_one": "{{countFormatted}} unduhan dalam daftar",
|
||||
"download_count_other": "{{countFormatted}} unduhan dalam daftar",
|
||||
"download_options_zero": "Tidak ada unduhan tersedia",
|
||||
"download_options_one": "{{countFormatted}} unduhan tersedia",
|
||||
"download_options_other": "{{countFormatted}} unduhan tersedia",
|
||||
"download_source_url": "URL sumber unduhan",
|
||||
"add_download_source_description": "Masukkan URL yang berisi file .json",
|
||||
"download_source_up_to_date": "Terkini",
|
||||
@@ -228,7 +224,7 @@
|
||||
"last_time_played": "Terakhir dimainkan {{period}}",
|
||||
"activity": "Aktivitas terbaru",
|
||||
"library": "Perpustakaan",
|
||||
"total_play_time": "Total waktu bermain: {{amount}}",
|
||||
"total_play_time": "Total waktu bermain",
|
||||
"no_recent_activity_title": "Hmm… kosong di sini",
|
||||
"no_recent_activity_description": "Kamu belum main game baru-baru ini. Yuk, mulai main!",
|
||||
"display_name": "Nama tampilan",
|
||||
|
||||
@@ -22,6 +22,9 @@ import ro from "./ro/translation.json";
|
||||
import ca from "./ca/translation.json";
|
||||
import kk from "./kk/translation.json";
|
||||
import cs from "./cs/translation.json";
|
||||
import nb from "./nb/translation.json";
|
||||
import et from "./et/translation.json";
|
||||
import bg from "./bg/translation.json";
|
||||
|
||||
export default {
|
||||
"pt-BR": ptBR,
|
||||
@@ -46,6 +49,9 @@ export default {
|
||||
fa,
|
||||
ro,
|
||||
ca,
|
||||
bg,
|
||||
kk,
|
||||
cs,
|
||||
nb,
|
||||
et,
|
||||
};
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
"language_name": "Italiano",
|
||||
"home": {
|
||||
"featured": "In primo piano",
|
||||
"trending": "Di tendenza",
|
||||
"surprise_me": "Sorprendimi",
|
||||
"no_results": "Nessun risultato trovato"
|
||||
},
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
},
|
||||
"home": {
|
||||
"featured": "Ұсынылған",
|
||||
"trending": "Трендте",
|
||||
"surprise_me": "Таңқалдыр",
|
||||
"no_results": "Ештеңе табылмады"
|
||||
},
|
||||
@@ -176,9 +175,6 @@
|
||||
"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": "Жаңартылған",
|
||||
@@ -224,7 +220,7 @@
|
||||
"last_time_played": "Соңғы ойын {{period}}",
|
||||
"activity": "Соңғы әрекет",
|
||||
"library": "Кітапхана",
|
||||
"total_play_time": "Барлығы ойнаған: {{amount}}",
|
||||
"total_play_time": "Барлығы ойнаған",
|
||||
"no_recent_activity_title": "Хммм... Мұнда ештеңе жоқ",
|
||||
"no_recent_activity_description": "Сіз ұзақ уақыт бойы ештеңе ойнаған жоқсыз. Мұны өзгерту керек!",
|
||||
"display_name": "Көрсету аты",
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
"language_name": "한국어",
|
||||
"home": {
|
||||
"featured": "추천",
|
||||
"trending": "인기",
|
||||
"surprise_me": "무작위 추천",
|
||||
"no_results": "결과 없음"
|
||||
},
|
||||
|
||||
315
src/locales/nb/translation.json
Normal file
@@ -0,0 +1,315 @@
|
||||
{
|
||||
"language_name": "Norsk Bokmål",
|
||||
"app": {
|
||||
"successfully_signed_in": "Logget inn vellykket"
|
||||
},
|
||||
"home": {
|
||||
"featured": "Anbefalinger",
|
||||
"surprise_me": "Overrask meg",
|
||||
"no_results": "Ingen resultater fundet",
|
||||
"start_typing": "Begynn å skrive for å søke...",
|
||||
"hot": "Populært akkurat nå",
|
||||
"weekly": "📅 De mest populære spillene denne uken"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Katalog",
|
||||
"downloads": "Nedlastinger",
|
||||
"settings": "Innstillinger",
|
||||
"my_library": "Mitt bibliotek",
|
||||
"downloading_metadata": "{{title}} (Laster ned metadata…)",
|
||||
"paused": "{{title}} (Satt på pause)",
|
||||
"downloading": "{{title}} ({{percentage}} - Laster ned…)",
|
||||
"filter": "Filtrér bibliotek",
|
||||
"home": "Hjem",
|
||||
"queued": "{{title}} (I køen)",
|
||||
"game_has_no_executable": "Spillet har ikke noen kjørbar fil valgt",
|
||||
"sign_in": "Logge inn",
|
||||
"friends": "Venner"
|
||||
},
|
||||
"header": {
|
||||
"search": "Søk efter spill",
|
||||
"home": "Hjem",
|
||||
"catalogue": "Katalog",
|
||||
"downloads": "Nedlastinger",
|
||||
"search_results": "Søkeresultater",
|
||||
"settings": "Innstillinger",
|
||||
"version_available_install": "Versjon {{version}} tilgjengelig. Klikk her for å gjenstarte og installere.",
|
||||
"version_available_download": "Versjon {{version}} tilgjengelig. Klikk her for at laste ned."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Ingen nedlastinger pågår",
|
||||
"downloading_metadata": "Laster ned {{title}} metadata…",
|
||||
"downloading": "Laster ned {{title}}… ({{percentage}} ferdig) - Fullstendig nedlastet {{eta}} - {{speed}}",
|
||||
"calculating_eta": "Laster ned {{title}}… ({{percentage}} ferdig) - Regner ut resterende tid…",
|
||||
"checking_files": "Sjekker {{title}} filer… ({{percentage}} ferdig)"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Neste side",
|
||||
"previous_page": "Forrige side"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Åpne nedlastingsmuligheter",
|
||||
"download_options_zero": "Ingen nedlastingsmulighet",
|
||||
"download_options_one": "{{count}} nedlastingsmulighet",
|
||||
"download_options_other": "{{count}} nedlastingsmuligheter",
|
||||
"updated_at": "Oppdatert {{updated_at}}",
|
||||
"install": "Installere",
|
||||
"resume": "Fortsett",
|
||||
"pause": "Pause",
|
||||
"cancel": "Kansellere",
|
||||
"remove": "Fjern",
|
||||
"space_left_on_disk": "{{space}} tilbake på harddisken",
|
||||
"eta": "Konklusjon {{eta}}",
|
||||
"calculating_eta": "Utregner resterende tid…",
|
||||
"downloading_metadata": "Laster ned metadata…",
|
||||
"filter": "Filtrér gjennpakkinger",
|
||||
"requirements": "Systemkrav",
|
||||
"minimum": "Mindste",
|
||||
"recommended": "Anbefalet",
|
||||
"paused": "Satt på pause",
|
||||
"release_date": "Offentliggjort den {{date}}",
|
||||
"publisher": "Gitt ut av {{publisher}}",
|
||||
"hours": "timer",
|
||||
"minutes": "minutter",
|
||||
"amount_hours": "{{amount}} timer",
|
||||
"amount_minutes": "{{amount}} minutter",
|
||||
"accuracy": "{{accuracy}}% nøyaktighet",
|
||||
"add_to_library": "Tilføy til biblioteket",
|
||||
"remove_from_library": "Fjern fra biblioteket",
|
||||
"no_downloads": "Ingen nedlastinger tilgjengelig",
|
||||
"play_time": "Spilt i {{amount}}",
|
||||
"last_time_played": "Sist spilt {{period}}",
|
||||
"not_played_yet": "Du har ikke spilt {{title}} enda",
|
||||
"next_suggestion": "Neste forslag",
|
||||
"play": "Spil",
|
||||
"deleting": "Sletter installatør…",
|
||||
"close": "Lukk",
|
||||
"playing_now": "Spiller nå",
|
||||
"change": "Endre",
|
||||
"repacks_modal_description": "Velg den gjennpakking du vil laste ned",
|
||||
"select_folder_hint": "For å endre standard mappen, gå til <0>Innstillingene</0>",
|
||||
"download_now": "Last ned nå",
|
||||
"no_shop_details": "Kunne ikke modta butikksdetaljene.",
|
||||
"download_options": "Nedlastingsmuligheter",
|
||||
"download_path": "Nedlastingssti",
|
||||
"previous_screenshot": "Forrige skjermbilde",
|
||||
"next_screenshot": "Neste skjermbilde",
|
||||
"screenshot": "Skjermbilde {{number}}",
|
||||
"open_screenshot": "Åpen skjermbilde {{number}}",
|
||||
"download_settings": "Nedlastingsinnstillinger",
|
||||
"downloader": "Laster ned",
|
||||
"select_executable": "Velg",
|
||||
"no_executable_selected": "Ingen kjørbar fil valgt",
|
||||
"open_folder": "Åpne mappe",
|
||||
"open_download_location": "Se nedlastingede filer",
|
||||
"create_shortcut": "Opprett snarvei på skrivebordet",
|
||||
"remove_files": "Fjern filer",
|
||||
"remove_from_library_title": "Er du sikker?",
|
||||
"remove_from_library_description": "Dette vil fjerne {{game}} fra biblioteket ditt",
|
||||
"options": "Valgmuligheter",
|
||||
"executable_section_title": "Kjørbar fil",
|
||||
"executable_section_description": "Sti til filen som skal brukes når det trykkes på \"Spill\"",
|
||||
"downloads_secion_title": "Nedlastinger",
|
||||
"downloads_section_description": "Sjekk for oppdateringer eller andre versjoner af dette spillet",
|
||||
"danger_zone_section_title": "Faresonen",
|
||||
"danger_zone_section_description": "Fjern dette spillet fra biblioteket ditt eller filene som har blitt lastet ned av Hydra",
|
||||
"download_in_progress": "Nedlasting pågår",
|
||||
"download_paused": "Nedlasting satt på pause",
|
||||
"last_downloaded_option": "Siste nedlastingsmulighet",
|
||||
"create_shortcut_success": "Opprettelse av snarvei vellykket",
|
||||
"create_shortcut_error": "Feil under oprettelsen av snarvei",
|
||||
"nsfw_content_title": "Dette spillet inneholder upassende innhold",
|
||||
"nsfw_content_description": "{{title}} inneholder innhold som ikke passer til alle aldre. Er du sikker på at du vil fortsette?",
|
||||
"allow_nsfw_content": "Fortsett",
|
||||
"refuse_nsfw_content": "Gå tilbake",
|
||||
"stats": "Statistikk",
|
||||
"download_count": "Nedlastinger",
|
||||
"player_count": "Aktive spillere",
|
||||
"download_error": "Denne nedlastingsmulighet er ikke tilgjengelig",
|
||||
"download": "Last ned",
|
||||
"executable_path_in_use": "Kjørbar fil blir allerede brukt av \"{{game}}\"",
|
||||
"warning": "Advarsel:",
|
||||
"hydra_needs_to_remain_open": "Hydra skal forbli åpent for at denne nedlastingen kan gjennomføres. I tilfelle av at Hydra lukker før nedlastingen er ferdig, mister du fremskrittet ditt."
|
||||
},
|
||||
"activation": {
|
||||
"title": "Aktivér Hydra",
|
||||
"installation_id": "Installasjons ID:",
|
||||
"enter_activation_code": "Inntast aktiveringskoden din",
|
||||
"message": "Hvis du ikke vet hvor du skal spørre om dette, burde du ikke ha dette.",
|
||||
"activate": "Aktivér",
|
||||
"loading": "Innleser…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Fortsett",
|
||||
"pause": "Pause",
|
||||
"eta": "Konklusjon {{eta}}",
|
||||
"paused": "Satt på pause",
|
||||
"verifying": "Verifiserer…",
|
||||
"completed": "Ferdig",
|
||||
"removed": "Ikke lastet ned",
|
||||
"cancel": "Kansellér",
|
||||
"filter": "Filtrér nedlastede spill",
|
||||
"remove": "Fjern",
|
||||
"downloading_metadata": "Laster ned metadata…",
|
||||
"deleting": "Sletter installatør…",
|
||||
"delete": "Fjern installatør",
|
||||
"delete_modal_title": "Er du sikker?",
|
||||
"delete_modal_description": "Dette vil fjerne alle installasjonsfilene fra datamaskinen din",
|
||||
"install": "Installér",
|
||||
"download_in_progress": "Pågår",
|
||||
"queued_downloads": "Nedlastingskø",
|
||||
"downloads_completed": "Gjennomførte",
|
||||
"queued": "I kø",
|
||||
"no_downloads_title": "Ganske tomt",
|
||||
"no_downloads_description": "Du har ikke lastet ned noe med Hydra enda, men det er aldri for sent å begynne.",
|
||||
"checking_files": "Undersøker filer…"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Nedlastingssti",
|
||||
"change": "Oppdater",
|
||||
"notifications": "Notifikasjoner",
|
||||
"enable_download_notifications": "Når en nedlasting blir ferdig",
|
||||
"enable_repack_list_notifications": "Når en ny gjennpakking bliver lagt til",
|
||||
"real_debrid_api_token_label": "Real-Debrid API nøkkel",
|
||||
"quit_app_instead_hiding": "Avslut Hydra i stedet for å minimere til prosesslinjen",
|
||||
"launch_with_system": "Åpne Hydra ved oppstart av datamaskinen",
|
||||
"general": "Generelt",
|
||||
"behavior": "Oppførsel",
|
||||
"download_sources": "Nedlastingskilder",
|
||||
"language": "Språk",
|
||||
"real_debrid_api_token": "API nøkkel",
|
||||
"enable_real_debrid": "Slå på Real-Debrid",
|
||||
"real_debrid_description": "Real-Debrid er en ubegrenset nedlaster som gør det mulig for deg å laste ned filer med en gang og med den beste utnyttelsen av internethastigheten din.",
|
||||
"real_debrid_invalid_token": "Ugyldig API nøkkel",
|
||||
"real_debrid_api_token_hint": "Du kan få API nøkkelen din <0>her</0>",
|
||||
"real_debrid_free_account_error": "Brukeren \"{{username}}\" er en gratis bruker. Vennligst abboner på Real-Debrid",
|
||||
"real_debrid_linked_message": "Brukeren \"{{username}}\" er forbunnet",
|
||||
"save_changes": "Lagre endringer",
|
||||
"changes_saved": "Lagring av endringer vellykket",
|
||||
"download_sources_description": "Hydra vil hente nedlastingslenker fra disse kildene. Kilde URLen skal være en direkte lenke til en .json fil som inneholder nedlastingslenkene.",
|
||||
"validate_download_source": "Validér",
|
||||
"remove_download_source": "Fjern",
|
||||
"add_download_source": "Legg til kilde",
|
||||
"download_count_zero": "Ingen nedlastingsmuligheter",
|
||||
"download_count_one": "{{countFormatted}} nedlastingsmulighet",
|
||||
"download_count_other": "{{countFormatted}} nedlastingsmuligheter",
|
||||
"download_source_url": "Last ned kilde URL",
|
||||
"add_download_source_description": "Sett inn URLen som inneholder .json filen",
|
||||
"download_source_up_to_date": "Oppdatert",
|
||||
"download_source_errored": "Mislyktes",
|
||||
"sync_download_sources": "Synkroniser kilder",
|
||||
"removed_download_source": "Nedlastingskilde fjernet",
|
||||
"added_download_source": "La til Nedlastingskilde",
|
||||
"download_sources_synced": "Alle nedlastingskilder er synkroniserte",
|
||||
"insert_valid_json_url": "Innsett en gyldig JSON url",
|
||||
"found_download_option_zero": "Ingen nedlastingsmulighet funnet",
|
||||
"found_download_option_one": "Fant {{countFormatted}} nedlastingsmulighet",
|
||||
"found_download_option_other": "Fant {{countFormatted}} nedlastingsmuligheter",
|
||||
"import": "Importer",
|
||||
"public": "Offentlig",
|
||||
"private": "Privat",
|
||||
"friends_only": "Kun blant venner",
|
||||
"privacy": "Privatliv",
|
||||
"profile_visibility": "Synlighet av profil",
|
||||
"profile_visibility_description": "Velg hvem som kan se profilen din og biblioteket ditt",
|
||||
"required_field": "Dette feltet er påkrevet",
|
||||
"source_already_exists": "Denne kilden har allerede blitt lagt til",
|
||||
"must_be_valid_url": "Kilden må være en gyldig URL",
|
||||
"blocked_users": "Blokerte brukere",
|
||||
"user_unblocked": "Brukeren har blit avblokert"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Nedlasting ferdig",
|
||||
"game_ready_to_install": "{{title}} er klar til å bli installert",
|
||||
"repack_list_updated": "Gjennpakkingslisten er opdateret",
|
||||
"repack_count_one": "{{count}} gjennpakking lagt til",
|
||||
"repack_count_other": "{{count}} gjennpakkinger lagt til",
|
||||
"new_update_available": "Versjon {{version}} tilgjengelig",
|
||||
"restart_to_install_update": "Gjenstart Hydra for å installere oppdateringen"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Åpne Hydra",
|
||||
"quit": "Avslutt"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Ingen nedlastinger tilgjengelig"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programmer ikke installert",
|
||||
"description": "Wine eller Lutris kjørbar ble ikke funnet på systemet ditt",
|
||||
"instructions": "Sjekk den korrekte måten å installere noen av de, på Linux distributionen din, så spillet kan kjøre på vanlig måte"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Lukk knapp"
|
||||
},
|
||||
"forms": {
|
||||
"toggle_password_visibility": "Skift synlighet af passord"
|
||||
},
|
||||
"user_profile": {
|
||||
"amount_hours": "{{amount}} timer",
|
||||
"amount_minutes": "{{amount}} minutter",
|
||||
"last_time_played": "Sist spilt {{period}}",
|
||||
"activity": "Seneste aktivitet",
|
||||
"library": "Bibliotek",
|
||||
"total_play_time": "Samlet spilltid",
|
||||
"no_recent_activity_title": "Hmmm… ikke noe her",
|
||||
"no_recent_activity_description": "Du har ikke spilt noen spill for på det seneste. Det er det på tide at endre på!",
|
||||
"display_name": "Brukernavn",
|
||||
"saving": "Lagrer",
|
||||
"save": "Lagre",
|
||||
"edit_profile": "Rediger Profil",
|
||||
"saved_successfully": "Lagring vellykket",
|
||||
"try_again": "Vennligst, prøv igjen",
|
||||
"sign_out_modal_title": "Er du sikker?",
|
||||
"cancel": "Kansellér",
|
||||
"successfully_signed_out": "Utlogging vellykket",
|
||||
"sign_out": "Log ut",
|
||||
"playing_for": "Spiller i {{amount}}",
|
||||
"sign_out_modal_text": "Biblioteket ditt er sammenkobelt med den nåverende brukeren. Når du logger ut er biblioteket ditt ikke synlig lenger, og hvilken som helst form for fremskritt bliver ikke lagret. Vil du fortsette med å logge ut?",
|
||||
"add_friends": "Legg til venner",
|
||||
"add": "Legg til",
|
||||
"friend_code": "Vennekode",
|
||||
"see_profile": "Se profil",
|
||||
"sending": "Sender",
|
||||
"friend_request_sent": "Venneforespørsel sendt",
|
||||
"friends": "Venner",
|
||||
"friends_list": "Venneliste",
|
||||
"user_not_found": "Bruker ikke funnet",
|
||||
"block_user": "Blokkere bruker",
|
||||
"add_friend": "Legg til venn",
|
||||
"request_sent": "Forespørsel sendt",
|
||||
"request_received": "Forespørsel modtatt",
|
||||
"accept_request": "Akseptere forespørsel",
|
||||
"ignore_request": "Ignorere forespørsel",
|
||||
"cancel_request": "Kansellre forespørsel",
|
||||
"undo_friendship": "Angre venskab",
|
||||
"request_accepted": "Forespørsel akseptert",
|
||||
"user_blocked_successfully": "Blokkering av bruker vellykket",
|
||||
"user_block_modal_text": "Dette blokerer {{displayName}}",
|
||||
"blocked_users": "Blokerte brukere",
|
||||
"unblock": "Avblokere",
|
||||
"no_friends_added": "Du har fortsatt ikke lagt til noen venner",
|
||||
"pending": "Avventer",
|
||||
"no_pending_invites": "Du har ingen avventende invitasjoner",
|
||||
"no_blocked_users": "Du har ingen blokerte brukere",
|
||||
"friend_code_copied": "Vennekode kopiert",
|
||||
"undo_friendship_modal_text": "Dette vil angre venskapet ditt med {{displayName}}",
|
||||
"privacy_hint": "For å justere på hvem som kan se dette, gå til <0>Innstillingene</0>",
|
||||
"locked_profile": "Denne profilen er privat",
|
||||
"image_process_failure": "Mislyktes under håndteringen av bildet",
|
||||
"required_field": "Dette feltet er påkrevet",
|
||||
"displayname_min_length": "Brukernavnet skal være minst 3 karakterer langt",
|
||||
"displayname_max_length": "Brukernavnet skal være maksimalt 50 karakterer langt",
|
||||
"report_profile": "Rapportér denne profilen",
|
||||
"report_reason": "Hvorfor rapportérer du denne profilen?",
|
||||
"report_description": "Mer informasjon",
|
||||
"report_description_placeholder": "Mer informasjon",
|
||||
"report": "Rapportér",
|
||||
"report_reason_hate": "Hatytringer",
|
||||
"report_reason_sexual_content": "Seksuelt innhold",
|
||||
"report_reason_violence": "Vold",
|
||||
"report_reason_spam": "Spam",
|
||||
"report_reason_other": "Annet",
|
||||
"profile_reported": "Profil rapportert"
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,6 @@
|
||||
"language_name": "Nederlands",
|
||||
"home": {
|
||||
"featured": "Uitgelicht",
|
||||
"trending": "Trending",
|
||||
"surprise_me": "Verrasing",
|
||||
"no_results": "Geen resultaten gevonden"
|
||||
},
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
"language_name": "Polski",
|
||||
"home": {
|
||||
"featured": "Wyróżnione",
|
||||
"trending": "Trendujące",
|
||||
"surprise_me": "Zaskocz mnie",
|
||||
"no_results": "Nie znaleziono wyników"
|
||||
},
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
},
|
||||
"home": {
|
||||
"featured": "Destaques",
|
||||
"trending": "Populares",
|
||||
"hot": "🔥 Populares agora",
|
||||
"hot": "Populares",
|
||||
"weekly": "📅 Mais baixados da semana",
|
||||
"achievements": "🏆 Pra platinar",
|
||||
"surprise_me": "Surpreenda-me",
|
||||
"no_results": "Nenhum resultado encontrado",
|
||||
"start_typing": "Comece a digitar para pesquisar…"
|
||||
@@ -25,7 +25,8 @@
|
||||
"queued": "{{title}} (Na fila)",
|
||||
"game_has_no_executable": "Jogo não possui executável selecionado",
|
||||
"sign_in": "Login",
|
||||
"friends": "Amigos"
|
||||
"friends": "Amigos",
|
||||
"need_help": "Precisa de ajuda?"
|
||||
},
|
||||
"header": {
|
||||
"search": "Buscar jogos",
|
||||
@@ -126,7 +127,47 @@
|
||||
"download": "Baixar",
|
||||
"executable_path_in_use": "Executável em uso por \"{{game}}\"",
|
||||
"warning": "Aviso:",
|
||||
"hydra_needs_to_remain_open": "para este download, o Hydra precisa ficar aberto até a conclusão. Caso o Hydra encerre antes da conclusão, perderá seu progresso."
|
||||
"hydra_needs_to_remain_open": "para este download, o Hydra precisa ficar aberto até a conclusão. Caso o Hydra encerre antes da conclusão, perderá seu progresso.",
|
||||
"achievements": "Conquistas",
|
||||
"achievements_count": "Conquistas ({{unlockedCount}}/{{achievementsCount}})",
|
||||
"cloud_save": "Salvamento em nuvem",
|
||||
"cloud_save_description": "Mantenha seu progresso na nuvem e continue de onde parou em qualquer dispositivo",
|
||||
"backups": "Backups",
|
||||
"install_backup": "Restaurar",
|
||||
"delete_backup": "Apagar",
|
||||
"create_backup": "Novo backup",
|
||||
"last_backup_date": "Último backup em {{date}}",
|
||||
"no_backup_preview": "Não foi possível encontrar nenhum salvamento para este jogo",
|
||||
"restoring_backup": "Restaurando backup ({{progress}} concluído)…",
|
||||
"uploading_backup": "Criando backup…",
|
||||
"no_backups": "Você ainda não fez nenhum backup deste jogo",
|
||||
"backup_uploaded": "Backup criado",
|
||||
"backup_deleted": "Backup apagado",
|
||||
"backup_restored": "Backup restaurado",
|
||||
"see_all_achievements": "Ver todas as conquistas",
|
||||
"sign_in_to_see_achievements": "Faça login para ver as conquistas",
|
||||
"mapping_method_automatic": "Automático",
|
||||
"mapping_method_manual": "Manual",
|
||||
"mapping_method_label": "Método de mapeamento",
|
||||
"files_automatically_mapped": "Arquivos automaticamente mapeados",
|
||||
"no_backups_created": "Nenhum backup criado para este jogo",
|
||||
"manage_files": "Gerenciar arquivos",
|
||||
"loading_save_preview": "Buscando por arquivos de salvamento…",
|
||||
"wine_prefix": "Prefixo Wine",
|
||||
"wine_prefix_description": "O prefixo Wine que foi utilizado para instalar o jogo",
|
||||
"launch_options": "Opções de Inicialização",
|
||||
"launch_options_description": "Usuários avançados podem adicionar opções de inicialização no jogo",
|
||||
"launch_options_placeholder": "Nenhum parâmetro informado",
|
||||
"no_download_option_info": "Sem informações disponíveis",
|
||||
"backup_deletion_failed": "Falha ao apagar backup",
|
||||
"max_number_of_artifacts_reached": "Número máximo de backups atingido para este jogo",
|
||||
"achievements_not_sync": "Veja como exibir suas conquistas no perfil",
|
||||
"backup_from": "Backup de {{date}}",
|
||||
"custom_backup_location_set": "Localização customizada selecionada",
|
||||
"select_folder": "Selecione a pasta",
|
||||
"manage_files_description": "Gerencie quais arquivos serão feitos backup",
|
||||
"clear": "Limpar",
|
||||
"no_directory_selected": "Nenhum diretório selecionado"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Ativação",
|
||||
@@ -155,11 +196,15 @@
|
||||
"install": "Instalar",
|
||||
"download_in_progress": "Baixando agora",
|
||||
"queued_downloads": "Na fila",
|
||||
"downloads_completed": "Completo",
|
||||
"downloads_completed": "Concluído",
|
||||
"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…"
|
||||
"checking_files": "Verificando arquivos…",
|
||||
"seeding": "Semeando",
|
||||
"stop_seeding": "Parar de semear",
|
||||
"resume_seeding": "Semear",
|
||||
"options": "Gerenciar"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Diretório dos downloads",
|
||||
@@ -168,7 +213,7 @@
|
||||
"enable_download_notifications": "Quando um download for concluído",
|
||||
"enable_repack_list_notifications": "Quando a lista de repacks for atualizada",
|
||||
"real_debrid_api_token_label": "Token de API do Real-Debrid",
|
||||
"quit_app_instead_hiding": "Encerrar o Hydra em vez de apenas minimizá-lo ao fechar.",
|
||||
"quit_app_instead_hiding": "Encerrar o Hydra em vez de apenas minimizá-lo ao fechar",
|
||||
"launch_with_system": "Iniciar o Hydra junto com o sistema",
|
||||
"general": "Geral",
|
||||
"behavior": "Comportamento",
|
||||
@@ -190,9 +235,6 @@
|
||||
"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",
|
||||
@@ -216,7 +258,12 @@
|
||||
"source_already_exists": "Essa fonte já foi adicionada",
|
||||
"must_be_valid_url": "A fonte deve ser uma URL válida",
|
||||
"blocked_users": "Usuários bloqueados",
|
||||
"user_unblocked": "Usuário desbloqueado"
|
||||
"user_unblocked": "Usuário desbloqueado",
|
||||
"enable_achievement_notifications": "Quando uma conquista é desbloqueada",
|
||||
"launch_minimized": "Iniciar o Hydra minimizado",
|
||||
"disable_nsfw_alert": "Desativar alerta de conteúdo inapropriado",
|
||||
"seed_after_download_complete": "Semear após a conclusão do download",
|
||||
"show_hidden_achievement_description": "Mostrar descrição de conquistas ocultas antes de debloqueá-las"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Download concluído",
|
||||
@@ -240,8 +287,15 @@
|
||||
"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"
|
||||
"search": "Filtrar…",
|
||||
"developers": "Desenvolvedores",
|
||||
"genres": "Gêneros",
|
||||
"tags": "Marcadores",
|
||||
"publishers": "Distribuidoras",
|
||||
"download_sources": "Fontes de download",
|
||||
"result_count": "{{resultCount}} resultados",
|
||||
"filter_count": "{{filterCount}} disponíveis",
|
||||
"clear_filters": "Limpar {{filterCount}} selecionados"
|
||||
},
|
||||
"modal": {
|
||||
"close": "Botão de fechar"
|
||||
@@ -255,7 +309,7 @@
|
||||
"last_time_played": "Última sessão {{period}}",
|
||||
"activity": "Atividades recentes",
|
||||
"library": "Biblioteca",
|
||||
"total_play_time": "Tempo total de jogo: {{amount}}",
|
||||
"total_play_time": "Tempo total de jogo",
|
||||
"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",
|
||||
@@ -299,7 +353,6 @@
|
||||
"friend_code_copied": "Código de amigo copiado",
|
||||
"undo_friendship_modal_text": "Isso irá remover sua amizade com {{displayName}}",
|
||||
"privacy_hint": "Pra controlar quem pode ver seu perfil, acesse a <0>Tela de Configurações</0>",
|
||||
"profile_locked": "Este perfil é privado",
|
||||
"image_process_failure": "Falha ao processar a imagem",
|
||||
"required_field": "Este campo é obrigatório",
|
||||
"displayname_min_length": "Nome de exibição deve ter pelo menos 3 caracteres",
|
||||
@@ -315,6 +368,47 @@
|
||||
"report_reason_violence": "Violência",
|
||||
"report_reason_spam": "Spam",
|
||||
"report_reason_other": "Outro",
|
||||
"profile_reported": "Perfil reportado"
|
||||
"profile_reported": "Perfil reportado",
|
||||
"your_friend_code": "Seu código de amigo:",
|
||||
"upload_banner": "Carregar banner",
|
||||
"uploading_banner": "Carregando banner…",
|
||||
"background_image_updated": "Imagem de fundo salva",
|
||||
"stats": "Estatísticas",
|
||||
"achievements": "conquistas",
|
||||
"games": "Jogos",
|
||||
"ranking_updated_weekly": "O ranking é atualizado semanalmente",
|
||||
"playing": "Jogando {{game}}",
|
||||
"achievements_unlocked": "Conquistas desbloqueadas",
|
||||
"earned_points": "Pontos ganhos",
|
||||
"show_achievements_on_profile": "Exiba suas conquistas no perfil",
|
||||
"show_points_on_profile": "Exiba seus pontos ganhos no perfil"
|
||||
},
|
||||
"achievement": {
|
||||
"achievement_unlocked": "Conquista desbloqueada",
|
||||
"your_achievements": "Suas Conquistas",
|
||||
"user_achievements": "Conquistas de {{displayName}}",
|
||||
"unlocked_at": "Desbloqueada em: {{date}}",
|
||||
"subscription_needed": "Você precisa de uma assinatura Hydra Cloud para visualizar este conteúdo",
|
||||
"new_achievements_unlocked": "{{achievementCount}} novas conquistas de {{gameCount}} jogos",
|
||||
"achievement_progress": "{{unlockedCount}}/{{totalCount}} conquistas",
|
||||
"achievements_unlocked_for_game": "Desbloqueadas {{achievementCount}} novas conquistas em {{gameTitle}}",
|
||||
"hidden_achievement_tooltip": "Está é uma conquista oculta",
|
||||
"achievement_earn_points": "Ganhe {{points}} pontos com essa conquista",
|
||||
"earned_points": "Pontos ganhos:",
|
||||
"available_points": "Pontos disponíveis:",
|
||||
"how_to_earn_achievements_points": "Como desbloquear pontos nas conquistas?"
|
||||
},
|
||||
"hydra_cloud": {
|
||||
"subscription_tour_title": "Assinatura Hydra Cloud",
|
||||
"hydra_cloud": "Hydra Cloud",
|
||||
"subscribe_now": "Inscreva-se agora",
|
||||
"cloud_achievements": "Salvamento de conquistas em nuvem",
|
||||
"animated_profile_picture": "Fotos de perfil animadas",
|
||||
"premium_support": "Suporte Premium",
|
||||
"show_and_compare_achievements": "Exiba e compare suas conquistas com outros usuários",
|
||||
"animated_profile_banner": "Banner animado no perfil",
|
||||
"cloud_saving": "Saves de jogos em nuvem",
|
||||
"hydra_cloud_feature_found": "Você descobriu uma funcionalidade Hydra Cloud!",
|
||||
"learn_more": "Saiba mais"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,10 +5,12 @@
|
||||
},
|
||||
"home": {
|
||||
"featured": "Destaques",
|
||||
"trending": "Populares",
|
||||
"hot": "Populares",
|
||||
"weekly": "📅 Mais descarregados esta semana",
|
||||
"achievements": "🏆 Para completar",
|
||||
"surprise_me": "Surpreende-me",
|
||||
"no_results": "Nenhum resultado encontrado",
|
||||
"start_typing": "Comece a digitar para pesquisar…"
|
||||
"start_typing": "Começa a escrever para pesquisar…"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Catálogo",
|
||||
@@ -16,13 +18,14 @@
|
||||
"settings": "Definições",
|
||||
"my_library": "Biblioteca",
|
||||
"downloading_metadata": "{{title}} (A transferir metadados…)",
|
||||
"paused": "{{title}} (Pausado)",
|
||||
"paused": "{{title}} (Em pausa)",
|
||||
"downloading": "{{title}} ({{percentage}} - A transferir…)",
|
||||
"filter": "Procurar",
|
||||
"home": "Início",
|
||||
"queued": "{{title}} (Na fila)",
|
||||
"game_has_no_executable": "Jogo não tem executável selecionado",
|
||||
"sign_in": "Iniciar sessão"
|
||||
"game_has_no_executable": "O jogo não tem um executável selecionado",
|
||||
"sign_in": "Iniciar sessão",
|
||||
"friends": "Amigos"
|
||||
},
|
||||
"header": {
|
||||
"search": "Procurar jogos",
|
||||
@@ -31,8 +34,8 @@
|
||||
"search_results": "Resultados da pesquisa",
|
||||
"settings": "Definições",
|
||||
"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."
|
||||
"version_available_install": "Versão {{version}} disponível. Clica aqui para reiniciar e instalar.",
|
||||
"version_available_download": "Versão {{version}} disponível. Clica aqui para fazer o download."
|
||||
},
|
||||
"bottom_panel": {
|
||||
"no_downloads_in_progress": "Sem transferências em andamento",
|
||||
@@ -47,19 +50,19 @@
|
||||
"download_options_one": "{{count}} opção de transferência",
|
||||
"download_options_other": "{{count}} opções de transferência",
|
||||
"updated_at": "Atualizado a {{updated_at}}",
|
||||
"resume": "Retomar",
|
||||
"pause": "Pausar",
|
||||
"resume": "Continuar",
|
||||
"pause": "Colocar em pausa",
|
||||
"cancel": "Cancelar",
|
||||
"remove": "Remover",
|
||||
"space_left_on_disk": "{{space}} livres no disco",
|
||||
"eta": "Conclusão {{eta}}",
|
||||
"calculating_eta": "A calcular tempo restante…",
|
||||
"downloading_metadata": "A transferir metadados…",
|
||||
"filter": "Filtrar repacks",
|
||||
"filter": "Filtrar opções de transferência",
|
||||
"requirements": "Requisitos do sistema",
|
||||
"minimum": "Mínimos",
|
||||
"recommended": "Recomendados",
|
||||
"paused": "Pausado",
|
||||
"paused": "Em pausa",
|
||||
"release_date": "Lançado em {{date}}",
|
||||
"publisher": "Publicado por {{publisher}}",
|
||||
"hours": "horas",
|
||||
@@ -70,24 +73,24 @@
|
||||
"add_to_library": "Adicionar à biblioteca",
|
||||
"remove_from_library": "Remover da biblioteca",
|
||||
"no_downloads": "Nenhuma transferência disponível",
|
||||
"play_time": "Jogou por {{amount}}",
|
||||
"play_time": "Jogaste por {{amount}}",
|
||||
"next_suggestion": "Próxima sugestão",
|
||||
"install": "Instalar",
|
||||
"last_time_played": "Última sessão {{period}}",
|
||||
"play": "Jogar",
|
||||
"not_played_yet": "Ainda não jogou {{title}}",
|
||||
"not_played_yet": "Ainda não jogaste {{title}}",
|
||||
"close": "Fechar",
|
||||
"deleting": "A eliminar instalador…",
|
||||
"playing_now": "A jogar agora",
|
||||
"change": "Explorar",
|
||||
"repacks_modal_description": "Escolha o repack do jogo que deseja transferir",
|
||||
"select_folder_hint": "Para trocar o diretório padrão, aceda à <0>Tela de Definições</0>",
|
||||
"repacks_modal_description": "Escolhe a versão do jogo que desejas transferir",
|
||||
"select_folder_hint": "Para alterar o local predefinido, acede às <0>Definições</0>",
|
||||
"download_now": "Iniciar transferência",
|
||||
"no_shop_details": "Não foi possível obter os detalhes da loja.",
|
||||
"download_options": "Opções de transferência",
|
||||
"download_path": "Diretório de transferência",
|
||||
"download_path": "Local de transferência",
|
||||
"previous_screenshot": "Captura de ecrã anterior",
|
||||
"next_screenshot": "Próxima captura de ecrã",
|
||||
"next_screenshot": "Captura de ecrã seguinte",
|
||||
"screenshot": "Captura de ecrã {{number}}",
|
||||
"open_screenshot": "Ver captura de ecrã {{number}}",
|
||||
"download_settings": "Definições de transferência",
|
||||
@@ -99,65 +102,104 @@
|
||||
"create_shortcut": "Criar atalho no ambiente de trabalho",
|
||||
"remove_files": "Remover ficheiros",
|
||||
"options": "Gerir",
|
||||
"remove_from_library_description": "Isto irá remover {{game}} da sua biblioteca",
|
||||
"remove_from_library_title": "Tem a certeza?",
|
||||
"remove_from_library_description": "Isto vai remover {{game}} da tua biblioteca",
|
||||
"remove_from_library_title": "Tens a certeza?",
|
||||
"executable_section_title": "Executável",
|
||||
"executable_section_description": "O caminho do ficheiro que será executado ao clicar em \"Jogar\"",
|
||||
"executable_section_description": "O caminho do ficheiro que vai ser executado ao clicar em \"Jogar\"",
|
||||
"downloads_secion_title": "Transferências",
|
||||
"downloads_section_description": "Confira atualizações ou versões diferentes para este mesmo título",
|
||||
"downloads_section_description": "Encontra 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 ficheiros que foram transferidos pelo Hydra",
|
||||
"danger_zone_section_description": "Remove o jogo da tua biblioteca ou os ficheiros que foram transferidos pelo Hydra",
|
||||
"download_in_progress": "Transferência em andamento",
|
||||
"download_paused": "Transferência pausada",
|
||||
"download_paused": "Transferência em pausa",
|
||||
"last_downloaded_option": "Última opção transferida",
|
||||
"create_shortcut_success": "Atalho criado com sucesso",
|
||||
"create_shortcut_error": "Erro ao criar atalho",
|
||||
"nsfw_content_title": "Este jogo contém conteúdo inapropriado",
|
||||
"nsfw_content_description": "{{title}} contém conteúdo que pode não ser apropriado para todas as idades. Desejas continuar?",
|
||||
"allow_nsfw_content": "Continuar",
|
||||
"refuse_nsfw_content": "Voltar",
|
||||
"stats": "Estatísticas",
|
||||
"download_count": "Transferências",
|
||||
"player_count": "Jogadores ativos",
|
||||
"download_error": "Esta opção de transferência falhou",
|
||||
"download": "Transferir",
|
||||
"executable_path_in_use": "Executável em uso por \"{{game}}\"",
|
||||
"warning": "Aviso:",
|
||||
"hydra_needs_to_remain_open": "para este download, o Hydra precisa ficar aberto até a conclusão. Caso o Hydra encerre antes da conclusão, perderá seu progresso."
|
||||
"hydra_needs_to_remain_open": "para esta transferência, o Hydra precisa de ficar aberto até a conclusão. Caso o Hydra encerre antes da transferência terminar, vais perder o teu progresso.",
|
||||
"achievements": "Conquistas",
|
||||
"achievements_count": "Conquistas ({{unlockedCount}}/{{achievementsCount}})",
|
||||
"cloud_save": "Gravação na nuvem",
|
||||
"cloud_save_description": "Mantém o teu progresso guardado na nuvem e continua de onde paraste em qualquer dispositivo",
|
||||
"backups": "Backups",
|
||||
"install_backup": "Restaurar",
|
||||
"delete_backup": "Apagar",
|
||||
"create_backup": "Novo backup",
|
||||
"last_backup_date": "Último backup realizado em {{date}}",
|
||||
"no_backup_preview": "Não foi possível encontrar nenhum ficheiro de gravação para este jogo",
|
||||
"restoring_backup": "A restaurar backup ({{progress}} concluído)…",
|
||||
"uploading_backup": "A criar backup…",
|
||||
"no_backups": "Ainda não fizeste nenhum backup deste jogo",
|
||||
"backup_uploaded": "Backup criado",
|
||||
"backup_deleted": "Backup apagado",
|
||||
"backup_restored": "Backup restaurado",
|
||||
"see_all_achievements": "Ver todas as conquistas",
|
||||
"sign_in_to_see_achievements": "Faz login para vez as conquistas",
|
||||
"mapping_method_automatic": "Automático",
|
||||
"mapping_method_manual": "Manual",
|
||||
"mapping_method_label": "Modo de mapeamento",
|
||||
"files_automatically_mapped": "Ficheiros automaticamente mapeados",
|
||||
"no_backups_created": "Nenhum backup criado para este jogo",
|
||||
"manage_files": "Gerir ficheiros",
|
||||
"loading_save_preview": "A procurar ficheiros de gravação…",
|
||||
"wine_prefix": "Prefixo Wine",
|
||||
"wine_prefix_description": "O prefixo Wine que foi utilizado para instalar o jogo",
|
||||
"no_download_option_info": "Sem informações disponíveis",
|
||||
"backup_deletion_failed": "Falha ao apagar o backup",
|
||||
"max_number_of_artifacts_reached": "Número máximo de backups atingido para este jogo",
|
||||
"achievements_not_sync": "As tuas conquistas não estão sincronizadas"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Ativação",
|
||||
"installation_id": "ID da instalação:",
|
||||
"enter_activation_code": "Insira o seu código de ativação",
|
||||
"message": "Se não sabe onde conseguir o código, talvez não devesse estar aqui.",
|
||||
"enter_activation_code": "Insere o teu código de ativação",
|
||||
"message": "Se não souberes onde conseguir o código, talvez não devias estar aqui.",
|
||||
"activate": "Ativar",
|
||||
"loading": "A carregar…"
|
||||
},
|
||||
"downloads": {
|
||||
"resume": "Retomar",
|
||||
"pause": "Pausar",
|
||||
"resume": "Continuar",
|
||||
"pause": "Colocar em pausa",
|
||||
"eta": "Conclusão {{eta}}",
|
||||
"paused": "Pausado",
|
||||
"paused": "Em pausa",
|
||||
"verifying": "A verificar…",
|
||||
"completed": "Concluído",
|
||||
"removed": "Cancelado",
|
||||
"cancel": "Cancelar",
|
||||
"filter": "Filtrar jogos transferidos",
|
||||
"filter": "Filtrar jogos descarregados",
|
||||
"remove": "Remover",
|
||||
"downloading_metadata": "A transferir metadados…",
|
||||
"delete": "Remover instalador",
|
||||
"delete_modal_description": "Isto removerá todos os ficheiros de instalação do seu computador",
|
||||
"delete_modal_title": "Tem a certeza?",
|
||||
"deleting": "A eliminar instalador…",
|
||||
"delete_modal_description": "Isto vai remover todos os ficheiros de instalação do teu computador",
|
||||
"delete_modal_title": "Tens a certeza?",
|
||||
"deleting": "A remover o instalador…",
|
||||
"install": "Instalar",
|
||||
"download_in_progress": "A transferir agora",
|
||||
"download_in_progress": "A descarregar agora",
|
||||
"queued_downloads": "Na fila",
|
||||
"downloads_completed": "Concluído",
|
||||
"queued": "Na fila",
|
||||
"no_downloads_title": "Nada por aqui…",
|
||||
"no_downloads_description": "Ainda não transferiu nada pelo Hydra, mas nunca é tarde para começar.",
|
||||
"no_downloads_description": "Ainda não descarregaste nada pelo Hydra, mas nunca é tarde para começar.",
|
||||
"checking_files": "A verificar ficheiros…"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Diretório das transferências",
|
||||
"change": "Explorar...",
|
||||
"downloads_path": "Local das transferências",
|
||||
"change": "Procurar...",
|
||||
"notifications": "Notificações",
|
||||
"enable_download_notifications": "Quando uma transferência for concluída",
|
||||
"enable_repack_list_notifications": "Quando a lista de repacks for atualizada",
|
||||
"real_debrid_api_token_label": "Token de API do Real-Debrid",
|
||||
"quit_app_instead_hiding": "Encerrar o Hydra em vez de apenas minimizá-lo ao fechar.",
|
||||
"quit_app_instead_hiding": "Encerrar o Hydra em vez de apenas minimizá-lo ao fechar",
|
||||
"launch_with_system": "Iniciar o Hydra com o sistema",
|
||||
"general": "Geral",
|
||||
"behavior": "Comportamento",
|
||||
@@ -165,60 +207,72 @@
|
||||
"language": "Idioma",
|
||||
"real_debrid_api_token": "Token de API",
|
||||
"enable_real_debrid": "Ativar Real-Debrid",
|
||||
"real_debrid_api_token_hint": "Pode obter o seu token de API <0>aqui</0>",
|
||||
"real_debrid_description": "O Real-Debrid é um downloader sem restrições que permite transferir ficheiros instantaneamente e com a melhor velocidade da sua Internet.",
|
||||
"real_debrid_api_token_hint": "Podes obter o teu token de API <0>aqui</0>",
|
||||
"real_debrid_description": "O Real-Debrid é um downloader sem restrições que permite descarregar ficheiros instantaneamente e com a melhor velocidade da tua Internet.",
|
||||
"real_debrid_invalid_token": "Token de API inválido",
|
||||
"real_debrid_free_account_error": "A conta \"{{username}}\" é uma conta gratuita. Por favor, subscreva o Real-Debrid",
|
||||
"real_debrid_linked_message": "Conta \"{{username}}\" vinculada",
|
||||
"real_debrid_free_account_error": "A conta \"{{username}}\" é uma conta gratuita. Por favor, subscreve o Real-Debrid",
|
||||
"real_debrid_linked_message": "Conta \"{{username}}\" associada",
|
||||
"save_changes": "Guardar alterações",
|
||||
"changes_saved": "Definições guardadas com sucesso",
|
||||
"download_sources_description": "O Hydra vai procurar links de transferência em todas as fontes ativadas. A URL da página de detalhes da loja não é guardada no seu dispositivo. Utilizamos um sistema de metadados criado pela comunidade para fornecer suporte a mais fontes de transferência de jogos.",
|
||||
"changes_saved": "Alterações guardadas com sucesso",
|
||||
"download_sources_description": "O Hydra vai procurar links de download em todas as fontes ativadas. O URL da fonte deve ser um link direto para um ficheiro .json que contenha uma lista de links.",
|
||||
"validate_download_source": "Validar",
|
||||
"remove_download_source": "Remover",
|
||||
"add_download_source": "Adicionar fonte",
|
||||
"download_count_zero": "Sem transferências na lista",
|
||||
"download_count_one": "{{countFormatted}} transferência na lista",
|
||||
"download_count_other": "{{countFormatted}} transferências na lista",
|
||||
"download_options_zero": "Sem transferências disponíveis",
|
||||
"download_options_one": "{{countFormatted}} transferência disponível",
|
||||
"download_options_other": "{{countFormatted}} transferências disponíveis",
|
||||
"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 o URL contendo o arquivo .json",
|
||||
"add_download_source_description": "Insere o URL que contém o ficheiro .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 o URL de um JSON válido",
|
||||
"insert_valid_json_url": "Insere o URL de um JSON válido",
|
||||
"found_download_option_zero": "Nenhuma opção de transferência encontrada",
|
||||
"found_download_option_one": "{{countFormatted}} opção de transferência encontrada",
|
||||
"found_download_option_other": "{{countFormatted}} opções de transferências encontradas",
|
||||
"import": "Importar"
|
||||
"found_download_option_other": "{{countFormatted}} opções de transferência encontradas",
|
||||
"import": "Importar",
|
||||
"privacy": "Privacidade",
|
||||
"private": "Privado",
|
||||
"friends_only": "Apenas amigos",
|
||||
"public": "Público",
|
||||
"profile_visibility": "Visibilidade do perfil",
|
||||
"profile_visibility_description": "Escolhe quem pode ver o teu perfil e biblioteca",
|
||||
"required_field": "Este campo é obrigatório",
|
||||
"source_already_exists": "Essa fonte já foi adicionada",
|
||||
"must_be_valid_url": "A fonte deve ser um URL válido",
|
||||
"blocked_users": "Utilizadores bloqueados",
|
||||
"user_unblocked": "Utilizador desbloqueado",
|
||||
"enable_achievement_notifications": "Quando uma conquista é desbloqueada"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Transferência concluída",
|
||||
"game_ready_to_install": "{{title}} está pronto para ser descarregado",
|
||||
"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",
|
||||
"new_update_available": "Versão {{version}} disponível",
|
||||
"restart_to_install_update": "Reinicie o Hydra para instalar a nova versão"
|
||||
"restart_to_install_update": "Reinicia o Hydra para instalar a nova versão"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Abrir Hydra",
|
||||
"quit": "Fechar"
|
||||
"open": "Abrir o Hydra",
|
||||
"quit": "Sair"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Sem transferências disponíveis"
|
||||
"no_downloads": "Sem downloads disponíveis"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Programas não instalados",
|
||||
"description": "Os executáveis do Wine ou Lutris não foram encontrados em seu sistema.",
|
||||
"instructions": "Verifique a forma correta de instalar algum deles na sua distro Linux, garantindo assim a execução normal do jogo."
|
||||
"description": "Os executáveis do Wine ou Lutris não foram encontrados no teu sistema.",
|
||||
"instructions": "Verifica a forma correta de instalar algum deles na tua distribuição Linux, para garantir a execução normal do jogo"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Próxima página",
|
||||
"next_page": "Página seguinte",
|
||||
"previous_page": "Página anterior"
|
||||
},
|
||||
"modal": {
|
||||
@@ -231,24 +285,24 @@
|
||||
"amount_hours": "{{amount}} horas",
|
||||
"amount_minutes": "{{amount}} minutos",
|
||||
"last_time_played": "Última sessão {{period}}",
|
||||
"activity": "Atividades recentes",
|
||||
"activity": "Atividade recente",
|
||||
"library": "Biblioteca",
|
||||
"total_play_time": "Tempo total de jogo: {{amount}}",
|
||||
"no_recent_activity_title": "Hmmm… nada por aqui",
|
||||
"total_play_time": "Tempo total de jogo",
|
||||
"no_recent_activity_title": "Hmmm… não há nada por aqui",
|
||||
"no_recent_activity_description": "Parece que não jogaste nada recentemente. Que tal começar agora?",
|
||||
"display_name": "Nome de exibição",
|
||||
"saving": "a guardar…",
|
||||
"display_name": "Nome de apresentação",
|
||||
"saving": "A guardar…",
|
||||
"save": "Guardar",
|
||||
"edit_profile": "Editar perfil",
|
||||
"saved_successfully": "Guardado com sucesso",
|
||||
"try_again": "Por favor, tenta novamente",
|
||||
"cancel": "Cancelar",
|
||||
"successfully_signed_out": "Terminado com sucesso",
|
||||
"successfully_signed_out": "Sessão terminada com sucesso",
|
||||
"sign_out": "Terminar sessão",
|
||||
"sign_out_modal_title": "Tens a certeza?",
|
||||
"playing_for": "A jogar há {{amount}}",
|
||||
"sign_out_modal_text": "A tua biblioteca de jogos está associada com a tua conta atual. Ao sair, a tua biblioteca não aparecerá mais no Hydra e qualquer progresso não será guardado. Desejas continuar?",
|
||||
"add_friends": "Adicionar Amigos",
|
||||
"sign_out_modal_title": "Desejas mesmo terminar sessão?",
|
||||
"playing_for": "A jogar por {{amount}}",
|
||||
"sign_out_modal_text": "A tua biblioteca de jogos está associada à conta atual. Ao terminar sessão, a tua biblioteca não irá aparecer mais no Hydra e qualquer progresso não será guardado. Desejas continuar?",
|
||||
"add_friends": "Adicionar amigos",
|
||||
"friend_code": "Código de amigo",
|
||||
"see_profile": "Ver perfil",
|
||||
"friend_request_sent": "Pedido de amizade enviado",
|
||||
@@ -270,11 +324,49 @@
|
||||
"user_block_modal_text": "Bloquear {{displayName}}",
|
||||
"blocked_users": "Utilizadores bloqueados",
|
||||
"unblock": "Desbloquear",
|
||||
"no_friends_added": "Ainda não adicionaste amigos",
|
||||
"no_friends_added": "Ainda não adicionaste nenhum amigo",
|
||||
"pending": "Pendentes",
|
||||
"no_pending_invites": "Não tens convites de amizade pendentes",
|
||||
"no_pending_invites": "Não tens pedidos de amizade pendentes",
|
||||
"no_blocked_users": "Não tens nenhum utilizador bloqueado",
|
||||
"friend_code_copied": "Código de amigo copiado",
|
||||
"image_process_failure": "Falha ao processar a imagem"
|
||||
"undo_friendship_modal_text": "Isto vai remover a tua amizade com {{displayName}}",
|
||||
"privacy_hint": "Para controlar quem pode ver o teu perfil, acede às <0>Definições</0>",
|
||||
"profile_locked": "Este perfil é privado",
|
||||
"image_process_failure": "Falha ao processar a imagem",
|
||||
"required_field": "Este campo é obrigatório",
|
||||
"displayname_min_length": "O nome de apresentação deve ter pelo menos 3 caracteres",
|
||||
"displayname_max_length": "O nome de apresentação deve ter no máximo 50 caracteres",
|
||||
"locked_profile": "Este perfil é privado",
|
||||
"report_profile": "Denunciar este perfil",
|
||||
"report_reason": "Por que é que desejas denunciar este perfil?",
|
||||
"report_description": "Informações adicionais",
|
||||
"report_description_placeholder": "Insere aqui",
|
||||
"report": "Denunciar",
|
||||
"report_reason_hate": "Discurso de ódio",
|
||||
"report_reason_sexual_content": "Conteúdo sexual",
|
||||
"report_reason_violence": "Violência",
|
||||
"report_reason_spam": "Spam",
|
||||
"report_reason_other": "Outro",
|
||||
"profile_reported": "Perfil denunciado",
|
||||
"your_friend_code": "O teu código de amigo:",
|
||||
"upload_banner": "Fazer upload do banner",
|
||||
"uploading_banner": "A fazer upload do banner…"
|
||||
},
|
||||
"achievement": {
|
||||
"achievement_unlocked": "Conquista desbloqueada",
|
||||
"your_achievements": "As tuas Conquistas",
|
||||
"user_achievements": "Conquistas de {{displayName}}",
|
||||
"unlocked_at": "Desbloqueada em: {{date}}",
|
||||
"subscription_needed": "Precisas de uma subscrição Hydra Cloud para visualizar este conteúdo",
|
||||
"new_achievements_unlocked": "{{achievementCount}} novas conquistas de {{gameCount}} jogos"
|
||||
},
|
||||
"hydra_cloud": {
|
||||
"subscription_tour_title": "Subscrição Hydra Cloud",
|
||||
"subscribe_now": "Subscreve agora",
|
||||
"cloud_achievements": "Gravação de conquistas na nuvem",
|
||||
"animated_profile_picture": "Fotos de perfil animadas",
|
||||
"premium_support": "Apoio Premium",
|
||||
"show_and_compare_achievements": "Mostra e compara as tuas conquistas com as de outros utilizadores",
|
||||
"animated_profile_banner": "Banner animado no perfil"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
"language_name": "Română",
|
||||
"home": {
|
||||
"featured": "Recomandate",
|
||||
"trending": "Populare",
|
||||
"surprise_me": "Surprinde-mă",
|
||||
"no_results": "Niciun rezultat găsit"
|
||||
},
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
"successfully_signed_in": "Успешный вход"
|
||||
},
|
||||
"home": {
|
||||
"featured": "Рекомендованное",
|
||||
"trending": "В тренде",
|
||||
"featured": "Рекомендации",
|
||||
"surprise_me": "Удиви меня",
|
||||
"no_results": "Ничего не найдено",
|
||||
"hot": "🔥 Сейчас жарко",
|
||||
"hot": "Сейчас в топе",
|
||||
"start_typing": "Начинаю вводить текст для поиска...",
|
||||
"weekly": "📅 Лучшие игры недели"
|
||||
"weekly": "📅 Лучшие игры недели",
|
||||
"achievements": "🏆 Игры, в которых нужно победить"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "Каталог",
|
||||
@@ -20,12 +20,13 @@
|
||||
"downloading_metadata": "{{title}} (Загрузка метаданных…)",
|
||||
"paused": "{{title}} (Приостановлено)",
|
||||
"downloading": "{{title}} ({{percentage}} - Загрузка…)",
|
||||
"filter": "Фильтр библиотеки",
|
||||
"filter": "Поиск",
|
||||
"home": "Главная",
|
||||
"queued": "{{title}} (В очереди)",
|
||||
"game_has_no_executable": "Файл запуска игры не выбран",
|
||||
"sign_in": "Войти",
|
||||
"friends": "Друзья"
|
||||
"friends": "Друзья",
|
||||
"need_help": "Нужна помощь?"
|
||||
},
|
||||
"header": {
|
||||
"search": "Поиск",
|
||||
@@ -45,14 +46,21 @@
|
||||
"checking_files": "Проверка файлов {{title}}… ({{percentage}} завершено)"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "Следующая страница",
|
||||
"previous_page": "Предыдущая страница"
|
||||
"search": "Фильтр…",
|
||||
"developers": "Разработчики",
|
||||
"genres": "Жанры",
|
||||
"tags": "Маркеры",
|
||||
"publishers": "Издательства",
|
||||
"download_sources": "Источники загрузки",
|
||||
"result_count": "{{resultCount}} результатов",
|
||||
"filter_count": "{{filterCount}} доступных",
|
||||
"clear_filters": "Очистить {{filterCount}} выбранных"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "Открыть варианты загрузки",
|
||||
"download_options_zero": "Нет вариантов загрузки",
|
||||
"download_options_one": "{{count}} вариант загрузки",
|
||||
"download_options_other": "{{count}} вариантов загрузки",
|
||||
"open_download_options": "Открыть источники",
|
||||
"download_options_zero": "Нет источников",
|
||||
"download_options_one": "{{count}} источник",
|
||||
"download_options_other": "{{count}} источников",
|
||||
"updated_at": "Обновлено {{updated_at}}",
|
||||
"install": "Установить",
|
||||
"resume": "Возобновить",
|
||||
@@ -63,7 +71,7 @@
|
||||
"eta": "Окончание {{eta}}",
|
||||
"calculating_eta": "Подсчёт оставшегося времени…",
|
||||
"downloading_metadata": "Загрузка метаданных…",
|
||||
"filter": "Фильтр репаков",
|
||||
"filter": "Поиск репаков",
|
||||
"requirements": "Системные требования",
|
||||
"minimum": "Минимальные",
|
||||
"recommended": "Рекомендуемые",
|
||||
@@ -77,7 +85,7 @@
|
||||
"accuracy": "точность {{accuracy}}%",
|
||||
"add_to_library": "Добавить в библиотеку",
|
||||
"remove_from_library": "Удалить из библиотеки",
|
||||
"no_downloads": "Нет доступных загрузок",
|
||||
"no_downloads": "Нет доступных источников",
|
||||
"play_time": "Сыграно {{amount}}",
|
||||
"last_time_played": "Последний запуск {{period}}",
|
||||
"not_played_yet": "Вы ещё не играли в {{title}}",
|
||||
@@ -91,7 +99,7 @@
|
||||
"select_folder_hint": "Чтобы изменить папку загрузок по умолчанию, откройте <0>Настройки</0>",
|
||||
"download_now": "Загрузить сейчас",
|
||||
"no_shop_details": "Не удалось получить описание",
|
||||
"download_options": "Вариантов загрузки",
|
||||
"download_options": "Источники",
|
||||
"download_path": "Путь для загрузок",
|
||||
"previous_screenshot": "Предыдущий скриншот",
|
||||
"next_screenshot": "Следующий скриншот",
|
||||
@@ -104,6 +112,7 @@
|
||||
"open_folder": "Открыть папку",
|
||||
"open_download_location": "Просмотреть папку загрузок",
|
||||
"create_shortcut": "Создать ярлык на рабочем столе",
|
||||
"clear": "Очистить",
|
||||
"remove_files": "Удалить файлы",
|
||||
"remove_from_library_title": "Вы уверены?",
|
||||
"remove_from_library_description": "{{game}} будет удалена из вашей библиотеки.",
|
||||
@@ -113,22 +122,60 @@
|
||||
"downloads_secion_title": "Загрузки",
|
||||
"downloads_section_description": "Проверить наличие обновлений или других версий игры",
|
||||
"danger_zone_section_title": "Опасная зона",
|
||||
"danger_zone_section_description": "Удалить эту игру из вашей библиотеки или файлы скачанные Hydra",
|
||||
"danger_zone_section_description": "Вы можете удалить эту игру из вашей библиотеки или файлы скачанные из Hydra",
|
||||
"download_in_progress": "Идёт загрузка",
|
||||
"download_paused": "Загрузка приостановлена",
|
||||
"last_downloaded_option": "Последний вариант загрузки",
|
||||
"create_shortcut_success": "Ярлык создан",
|
||||
"create_shortcut_error": "Не удалось создать ярлык",
|
||||
"allow_nsfw_content": "Продолжать",
|
||||
"allow_nsfw_content": "Продолжить",
|
||||
"download": "Скачать",
|
||||
"download_count": "Загрузки",
|
||||
"download_error": "Этот вариант загрузки недоступен",
|
||||
"executable_path_in_use": "Исполняемый файл уже используется \"{{game}}\"",
|
||||
"nsfw_content_description": "{{title}} содержит контент, который может не подходить для всех возрастов. \nВы уверены, что хотите продолжить?",
|
||||
"nsfw_content_title": "Эта игра содержит неприемлемый контент",
|
||||
"refuse_nsfw_content": "Назад",
|
||||
"stats": "Статистика",
|
||||
"player_count": "Активные игроки",
|
||||
"refuse_nsfw_content": "Возвращаться",
|
||||
"stats": "Статистика"
|
||||
"warning": "Внимание:",
|
||||
"hydra_needs_to_remain_open": "Для этой загрузки Hydra должна оставаться открытой до завершения. Если Hydra закроется до завершения, вы потеряете прогресс.",
|
||||
"achievements": "Достижения",
|
||||
"achievements_count": "Достижения {{unlockedCount}}/{{achievementsCount}}",
|
||||
"cloud_save": "Облачное сохранение",
|
||||
"cloud_save_description": "Сохраняйте ваш прогресс в облаке и продолжайте играть на любом устройстве",
|
||||
"backups": "Резервные копии",
|
||||
"install_backup": "Установить",
|
||||
"delete_backup": "Удалить",
|
||||
"create_backup": "Создать новую резервную копию",
|
||||
"last_backup_date": "Последняя резервная копия от {{date}}",
|
||||
"no_backup_preview": "Сохранения для этого заголовка не найдены",
|
||||
"restoring_backup": "Восстановление резервной копии ({{progress}} завершено)…",
|
||||
"uploading_backup": "Загрузка резервной копии…",
|
||||
"no_backups": "Вы еще не создали резервных копий для этой игры",
|
||||
"backup_uploaded": "Резервная копия загружена",
|
||||
"backup_deleted": "Резервная копия удалена",
|
||||
"backup_restored": "Резервная копия восстановлена",
|
||||
"see_all_achievements": "Просмотреть все достижения",
|
||||
"sign_in_to_see_achievements": "Войдите, чтобы увидеть достижения",
|
||||
"mapping_method_automatic": "Автоматическая",
|
||||
"mapping_method_manual": "Ручная",
|
||||
"mapping_method_label": "Метод сопоставления",
|
||||
"files_automatically_mapped": "Файлы автоматически сопоставлены",
|
||||
"no_backups_created": "Для этой игры не создано резервных копий",
|
||||
"manage_files": "Управление файлами",
|
||||
"loading_save_preview": "Поиск сохранений…",
|
||||
"wine_prefix": "Префикс Wine",
|
||||
"wine_prefix_description": "Префикс Wine, используемый для запуска этой игры",
|
||||
"no_download_option_info": "Информация недоступна",
|
||||
"backup_deletion_failed": "Не удалось удалить резервную копию",
|
||||
"max_number_of_artifacts_reached": "Достигнуто максимальное количество резервных копий для этой игры",
|
||||
"achievements_not_sync": "Ваши достижения не синхронизированы",
|
||||
"manage_files_description": "Управляйте файлами, которые будут сохраняться и восстанавливаться",
|
||||
"select_folder": "Выбрать папку",
|
||||
"backup_from": "Резервная копия от {{date}}",
|
||||
"custom_backup_location_set": "Установлено настраиваемое местоположение резервной копии",
|
||||
"no_directory_selected": "Не выбран каталог"
|
||||
},
|
||||
"activation": {
|
||||
"title": "Активировать Hydra",
|
||||
@@ -147,7 +194,7 @@
|
||||
"completed": "Завершено",
|
||||
"removed": "Не скачано",
|
||||
"cancel": "Отмена",
|
||||
"filter": "Фильтр загруженных игр",
|
||||
"filter": "Поиск загруженных игр",
|
||||
"remove": "Удалить",
|
||||
"downloading_metadata": "Загрузка метаданных…",
|
||||
"deleting": "Удаление установщика…",
|
||||
@@ -161,17 +208,24 @@
|
||||
"queued": "В очереди",
|
||||
"no_downloads_title": "Здесь так пусто...",
|
||||
"no_downloads_description": "Вы ещё ничего не скачали через Hydra, но никогда не поздно начать.",
|
||||
"checking_files": "Проверка файлов…"
|
||||
"checking_files": "Проверка файлов…",
|
||||
"seeding": "Раздача",
|
||||
"stop_seeding": "Остановить раздачу",
|
||||
"resume_seeding": "Продолжить раздачу",
|
||||
"options": "Управлять"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "Путь загрузок",
|
||||
"change": "Изменить",
|
||||
"notifications": "Уведомления",
|
||||
"enable_download_notifications": "По завершении загрузки",
|
||||
"enable_achievement_notifications": "Когда достижение разблокировано",
|
||||
"enable_repack_list_notifications": "При добавлении нового репака",
|
||||
"real_debrid_api_token_label": "Real-Debrid API-токен",
|
||||
"quit_app_instead_hiding": "Закрывать приложение вместо сворачивания в трей",
|
||||
"launch_with_system": "Запускать Hydra вместе с системой",
|
||||
"launch_minimized": "Запустить Hydra в свернутом виде",
|
||||
"disable_nsfw_alert": "Отключить предупреждение о непристойном контенте",
|
||||
"general": "Основные",
|
||||
"behavior": "Поведение",
|
||||
"download_sources": "Источники загрузки",
|
||||
@@ -196,7 +250,7 @@
|
||||
"add_download_source_description": "Вставьте ссылку на .json-файл",
|
||||
"download_source_up_to_date": "Обновлён",
|
||||
"download_source_errored": "Ошибка",
|
||||
"sync_download_sources": "Синхронизировать источники",
|
||||
"sync_download_sources": "Обновить источники",
|
||||
"removed_download_source": "Источник загрузок удален",
|
||||
"added_download_source": "Источник загрузок добавлен",
|
||||
"download_sources_synced": "Все источники загрузок синхронизированы",
|
||||
@@ -206,19 +260,18 @@
|
||||
"found_download_option_other": "Найдено {{countFormatted}} вариантов загрузки",
|
||||
"import": "Импортировать",
|
||||
"blocked_users": "Заблокированные пользователи",
|
||||
"download_options_one": "",
|
||||
"download_options_other": "",
|
||||
"download_options_zero": "",
|
||||
"friends_only": "Только друзья",
|
||||
"friends_only": "Только для друзей",
|
||||
"must_be_valid_url": "Источник должен быть действительным URL-адресом.",
|
||||
"privacy": "Конфиденциальность",
|
||||
"private": "Частный",
|
||||
"profile_visibility": "Видимость профиля",
|
||||
"profile_visibility_description": "Выберите, кто может видеть ваш профиль и библиотеку",
|
||||
"public": "Общественный",
|
||||
"public": "Публичный",
|
||||
"required_field": "Это поле обязательно к заполнению",
|
||||
"source_already_exists": "Этот источник уже добавлен",
|
||||
"user_unblocked": "Пользователь разблокирован"
|
||||
"user_unblocked": "Пользователь разблокирован",
|
||||
"seed_after_download_complete": "Раздавать после завершения загрузки",
|
||||
"show_hidden_achievement_description": "Показывать описание скрытых достижений перед их получением"
|
||||
},
|
||||
"notifications": {
|
||||
"download_complete": "Загрузка завершена",
|
||||
@@ -226,15 +279,17 @@
|
||||
"repack_list_updated": "Список репаков обновлен",
|
||||
"repack_count_one": "{{count}} репак добавлен",
|
||||
"repack_count_other": "{{count}} репаков добавлено",
|
||||
"new_update_available": "Доступна версия {{version}}",
|
||||
"restart_to_install_update": "Перезапустите Hydra для установки обновления"
|
||||
"new_update_available": "Доступна новая версия {{version}}",
|
||||
"restart_to_install_update": "Перезапустите Hydra для установки обновления",
|
||||
"notification_achievement_unlocked_title": "Достижение разблокировано для {{game}}",
|
||||
"notification_achievement_unlocked_body": "были разблокированы {{achievement}} и другие {{count}}"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "Открыть Hydra",
|
||||
"quit": "Выйти"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "Нет доступных загрузок"
|
||||
"no_downloads": "Нет доступных источников"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "Программы не установлены",
|
||||
@@ -253,7 +308,7 @@
|
||||
"last_time_played": "Последняя игра {{period}}",
|
||||
"activity": "Недавняя активность",
|
||||
"library": "Библиотека",
|
||||
"total_play_time": "Всего сыграно: {{amount}}",
|
||||
"total_play_time": "Всего сыграно",
|
||||
"no_recent_activity_title": "Хммм... Тут ничего нет",
|
||||
"no_recent_activity_description": "Вы давно ни во что не играли. Пора это изменить!",
|
||||
"display_name": "Отображаемое имя",
|
||||
@@ -300,7 +355,6 @@
|
||||
"image_process_failure": "Сбой при обработке изображения",
|
||||
"locked_profile": "Этот профиль является частным",
|
||||
"privacy_hint": "Чтобы указать, кто может это видеть, перейдите в <0>Настройки</0>.",
|
||||
"profile_locked": "",
|
||||
"profile_reported": "Профиль сообщил",
|
||||
"report": "Отчет",
|
||||
"report_description": "Дополнительная информация",
|
||||
@@ -313,6 +367,46 @@
|
||||
"report_reason_spam": "Спам",
|
||||
"report_reason_violence": "Насилие",
|
||||
"required_field": "Это поле обязательно к заполнению",
|
||||
"undo_friendship_modal_text": "Это отменит вашу дружбу с {{displayName}}."
|
||||
"undo_friendship_modal_text": "Это отменит вашу дружбу с {{displayName}}.",
|
||||
"your_friend_code": "Код вашего друга:",
|
||||
"upload_banner": "Загрузить баннер",
|
||||
"uploading_banner": "Загрузка баннера...",
|
||||
"background_image_updated": "Фоновое изображение обновлено",
|
||||
"stats": "Статистика",
|
||||
"games": "Игры",
|
||||
"top_percentile": "Топ {{percentile}}%",
|
||||
"ranking_updated_weekly": "Рейтинг обновляется еженедельно",
|
||||
"playing": "Играет в {{game}}",
|
||||
"achievements_unlocked": "Достижения разблокированы",
|
||||
"show_achievements_on_profile": "Покажите свои достижения в профиле",
|
||||
"show_points_on_profile": "Показывать заработанные очки в своем профиле"
|
||||
},
|
||||
"achievement": {
|
||||
"achievement_unlocked": "Достижение разблокировано",
|
||||
"user_achievements": "Достижения {{displayName}}",
|
||||
"your_achievements": "Ваши достижения",
|
||||
"unlocked_at": "Разблокировано: {{date}}",
|
||||
"subscription_needed": "Для просмотра этого содержимого необходима подписка на Hydra Cloud",
|
||||
"new_achievements_unlocked": "Разблокировано {{achievementCount}} новых достижений из {{gameCount}} игр",
|
||||
"achievement_progress": "{{unlockedCount}}/{{totalCount}} достижений",
|
||||
"achievements_unlocked_for_game": "Разблокировано {{achievementCount}} новых достижений для {{gameTitle}}",
|
||||
"hidden_achievement_tooltip": "Это скрытое достижение",
|
||||
"achievement_earn_points": "Заработайте {{points}} очков с этим достижением",
|
||||
"earned_points": "Заработано очков:",
|
||||
"available_points": "Доступные очки:",
|
||||
"how_to_earn_achievements_points": "Как заработать очки достижений?"
|
||||
},
|
||||
"hydra_cloud": {
|
||||
"subscription_tour_title": "Подписка Hydra Cloud",
|
||||
"subscribe_now": "Подпишитесь прямо сейчас",
|
||||
"cloud_saving": "Сохранение в облаке",
|
||||
"cloud_achievements": "Сохраняйте свои достижения в облаке",
|
||||
"animated_profile_picture": "Анимированные фотографии профиля",
|
||||
"premium_support": "Премиальная поддержка",
|
||||
"show_and_compare_achievements": "Показывайте и сравнивайте свои достижения с достижениями других пользователей",
|
||||
"animated_profile_banner": "Анимированный баннер профиля",
|
||||
"hydra_cloud": "Hydra Cloud",
|
||||
"hydra_cloud_feature_found": "Вы только что открыли для себя функцию Hydra Cloud!",
|
||||
"learn_more": "Подробнее"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
"language_name": "Türkçe",
|
||||
"home": {
|
||||
"featured": "Öne çıkan",
|
||||
"trending": "Popüler",
|
||||
"surprise_me": "Şaşırt beni",
|
||||
"no_results": "Sonuç bulunamadı"
|
||||
},
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
},
|
||||
"home": {
|
||||
"featured": "Рекомендоване",
|
||||
"trending": "У тренді",
|
||||
"surprise_me": "Здивуй мене",
|
||||
"no_results": "Результатів не знайдено"
|
||||
},
|
||||
@@ -161,9 +160,6 @@
|
||||
"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": "Посилання на джерело",
|
||||
@@ -235,7 +231,7 @@
|
||||
"sign_out_modal_text": "Ваша бібліотека пов'язана з поточним обліковим записом. При виході з системи ваша бібліотека буде недоступною, і прогрес не буде збережено. Продовжити вихід?",
|
||||
"sign_out_modal_title": "Ви впевнені?",
|
||||
"successfully_signed_out": "Успішний вихід з акаунту",
|
||||
"total_play_time": "Всього зіграно: {{amount}}",
|
||||
"total_play_time": "Всього зіграно",
|
||||
"try_again": "Будь ласка, попробуйте ще раз"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,9 +5,12 @@
|
||||
},
|
||||
"home": {
|
||||
"featured": "特色推荐",
|
||||
"trending": "最近热门",
|
||||
"surprise_me": "向我推荐",
|
||||
"no_results": "没有找到结果"
|
||||
"no_results": "没有找到结果",
|
||||
"start_typing": "键入以开始搜素...",
|
||||
"hot": "当下热门",
|
||||
"weekly": "📅本周热门游戏",
|
||||
"achievements": "🏆尝试击败"
|
||||
},
|
||||
"sidebar": {
|
||||
"catalogue": "游戏目录",
|
||||
@@ -21,7 +24,8 @@
|
||||
"home": "主页",
|
||||
"queued": "{{title}} (已加入下载队列)",
|
||||
"game_has_no_executable": "未选择游戏的可执行文件",
|
||||
"sign_in": "登入"
|
||||
"sign_in": "登入",
|
||||
"friends": "好友"
|
||||
},
|
||||
"header": {
|
||||
"search": "搜索游戏",
|
||||
@@ -37,17 +41,18 @@
|
||||
"no_downloads_in_progress": "没有正在进行的下载",
|
||||
"downloading_metadata": "正在下载{{title}}的元数据…",
|
||||
"downloading": "正在下载{{title}}… ({{percentage}}完成) - 剩余时间{{eta}} - 速度{{speed}}",
|
||||
"calculating_eta": "正在下载 {{title}}… (已完成{{percentage}}.) - 正在计算剩余时间..."
|
||||
"calculating_eta": "正在下载 {{title}}… (已完成{{percentage}}.) - 正在计算剩余时间...",
|
||||
"checking_files": "正在校验 {{title}} 的文件... ({{percentage}} 已完成)"
|
||||
},
|
||||
"catalogue": {
|
||||
"next_page": "下一页",
|
||||
"previous_page": "上一页"
|
||||
},
|
||||
"game_details": {
|
||||
"open_download_options": "打开下载选项",
|
||||
"download_options_zero": "无下载选项",
|
||||
"download_options_one": "{{count}}个下载选项",
|
||||
"download_options_other": "{{count}}个下载选项",
|
||||
"open_download_options": "打开下载菜单",
|
||||
"download_options_zero": "无可下载项",
|
||||
"download_options_one": "{{count}}个可下载项",
|
||||
"download_options_other": "{{count}}个可下载项",
|
||||
"updated_at": "更新于{{updated_at}}",
|
||||
"install": "安装",
|
||||
"resume": "恢复",
|
||||
@@ -56,11 +61,13 @@
|
||||
"remove": "移除",
|
||||
"space_left_on_disk": "磁盘剩余空间{{space}}",
|
||||
"eta": "预计完成时间{{eta}}",
|
||||
"calculating_eta": "正在计算剩余时间…",
|
||||
"downloading_metadata": "正在下载元数据…",
|
||||
"filter": "筛选重打包",
|
||||
"requirements": "配置要求",
|
||||
"minimum": "最低要求",
|
||||
"recommended": "推荐要求",
|
||||
"paused": "已暂停",
|
||||
"release_date": "发布于{{date}}",
|
||||
"publisher": "发行商{{publisher}}",
|
||||
"hours": "小时",
|
||||
@@ -81,15 +88,18 @@
|
||||
"playing_now": "正在游戏中",
|
||||
"change": "更改",
|
||||
"repacks_modal_description": "选择您想要下载的重打包",
|
||||
"select_folder_hint": "要更改默认文件夹,请访问",
|
||||
"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": "选择",
|
||||
"select_executable": "选择可执行文件",
|
||||
"no_executable_selected": "没有可执行文件被指定",
|
||||
"open_folder": "打开目录",
|
||||
"open_download_location": "查看已下载的文件",
|
||||
@@ -108,7 +118,54 @@
|
||||
"download_paused": "下载暂停",
|
||||
"last_downloaded_option": "上次下载的选项",
|
||||
"create_shortcut_success": "成功创建快捷方式",
|
||||
"create_shortcut_error": "创建快捷方式出错"
|
||||
"create_shortcut_error": "创建快捷方式出错",
|
||||
"nsfw_content_title": "本游戏包含不适合展示的内容",
|
||||
"nsfw_content_description": "{{title}}包含可能不适合所有年龄段的内容。您确定要继续吗?",
|
||||
"allow_nsfw_content": "继续",
|
||||
"refuse_nsfw_content": "返回",
|
||||
"stats": "统计数据",
|
||||
"download_count": "下载量",
|
||||
"player_count": "活跃玩家",
|
||||
"download_error": "此下载选项不可用",
|
||||
"download": "下载",
|
||||
"executable_path_in_use": "可执行文件已经被以下游戏 \"{{game}}\" 使用",
|
||||
"warning": "警告:",
|
||||
"hydra_needs_to_remain_open": "对于此次下载,Hydra必须保持开启直至其完成。若海德拉在完成前关闭,您的进度将丢失。",
|
||||
"achievements": "成就",
|
||||
"achievements_count": "成就 {{unlockedCount}}/{{achievementsCount}}",
|
||||
"cloud_save": "云存档",
|
||||
"cloud_save_description": "将您的进度保存在云端,便可在任何设备上继续游戏。",
|
||||
"backups": "备份",
|
||||
"install_backup": "安装",
|
||||
"delete_backup": "删除",
|
||||
"create_backup": "新备份",
|
||||
"last_backup_date": "最后一次备份于{{date}}",
|
||||
"no_backup_preview": "未找到此游戏标题的存档",
|
||||
"restoring_backup": "正在恢复备份({{progress}}已完成)…",
|
||||
"uploading_backup": "上传备份中…",
|
||||
"no_backups": "您尚未为这款游戏创建任何备份",
|
||||
"backup_uploaded": "备份已上传",
|
||||
"backup_deleted": "备份已删除",
|
||||
"backup_restored": "备份已恢复",
|
||||
"see_all_achievements": "查看所有成就",
|
||||
"sign_in_to_see_achievements": "登入以查看所有成就",
|
||||
"mapping_method_automatic": "自动",
|
||||
"mapping_method_manual": "常规",
|
||||
"mapping_method_label": "索引类型",
|
||||
"files_automatically_mapped": "文件已自动索引",
|
||||
"no_backups_created": "没有为此游戏创建过备份",
|
||||
"manage_files": "管理文件",
|
||||
"loading_save_preview": "正在查找要保存的游戏…",
|
||||
"wine_prefix": "Wine 前置",
|
||||
"wine_prefix_description": "运行该游戏所用的 Wine 前置",
|
||||
"no_download_option_info": "无可用信息",
|
||||
"backup_deletion_failed": "删除备份失败",
|
||||
"max_number_of_artifacts_reached": "已达到该游戏备份上限",
|
||||
"achievements_not_sync": "你的成就未同步",
|
||||
"manage_files_description": "管理哪些文件要备份和恢复",
|
||||
"select_folder": "选择文件夹",
|
||||
"backup_from": "{{date}} 时备份",
|
||||
"custom_backup_location_set": "自定义备份文件位置"
|
||||
},
|
||||
"activation": {
|
||||
"title": "激活 Hydra",
|
||||
@@ -125,6 +182,7 @@
|
||||
"paused": "已暂停",
|
||||
"verifying": "正在验证…",
|
||||
"completed": "已完成",
|
||||
"removed": "未下载",
|
||||
"cancel": "取消",
|
||||
"filter": "筛选已下载游戏",
|
||||
"remove": "移除",
|
||||
@@ -139,7 +197,8 @@
|
||||
"downloads_completed": "已完成",
|
||||
"queued": "下载列表",
|
||||
"no_downloads_title": "空空如也",
|
||||
"no_downloads_description": "你还未使用Hydra下载任何游戏,但什么时候开始,都为时不晚。"
|
||||
"no_downloads_description": "你还未使用Hydra下载任何游戏,但什么时候开始,都为时不晚。",
|
||||
"checking_files": "正在校验文件…"
|
||||
},
|
||||
"settings": {
|
||||
"downloads_path": "下载路径",
|
||||
@@ -170,9 +229,6 @@
|
||||
"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": "已更新",
|
||||
@@ -185,21 +241,56 @@
|
||||
"found_download_option_zero": "未找到下载选项",
|
||||
"found_download_option_one": "找到 {{countFormatted}} 个下载选项",
|
||||
"found_download_option_other": "找到 {{countFormatted}} 个下载选项",
|
||||
"import": "导入"
|
||||
"import": "导入",
|
||||
"public": "公开",
|
||||
"private": "私密",
|
||||
"friends_only": "仅限朋友",
|
||||
"privacy": "隐私",
|
||||
"profile_visibility": "资料可见性",
|
||||
"profile_visibility_description": "选择谁可以查看您的个人资料和资料库",
|
||||
"required_field": "该字段为必填字段",
|
||||
"source_already_exists": "已添加此来源",
|
||||
"must_be_valid_url": "来源必须是有效的 URL",
|
||||
"blocked_users": "已屏蔽用户",
|
||||
"user_unblocked": "用户已经被屏蔽",
|
||||
"enable_achievement_notifications": "当成就解锁时"
|
||||
},
|
||||
"modal": {
|
||||
"close": "关闭按钮"
|
||||
"notifications": {
|
||||
"download_complete": "下载完成",
|
||||
"game_ready_to_install": "{{title}} 已准备就绪",
|
||||
"repack_list_updated": "重打包列表已更新",
|
||||
"repack_count_one": "{{count}} 重打包已添加",
|
||||
"repack_count_other": "{{count}} 重打包已添加",
|
||||
"new_update_available": "版本 {{version}} 可用",
|
||||
"restart_to_install_update": "重启 Hydra 以安装更新",
|
||||
"notification_achievement_unlocked_title": "{{game}} 的成绩已解锁",
|
||||
"notification_achievement_unlocked_body": "{{achievement}} 和其他 {{count}} 已解锁"
|
||||
},
|
||||
"system_tray": {
|
||||
"open": "打开 Hydra",
|
||||
"quit": "退出"
|
||||
},
|
||||
"game_card": {
|
||||
"no_downloads": "无可用下载选项"
|
||||
},
|
||||
"binary_not_found_modal": {
|
||||
"title": "程序未安装",
|
||||
"description": "您的系统中找不到 Wine 或 Lutris 的可执行文件",
|
||||
"instructions": "请检查在 Linux 发行版上安装这些软件的正确方法,以便游戏能够正常运行"
|
||||
},
|
||||
"forms": {
|
||||
"toggle_password_visibility": "切换密码可见性"
|
||||
},
|
||||
"modal": {
|
||||
"close": "关闭按钮"
|
||||
},
|
||||
"user_profile": {
|
||||
"amount_hours": "{{amount}} 小时",
|
||||
"amount_minutes": "{{amount}} 分钟",
|
||||
"last_time_played": "上次游玩时间 {{period}}",
|
||||
"activity": "近期活动",
|
||||
"library": "库",
|
||||
"total_play_time": "总游戏时长: {{amount}}",
|
||||
"total_play_time": "总游戏时长",
|
||||
"no_recent_activity_title": "Emmm… 这里暂时啥都没有",
|
||||
"no_recent_activity_description": "你最近没玩过任何游戏。是时候做出改变了!",
|
||||
"display_name": "昵称",
|
||||
@@ -212,7 +303,74 @@
|
||||
"cancel": "取消",
|
||||
"successfully_signed_out": "登出成功",
|
||||
"sign_out": "登出",
|
||||
"playing_for": "Playing for {{amount}}",
|
||||
"sign_out_modal_text": "您的资料库与您当前的账户相关联。注销后,您的资料库将不再可见,任何进度也不会保存。继续退出吗?"
|
||||
"playing_for": "已经玩了{{amount}}",
|
||||
"sign_out_modal_text": "您的资料库与您当前的账户相关联。注销后,您的资料库将不再可见,任何进度也不会保存。继续退出吗?",
|
||||
"add_friends": "添加好友",
|
||||
"add": "添加",
|
||||
"friend_code": "好友代码",
|
||||
"see_profile": "查看资料",
|
||||
"sending": "发送中",
|
||||
"friend_request_sent": "好友请求已发送",
|
||||
"friends": "好友",
|
||||
"friends_list": "好友列表",
|
||||
"user_not_found": "未找到此用户",
|
||||
"block_user": "屏蔽此用户",
|
||||
"add_friend": "添加好友",
|
||||
"request_sent": "请求已发送",
|
||||
"request_received": "已收到请求",
|
||||
"accept_request": "同意申请",
|
||||
"ignore_request": "忽略申请",
|
||||
"cancel_request": "取消申请",
|
||||
"undo_friendship": "解除好友关系",
|
||||
"request_accepted": "请求已通过",
|
||||
"user_blocked_successfully": "成功屏蔽此用户",
|
||||
"user_block_modal_text": "这将会屏蔽 {{displayName}}",
|
||||
"blocked_users": "黑名单用户",
|
||||
"unblock": "解除屏蔽",
|
||||
"no_friends_added": "你还没有添加过好友",
|
||||
"pending": "待处理",
|
||||
"no_pending_invites": "您没有待处理的邀请",
|
||||
"no_blocked_users": "你没有已经拉人黑名单的用户",
|
||||
"friend_code_copied": "好友代码已复制",
|
||||
"undo_friendship_modal_text": "这将使你与 {{displayName}} 解除好友关系",
|
||||
"privacy_hint": "要调整谁可以看到你的个人资料,可以去<0>设置</0>中修改",
|
||||
"locked_profile": "此个人资料是私密的",
|
||||
"image_process_failure": "处理图片时发生错误",
|
||||
"required_field": "此字段为必填项",
|
||||
"displayname_min_length": "显示名称最少必须为3个字符。",
|
||||
"displayname_max_length": "显示名称最多必须为50个字符",
|
||||
"report_profile": "举报此资料",
|
||||
"report_reason": "为什么你要举报此资料?",
|
||||
"report_description": "额外信息",
|
||||
"report_description_placeholder": "额外信息",
|
||||
"report": "举报",
|
||||
"report_reason_hate": "Hate speech",
|
||||
"report_reason_sexual_content": "色情内容",
|
||||
"report_reason_violence": "暴力",
|
||||
"report_reason_spam": "骚扰",
|
||||
"report_reason_other": "其他",
|
||||
"profile_reported": "个人资料已举报",
|
||||
"your_friend_code": "你的好友代码:",
|
||||
"upload_banner": "上传横幅",
|
||||
"uploading_banner": "上传横幅中…",
|
||||
"background_image_updated": "背景图片已更新"
|
||||
},
|
||||
"achievement": {
|
||||
"achievement_unlocked": "成就已解锁",
|
||||
"user_achievements": "{{displayName}}的成就",
|
||||
"your_achievements": "你的成就",
|
||||
"unlocked_at": "解锁于: {{date}}",
|
||||
"subscription_needed": "需要订阅 Hydra Cloud 才能看到此内容",
|
||||
"new_achievements_unlocked": "从 {{gameCount}} 游戏中解锁 {{achievementCount}} 新成就"
|
||||
},
|
||||
"hydra_cloud": {
|
||||
"subscription_tour_title": "Hydra 云订阅",
|
||||
"subscribe_now": "现在订购",
|
||||
"cloud_saving": "云存档",
|
||||
"cloud_achievements": "将你的成就保存至云端",
|
||||
"animated_profile_picture": "动画头像",
|
||||
"premium_support": "高级技术支持",
|
||||
"show_and_compare_achievements": "展示并与其他用户比较您的成就",
|
||||
"animated_profile_banner": "动态个人简介横幅"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,28 @@
|
||||
import { app } from "electron";
|
||||
import path from "node:path";
|
||||
|
||||
export const LUDUSAVI_MANIFEST_URL = "https://cdn.losbroxas.org/manifest.yaml";
|
||||
|
||||
export const defaultDownloadsPath = app.getPath("downloads");
|
||||
|
||||
export const isStaging = import.meta.env.MAIN_VITE_API_URL.includes("staging");
|
||||
|
||||
export const databaseDirectory = path.join(app.getPath("appData"), "hydra");
|
||||
export const databasePath = path.join(databaseDirectory, "hydra.db");
|
||||
export const databasePath = path.join(
|
||||
databaseDirectory,
|
||||
isStaging ? "hydra_test.db" : "hydra.db"
|
||||
);
|
||||
|
||||
export const logsPath = path.join(app.getPath("appData"), "hydra", "logs");
|
||||
|
||||
export const seedsPath = app.isPackaged
|
||||
? path.join(process.resourcesPath, "seeds")
|
||||
: path.join(__dirname, "..", "..", "seeds");
|
||||
|
||||
export const achievementSoundPath = app.isPackaged
|
||||
? path.join(process.resourcesPath, "achievement.wav")
|
||||
: path.join(__dirname, "..", "..", "resources", "achievement.wav");
|
||||
|
||||
export const backupsPath = path.join(app.getPath("userData"), "Backups");
|
||||
|
||||
export const appVersion = app.getVersion() + (isStaging ? "-staging" : "");
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { DataSource } from "typeorm";
|
||||
import {
|
||||
DownloadQueue,
|
||||
DownloadSource,
|
||||
Game,
|
||||
GameShopCache,
|
||||
Repack,
|
||||
UserPreferences,
|
||||
UserAuth,
|
||||
GameAchievement,
|
||||
UserSubscription,
|
||||
} from "@main/entity";
|
||||
|
||||
import { databasePath } from "./constants";
|
||||
@@ -15,12 +15,12 @@ export const dataSource = new DataSource({
|
||||
type: "better-sqlite3",
|
||||
entities: [
|
||||
Game,
|
||||
Repack,
|
||||
UserPreferences,
|
||||
GameShopCache,
|
||||
DownloadSource,
|
||||
DownloadQueue,
|
||||
UserAuth,
|
||||
UserPreferences,
|
||||
UserSubscription,
|
||||
GameShopCache,
|
||||
DownloadQueue,
|
||||
GameAchievement,
|
||||
],
|
||||
synchronize: false,
|
||||
database: databasePath,
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
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;
|
||||
}
|
||||
19
src/main/entity/game-achievements.entity.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
|
||||
|
||||
@Entity("game_achievement")
|
||||
export class GameAchievement {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@Column("text")
|
||||
objectId: string;
|
||||
|
||||
@Column("text")
|
||||
shop: string;
|
||||
|
||||
@Column("text", { nullable: true })
|
||||
unlockedAchievements: string | null;
|
||||
|
||||
@Column("text", { nullable: true })
|
||||
achievements: string | null;
|
||||
}
|
||||
@@ -18,6 +18,9 @@ export class GameShopCache {
|
||||
@Column("text", { nullable: true })
|
||||
serializedData: string;
|
||||
|
||||
/**
|
||||
* @deprecated Use IndexedDB's `howLongToBeatEntries` instead
|
||||
*/
|
||||
@Column("text", { nullable: true })
|
||||
howLongToBeatSerializedData: string;
|
||||
|
||||
|
||||
@@ -5,9 +5,7 @@ import {
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
OneToOne,
|
||||
JoinColumn,
|
||||
} from "typeorm";
|
||||
import { Repack } from "./repack.entity";
|
||||
|
||||
import type { GameShop, GameStatus } from "@types";
|
||||
import { Downloader } from "@shared";
|
||||
@@ -39,6 +37,12 @@ export class Game {
|
||||
@Column("text", { nullable: true })
|
||||
executablePath: string | null;
|
||||
|
||||
@Column("text", { nullable: true })
|
||||
launchOptions: string | null;
|
||||
|
||||
@Column("text", { nullable: true })
|
||||
winePrefixPath: string | null;
|
||||
|
||||
@Column("int", { default: 0 })
|
||||
playTimeInMilliseconds: number;
|
||||
|
||||
@@ -69,19 +73,15 @@ export class Game {
|
||||
@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;
|
||||
|
||||
@Column("boolean", { default: false })
|
||||
shouldSeed: boolean;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
export * from "./game.entity";
|
||||
export * from "./repack.entity";
|
||||
export * from "./user-auth.entity";
|
||||
export * from "./user-preferences.entity";
|
||||
export * from "./user-subscription.entity";
|
||||
export * from "./game-shop-cache.entity";
|
||||
export * from "./download-source.entity";
|
||||
export * from "./game.entity";
|
||||
export * from "./game-achievements.entity";
|
||||
export * from "./download-queue.entity";
|
||||
export * from "./user-auth";
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
import {
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
ManyToOne,
|
||||
} from "typeorm";
|
||||
import { DownloadSource } from "./download-source.entity";
|
||||
|
||||
@Entity("repack")
|
||||
export class Repack {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@Column("text", { unique: true })
|
||||
title: string;
|
||||
|
||||
/**
|
||||
* @deprecated Use uris instead
|
||||
*/
|
||||
@Column("text", { unique: true })
|
||||
magnet: string;
|
||||
|
||||
@Column("text")
|
||||
repacker: string;
|
||||
|
||||
@Column("text")
|
||||
fileSize: string;
|
||||
|
||||
@Column("datetime")
|
||||
uploadDate: Date | string;
|
||||
|
||||
@ManyToOne(() => DownloadSource, { nullable: true, onDelete: "CASCADE" })
|
||||
downloadSource: DownloadSource;
|
||||
|
||||
@Column("text", { default: "[]" })
|
||||
uris: string;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@UpdateDateColumn()
|
||||
updatedAt: Date;
|
||||
}
|
||||
@@ -4,7 +4,9 @@ import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
OneToOne,
|
||||
} from "typeorm";
|
||||
import { UserSubscription } from "./user-subscription.entity";
|
||||
|
||||
@Entity("user_auth")
|
||||
export class UserAuth {
|
||||
@@ -20,6 +22,9 @@ export class UserAuth {
|
||||
@Column("text", { nullable: true })
|
||||
profileImageUrl: string | null;
|
||||
|
||||
@Column("text", { nullable: true })
|
||||
backgroundImageUrl: string | null;
|
||||
|
||||
@Column("text", { default: "" })
|
||||
accessToken: string;
|
||||
|
||||
@@ -29,6 +34,9 @@ export class UserAuth {
|
||||
@Column("int", { default: 0 })
|
||||
tokenExpirationTimestamp: number;
|
||||
|
||||
@OneToOne("UserSubscription", "user")
|
||||
subscription: UserSubscription | null;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@@ -26,12 +26,27 @@ export class UserPreferences {
|
||||
@Column("boolean", { default: false })
|
||||
repackUpdatesNotificationsEnabled: boolean;
|
||||
|
||||
@Column("boolean", { default: true })
|
||||
achievementNotificationsEnabled: boolean;
|
||||
|
||||
@Column("boolean", { default: false })
|
||||
preferQuitInsteadOfHiding: boolean;
|
||||
|
||||
@Column("boolean", { default: false })
|
||||
runAtStartup: boolean;
|
||||
|
||||
@Column("boolean", { default: false })
|
||||
startMinimized: boolean;
|
||||
|
||||
@Column("boolean", { default: false })
|
||||
disableNsfwAlert: boolean;
|
||||
|
||||
@Column("boolean", { default: true })
|
||||
seedAfterDownloadComplete: boolean;
|
||||
|
||||
@Column("boolean", { default: false })
|
||||
showHiddenAchievementsDescription: boolean;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
|
||||
42
src/main/entity/user-subscription.entity.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import type { SubscriptionStatus } from "@types";
|
||||
import {
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
OneToOne,
|
||||
JoinColumn,
|
||||
} from "typeorm";
|
||||
import { UserAuth } from "./user-auth.entity";
|
||||
|
||||
@Entity("user_subscription")
|
||||
export class UserSubscription {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@Column("text", { default: "" })
|
||||
subscriptionId: string;
|
||||
|
||||
@OneToOne("UserAuth", "subscription")
|
||||
@JoinColumn()
|
||||
user: UserAuth;
|
||||
|
||||
@Column("text", { default: "" })
|
||||
status: SubscriptionStatus;
|
||||
|
||||
@Column("text", { default: "" })
|
||||
planId: string;
|
||||
|
||||
@Column("text", { default: "" })
|
||||
planName: string;
|
||||
|
||||
@Column("datetime", { nullable: true })
|
||||
expiresAt: Date | null;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@UpdateDateColumn()
|
||||
updatedAt: Date;
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
import jwt from "jsonwebtoken";
|
||||
import * as Sentry from "@sentry/electron/main";
|
||||
|
||||
import { userAuthRepository } from "@main/repository";
|
||||
import { registerEvent } from "../register-event";
|
||||
@@ -10,8 +9,6 @@ const getSessionHash = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
if (!auth) return null;
|
||||
const payload = jwt.decode(auth.accessToken) as jwt.JwtPayload;
|
||||
|
||||
Sentry.setContext("sessionId", payload.sessionId);
|
||||
|
||||
return payload.sessionId;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
import { registerEvent } from "../register-event";
|
||||
import * as Sentry from "@sentry/electron/main";
|
||||
import {
|
||||
DownloadManager,
|
||||
HydraApi,
|
||||
PythonInstance,
|
||||
gamesPlaytime,
|
||||
} from "@main/services";
|
||||
import { DownloadManager, HydraApi, gamesPlaytime } from "@main/services";
|
||||
import { dataSource } from "@main/data-source";
|
||||
import { DownloadQueue, Game, UserAuth } from "@main/entity";
|
||||
import { DownloadQueue, Game, UserAuth, UserSubscription } from "@main/entity";
|
||||
import { PythonRPC } from "@main/services/python-rpc";
|
||||
|
||||
const signOut = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
const databaseOperations = dataSource
|
||||
@@ -19,20 +14,21 @@ const signOut = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
await transactionalEntityManager
|
||||
.getRepository(UserAuth)
|
||||
.delete({ id: 1 });
|
||||
|
||||
await transactionalEntityManager
|
||||
.getRepository(UserSubscription)
|
||||
.delete({ id: 1 });
|
||||
})
|
||||
.then(() => {
|
||||
/* Removes all games being played */
|
||||
gamesPlaytime.clear();
|
||||
});
|
||||
|
||||
/* Removes user from Sentry */
|
||||
Sentry.setUser(null);
|
||||
|
||||
/* Cancels any ongoing downloads */
|
||||
DownloadManager.cancelDownload();
|
||||
|
||||
/* Disconnects libtorrent */
|
||||
PythonInstance.killTorrent();
|
||||
PythonRPC.kill();
|
||||
|
||||
HydraApi.handleSignOut();
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { AppUpdaterEvent } from "@types";
|
||||
import type { AppUpdaterEvent } from "@types";
|
||||
import { registerEvent } from "../register-event";
|
||||
import updater, { UpdateInfo } from "electron-updater";
|
||||
import { WindowManager } from "@main/services";
|
||||
|
||||
@@ -7,7 +7,7 @@ const { autoUpdater } = updater;
|
||||
const restartAndInstallUpdate = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
autoUpdater.removeAllListeners();
|
||||
if (app.isPackaged) {
|
||||
autoUpdater.quitAndInstall(true, true);
|
||||
autoUpdater.quitAndInstall(false);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
import type { GameShop } from "@types";
|
||||
|
||||
import { registerEvent } from "../register-event";
|
||||
import { HydraApi, RepacksManager } from "@main/services";
|
||||
import { CatalogueCategory, formatName, steamUrlBuilder } from "@shared";
|
||||
import { steamGamesWorker } from "@main/workers";
|
||||
import { HydraApi } from "@main/services";
|
||||
import { CatalogueCategory } from "@shared";
|
||||
|
||||
const getCatalogue = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
@@ -14,31 +11,11 @@ const getCatalogue = async (
|
||||
skip: "0",
|
||||
});
|
||||
|
||||
const response = await HydraApi.get<{ objectId: string; shop: GameShop }[]>(
|
||||
`/games/${category}?${params.toString()}`,
|
||||
return HydraApi.get(
|
||||
`/catalogue/${category}?${params.toString()}`,
|
||||
{},
|
||||
{ needsAuth: false }
|
||||
);
|
||||
|
||||
return Promise.all(
|
||||
response.map(async (game) => {
|
||||
const steamGame = await steamGamesWorker.run(Number(game.objectId), {
|
||||
name: "getById",
|
||||
});
|
||||
|
||||
const repacks = RepacksManager.search({
|
||||
query: formatName(steamGame.name),
|
||||
});
|
||||
|
||||
return {
|
||||
title: steamGame.name,
|
||||
shop: game.shop,
|
||||
repacks,
|
||||
cover: steamUrlBuilder.library(game.objectId),
|
||||
objectID: game.objectId,
|
||||
};
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
registerEvent("getCatalogue", getCatalogue);
|
||||
|
||||
10
src/main/events/catalogue/get-developers.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { HydraApi } from "@main/services";
|
||||
import { registerEvent } from "../register-event";
|
||||
|
||||
const getDevelopers = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
return HydraApi.get<string[]>(`/catalogue/developers`, null, {
|
||||
needsAuth: false,
|
||||
});
|
||||
};
|
||||
|
||||
registerEvent("getDevelopers", getDevelopers);
|
||||
@@ -7,16 +7,16 @@ import { registerEvent } from "../register-event";
|
||||
import { steamGamesWorker } from "@main/workers";
|
||||
|
||||
const getLocalizedSteamAppDetails = async (
|
||||
objectID: string,
|
||||
objectId: string,
|
||||
language: string
|
||||
): Promise<ShopDetails | null> => {
|
||||
if (language === "english") {
|
||||
return getSteamAppDetails(objectID, language);
|
||||
return getSteamAppDetails(objectId, language);
|
||||
}
|
||||
|
||||
return getSteamAppDetails(objectID, language).then(
|
||||
return getSteamAppDetails(objectId, language).then(
|
||||
async (localizedAppDetails) => {
|
||||
const steamGame = await steamGamesWorker.run(Number(objectID), {
|
||||
const steamGame = await steamGamesWorker.run(Number(objectId), {
|
||||
name: "getById",
|
||||
});
|
||||
|
||||
@@ -34,26 +34,28 @@ const getLocalizedSteamAppDetails = async (
|
||||
|
||||
const getGameShopDetails = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
objectID: string,
|
||||
objectId: string,
|
||||
shop: GameShop,
|
||||
language: string
|
||||
): Promise<ShopDetails | null> => {
|
||||
if (shop === "steam") {
|
||||
const cachedData = await gameShopCacheRepository.findOne({
|
||||
where: { objectID, language },
|
||||
where: { objectID: objectId, language },
|
||||
});
|
||||
|
||||
const appDetails = getLocalizedSteamAppDetails(objectID, language).then(
|
||||
const appDetails = getLocalizedSteamAppDetails(objectId, language).then(
|
||||
(result) => {
|
||||
gameShopCacheRepository.upsert(
|
||||
{
|
||||
objectID,
|
||||
shop: "steam",
|
||||
language,
|
||||
serializedData: JSON.stringify(result),
|
||||
},
|
||||
["objectID"]
|
||||
);
|
||||
if (result) {
|
||||
gameShopCacheRepository.upsert(
|
||||
{
|
||||
objectID: objectId,
|
||||
shop: "steam",
|
||||
language,
|
||||
serializedData: JSON.stringify(result),
|
||||
},
|
||||
["objectID"]
|
||||
);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -66,7 +68,7 @@ const getGameShopDetails = async (
|
||||
if (cachedGame) {
|
||||
return {
|
||||
...cachedGame,
|
||||
objectID,
|
||||
objectId,
|
||||
} as ShopDetails;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,23 +1,17 @@
|
||||
import type { GameShop } from "@types";
|
||||
|
||||
import type { GameShop, GameStats } from "@types";
|
||||
import { registerEvent } from "../register-event";
|
||||
import { HydraApi } from "@main/services";
|
||||
import type { GameStats } from "@types";
|
||||
|
||||
const getGameStats = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
objectId: string,
|
||||
shop: GameShop
|
||||
) => {
|
||||
const params = new URLSearchParams({
|
||||
objectId,
|
||||
shop,
|
||||
});
|
||||
|
||||
const response = await HydraApi.get<GameStats>(
|
||||
`/games/stats?${params.toString()}`
|
||||
return HydraApi.get<GameStats>(
|
||||
`/games/stats`,
|
||||
{ objectId, shop },
|
||||
{ needsAuth: false }
|
||||
);
|
||||
return response;
|
||||
};
|
||||
|
||||
registerEvent("getGameStats", getGameStats);
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
import type { CatalogueEntry } from "@types";
|
||||
|
||||
import { registerEvent } from "../register-event";
|
||||
import { steamGamesWorker } from "@main/workers";
|
||||
import { convertSteamGameToCatalogueEntry } from "../helpers/search-games";
|
||||
import { RepacksManager } from "@main/services";
|
||||
|
||||
const getGames = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
take = 12,
|
||||
cursor = 0
|
||||
): Promise<{ results: CatalogueEntry[]; cursor: number }> => {
|
||||
const steamGames = await steamGamesWorker.run(
|
||||
{ limit: take, offset: cursor },
|
||||
{ name: "list" }
|
||||
);
|
||||
|
||||
const entries = RepacksManager.findRepacksForCatalogueEntries(
|
||||
steamGames.map((game) => convertSteamGameToCatalogueEntry(game))
|
||||
);
|
||||
|
||||
return {
|
||||
results: entries,
|
||||
cursor: cursor + entries.length,
|
||||
};
|
||||
};
|
||||
|
||||
registerEvent("getGames", getGames);
|
||||
@@ -1,44 +1,20 @@
|
||||
import type { GameShop, HowLongToBeatCategory } from "@types";
|
||||
import { getHowLongToBeatGame, searchHowLongToBeat } from "@main/services";
|
||||
|
||||
import { registerEvent } from "../register-event";
|
||||
import { gameShopCacheRepository } from "@main/repository";
|
||||
import { HydraApi } from "@main/services";
|
||||
|
||||
const getHowLongToBeat = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
objectID: string,
|
||||
shop: GameShop,
|
||||
title: string
|
||||
objectId: string,
|
||||
shop: GameShop
|
||||
): Promise<HowLongToBeatCategory[] | null> => {
|
||||
const searchHowLongToBeatPromise = searchHowLongToBeat(title);
|
||||
|
||||
const gameShopCache = await gameShopCacheRepository.findOne({
|
||||
where: { objectID, shop },
|
||||
const params = new URLSearchParams({
|
||||
objectId,
|
||||
shop,
|
||||
});
|
||||
|
||||
const howLongToBeatCachedData = gameShopCache?.howLongToBeatSerializedData
|
||||
? JSON.parse(gameShopCache?.howLongToBeatSerializedData)
|
||||
: null;
|
||||
if (howLongToBeatCachedData) return howLongToBeatCachedData;
|
||||
|
||||
return searchHowLongToBeatPromise.then(async (response) => {
|
||||
const game = response.data.find(
|
||||
(game) => game.profile_steam === Number(objectID)
|
||||
);
|
||||
|
||||
if (!game) return null;
|
||||
const howLongToBeat = await getHowLongToBeatGame(String(game.game_id));
|
||||
|
||||
gameShopCacheRepository.upsert(
|
||||
{
|
||||
objectID,
|
||||
shop,
|
||||
howLongToBeatSerializedData: JSON.stringify(howLongToBeat),
|
||||
},
|
||||
["objectID"]
|
||||
);
|
||||
|
||||
return howLongToBeat;
|
||||
return HydraApi.get(`/games/how-long-to-beat?${params.toString()}`, null, {
|
||||
needsAuth: false,
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
10
src/main/events/catalogue/get-publishers.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { HydraApi } from "@main/services";
|
||||
import { registerEvent } from "../register-event";
|
||||
|
||||
const getPublishers = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
return HydraApi.get<string[]>(`/catalogue/publishers`, null, {
|
||||
needsAuth: false,
|
||||
});
|
||||
};
|
||||
|
||||
registerEvent("getPublishers", getPublishers);
|
||||
@@ -3,32 +3,15 @@ import { shuffle } from "lodash-es";
|
||||
import { getSteam250List } from "@main/services";
|
||||
|
||||
import { registerEvent } from "../register-event";
|
||||
import { getSteamGameById } from "../helpers/search-games";
|
||||
import type { Steam250Game } from "@types";
|
||||
|
||||
const state = { games: Array<Steam250Game>(), index: 0 };
|
||||
|
||||
const filterGames = async (games: Steam250Game[]) => {
|
||||
const results: Steam250Game[] = [];
|
||||
|
||||
for (const game of games) {
|
||||
const steamGame = await getSteamGameById(game.objectID);
|
||||
|
||||
if (steamGame?.repacks.length) {
|
||||
results.push(game);
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
};
|
||||
|
||||
const getRandomGame = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
if (state.games.length == 0) {
|
||||
const steam250List = await getSteam250List();
|
||||
|
||||
const filteredSteam250List = await filterGames(steam250List);
|
||||
|
||||
state.games = shuffle(filteredSteam250List);
|
||||
state.games = shuffle(steam250List);
|
||||
}
|
||||
|
||||
if (state.games.length == 0) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { registerEvent } from "../register-event";
|
||||
import { HydraApi } from "@main/services";
|
||||
import { userPreferencesRepository } from "@main/repository";
|
||||
import { TrendingGame } from "@types";
|
||||
import type { TrendingGame } from "@types";
|
||||
|
||||
const getTrendingGames = async (_event: Electron.IpcMainInvokeEvent) => {
|
||||
const userPreferences = await userPreferencesRepository.findOne({
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
import { RepacksManager } from "@main/services";
|
||||
import { registerEvent } from "../register-event";
|
||||
|
||||
const searchGameRepacks = (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
query: string
|
||||
) => RepacksManager.search({ query });
|
||||
|
||||
registerEvent("searchGameRepacks", searchGameRepacks);
|
||||
@@ -1,25 +1,18 @@
|
||||
import type { CatalogueSearchPayload } from "@types";
|
||||
import { registerEvent } from "../register-event";
|
||||
import { convertSteamGameToCatalogueEntry } from "../helpers/search-games";
|
||||
import { CatalogueEntry } from "@types";
|
||||
import { HydraApi, RepacksManager } from "@main/services";
|
||||
import { HydraApi } from "@main/services";
|
||||
|
||||
const searchGamesEvent = async (
|
||||
const searchGames = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
query: string
|
||||
): Promise<CatalogueEntry[]> => {
|
||||
const games = await HydraApi.get<
|
||||
{ objectId: string; title: string; shop: string }[]
|
||||
>("/games/search", { title: query, take: 12, skip: 0 }, { needsAuth: false });
|
||||
|
||||
const steamGames = games.map((game) => {
|
||||
return convertSteamGameToCatalogueEntry({
|
||||
id: Number(game.objectId),
|
||||
name: game.title,
|
||||
clientIcon: null,
|
||||
});
|
||||
});
|
||||
|
||||
return RepacksManager.findRepacksForCatalogueEntries(steamGames);
|
||||
payload: CatalogueSearchPayload,
|
||||
take: number,
|
||||
skip: number
|
||||
) => {
|
||||
return HydraApi.post(
|
||||
"/catalogue/search",
|
||||
{ ...payload, take, skip },
|
||||
{ needsAuth: false }
|
||||
);
|
||||
};
|
||||
|
||||
registerEvent("searchGames", searchGamesEvent);
|
||||
registerEvent("searchGames", searchGames);
|
||||
|
||||
12
src/main/events/cloud-save/delete-game-artifact.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { HydraApi } from "@main/services";
|
||||
import { registerEvent } from "../register-event";
|
||||
|
||||
const deleteGameArtifact = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
gameArtifactId: string
|
||||
) =>
|
||||
HydraApi.delete<{ ok: boolean }>(
|
||||
`/profile/games/artifacts/${gameArtifactId}`
|
||||
);
|
||||
|
||||
registerEvent("deleteGameArtifact", deleteGameArtifact);
|
||||
147
src/main/events/cloud-save/download-game-artifact.ts
Normal file
@@ -0,0 +1,147 @@
|
||||
import { HydraApi, logger, Ludusavi, WindowManager } from "@main/services";
|
||||
import fs from "node:fs";
|
||||
import * as tar from "tar";
|
||||
import { registerEvent } from "../register-event";
|
||||
import axios from "axios";
|
||||
import os from "node:os";
|
||||
import { app } from "electron";
|
||||
import path from "node:path";
|
||||
import { backupsPath } from "@main/constants";
|
||||
import type { GameShop } from "@types";
|
||||
|
||||
import YAML from "yaml";
|
||||
import { normalizePath } from "@main/helpers";
|
||||
|
||||
export interface LudusaviBackup {
|
||||
files: {
|
||||
[key: string]: {
|
||||
hash: string;
|
||||
size: number;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
const replaceLudusaviBackupWithCurrentUser = (
|
||||
backupPath: string,
|
||||
title: string,
|
||||
homeDir: string
|
||||
) => {
|
||||
const gameBackupPath = path.join(backupPath, title);
|
||||
const mappingYamlPath = path.join(gameBackupPath, "mapping.yaml");
|
||||
|
||||
const data = fs.readFileSync(mappingYamlPath, "utf8");
|
||||
const manifest = YAML.parse(data) as {
|
||||
backups: LudusaviBackup[];
|
||||
drives: Record<string, string>;
|
||||
};
|
||||
|
||||
const currentHomeDir = normalizePath(app.getPath("home"));
|
||||
|
||||
/* Renaming logic */
|
||||
if (os.platform() === "win32") {
|
||||
const mappedHomeDir = path.join(
|
||||
gameBackupPath,
|
||||
path.join("drive-C", homeDir.replace("C:", ""))
|
||||
);
|
||||
|
||||
if (fs.existsSync(mappedHomeDir)) {
|
||||
fs.renameSync(
|
||||
mappedHomeDir,
|
||||
path.join(gameBackupPath, "drive-C", currentHomeDir.replace("C:", ""))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const backups = manifest.backups.map((backup: LudusaviBackup) => {
|
||||
const files = Object.entries(backup.files).reduce((prev, [key, value]) => {
|
||||
const updatedKey = key.replace(homeDir, currentHomeDir);
|
||||
|
||||
return {
|
||||
...prev,
|
||||
[updatedKey]: value,
|
||||
};
|
||||
}, {});
|
||||
|
||||
return {
|
||||
...backup,
|
||||
files,
|
||||
};
|
||||
});
|
||||
|
||||
fs.writeFileSync(mappingYamlPath, YAML.stringify({ ...manifest, backups }));
|
||||
};
|
||||
|
||||
const downloadGameArtifact = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
objectId: string,
|
||||
shop: GameShop,
|
||||
gameArtifactId: string
|
||||
) => {
|
||||
try {
|
||||
const { downloadUrl, objectKey, homeDir } = await HydraApi.post<{
|
||||
downloadUrl: string;
|
||||
objectKey: string;
|
||||
homeDir: string;
|
||||
}>(`/profile/games/artifacts/${gameArtifactId}/download`);
|
||||
|
||||
const zipLocation = path.join(app.getPath("userData"), objectKey);
|
||||
const backupPath = path.join(backupsPath, `${shop}-${objectId}`);
|
||||
|
||||
if (fs.existsSync(backupPath)) {
|
||||
fs.rmSync(backupPath, {
|
||||
recursive: true,
|
||||
force: true,
|
||||
});
|
||||
}
|
||||
|
||||
const response = await axios.get(downloadUrl, {
|
||||
responseType: "stream",
|
||||
onDownloadProgress: (progressEvent) => {
|
||||
WindowManager.mainWindow?.webContents.send(
|
||||
`on-backup-download-progress-${objectId}-${shop}`,
|
||||
progressEvent
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
const writer = fs.createWriteStream(zipLocation);
|
||||
|
||||
response.data.pipe(writer);
|
||||
|
||||
writer.on("error", (err) => {
|
||||
logger.error("Failed to write zip", err);
|
||||
throw err;
|
||||
});
|
||||
|
||||
fs.mkdirSync(backupPath, { recursive: true });
|
||||
|
||||
writer.on("close", () => {
|
||||
tar
|
||||
.x({
|
||||
file: zipLocation,
|
||||
cwd: backupPath,
|
||||
})
|
||||
.then(async () => {
|
||||
replaceLudusaviBackupWithCurrentUser(
|
||||
backupPath,
|
||||
objectId,
|
||||
normalizePath(homeDir)
|
||||
);
|
||||
|
||||
Ludusavi.restoreBackup(backupPath).then(() => {
|
||||
WindowManager.mainWindow?.webContents.send(
|
||||
`on-backup-download-complete-${objectId}-${shop}`,
|
||||
true
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
} catch (err) {
|
||||
WindowManager.mainWindow?.webContents.send(
|
||||
`on-backup-download-complete-${objectId}-${shop}`,
|
||||
false
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
registerEvent("downloadGameArtifact", downloadGameArtifact);
|
||||
29
src/main/events/cloud-save/get-game-artifacts.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { HydraApi } from "@main/services";
|
||||
import { registerEvent } from "../register-event";
|
||||
import type { GameArtifact, GameShop } from "@types";
|
||||
import { SubscriptionRequiredError } from "@shared";
|
||||
|
||||
const getGameArtifacts = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
objectId: string,
|
||||
shop: GameShop
|
||||
) => {
|
||||
const params = new URLSearchParams({
|
||||
objectId,
|
||||
shop,
|
||||
});
|
||||
|
||||
return HydraApi.get<GameArtifact[]>(
|
||||
`/profile/games/artifacts?${params.toString()}`,
|
||||
{},
|
||||
{ needsSubscription: true }
|
||||
).catch((err) => {
|
||||
if (err instanceof SubscriptionRequiredError) {
|
||||
return [];
|
||||
}
|
||||
|
||||
throw err;
|
||||
});
|
||||
};
|
||||
|
||||
registerEvent("getGameArtifacts", getGameArtifacts);
|
||||