Compare commits

...

728 Commits

Author SHA1 Message Date
Zamitto
1f000ab2b2 Merge pull request #1349 from Lianela/main
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
feat: spanish translation updated
2024-12-25 23:14:26 -03:00
Lianela
d6bd0ec221 feat: profile strings 2024-12-25 18:52:56 -06:00
Lianela
a9f8d1b42c feat: spanish translation updated
added seeding strings, updated hydra cloud and achievements strings, fixed mistake from previous commits
2024-12-25 18:38:38 -06:00
Zamitto
83e662f633 Merge pull request #1335 from hydrasources/patch-1
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
Update README.uk-UA.md
2024-12-24 16:19:47 -03:00
Zamitto
c7b924bf2f Merge pull request #1336 from hydrasources/patch-2
Update README.be.md
2024-12-24 16:19:30 -03:00
Zamitto
e0d69ccf9d Merge pull request #1337 from hydrasources/patch-3
Update README.es.md
2024-12-24 16:12:19 -03:00
Zamitto
aa4e71076d Merge pull request #1338 from hydrasources/patch-4
Update README.fr.md
2024-12-24 16:11:14 -03:00
Zamitto
eccff27739 Merge pull request #1339 from hydrasources/patch-5
Update README.de.md
2024-12-24 16:10:53 -03:00
Zamitto
601b3b0a00 Merge pull request #1340 from hydrasources/patch-6
Update README.cs.md
2024-12-24 16:10:08 -03:00
Zamitto
1ceea5d5a3 Merge pull request #1341 from hydrasources/patch-7
Update README.da.md
2024-12-24 16:09:50 -03:00
Zamitto
9c99724e7d Merge pull request #1342 from hydrasources/patch-8
Update README.nb.md
2024-12-24 16:06:29 -03:00
Zamitto
55e0f42702 Merge pull request #1343 from hydrasources/patch-9
Update README.et.md
2024-12-24 16:06:02 -03:00
hydrasources
b355930eaf Update README.et.md 2024-12-24 20:19:26 +03:00
hydrasources
57b47951a1 Update README.nb.md 2024-12-24 20:18:34 +03:00
hydrasources
4780640ed0 Update README.da.md 2024-12-24 20:17:25 +03:00
hydrasources
8b92c8fdd9 Update README.cs.md 2024-12-24 20:16:40 +03:00
hydrasources
acd98d0aad Update README.de.md 2024-12-24 20:15:56 +03:00
hydrasources
27239f848e Update README.fr.md 2024-12-24 20:15:19 +03:00
hydrasources
c4d0a8eb94 Update README.es.md 2024-12-24 20:13:52 +03:00
hydrasources
60b12b2435 Update README.be.md 2024-12-24 20:09:33 +03:00
hydrasources
1c9515516f Update README.uk-UA.md 2024-12-24 20:08:33 +03:00
JackEnx
58a89372ab Merge pull request #1334 from hydralauncher/refactor/optimize-rpc
Refactor/optimize rpc
2024-12-24 14:07:12 -03:00
JackEnx
90841bf5e4 fix: gitignore 2024-12-24 13:50:40 -03:00
JackEnx
5564644378 refactor: rpc executable objects 2024-12-24 13:48:50 -03:00
Zamitto
89bfb517fb fix: seeding causing python process to crash
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-12-24 02:15:27 -03:00
Chubby Granny Chaser
e1a1136e05 Merge branch 'main' of github.com:hydralauncher/hydra 2024-12-24 04:33:49 +00:00
Chubby Granny Chaser
4c6f87f6e7 chore: setting objects to expire in 3 days 2024-12-24 04:33:24 +00:00
Zamitto
3613ad156b Merge pull request #1326 from hydralauncher/fix/adding-debounce-to-search
fix: adding debounce to search
2024-12-24 01:09:12 -03:00
Zamitto
e50cb74d1d feat: move python rpc log to own file 2024-12-24 00:54:20 -03:00
Chubby Granny Chaser
36800c6368 Merge branch 'main' into fix/adding-debounce-to-search 2024-12-24 03:38:39 +00:00
Chubby Granny Chaser
f67395c94c fix: adding debounce to search 2024-12-24 03:35:29 +00:00
Zamitto
f8b9fe80fd Merge pull request #1325 from hydralauncher/fix/stop-seeding-games-that-are-not-downloaded-on-startup
fix: seeding
2024-12-24 00:35:18 -03:00
Zamitto
e211517e24 feat: revert change 2024-12-24 00:26:58 -03:00
Zamitto
538d3e5982 feat: set libtorrent flags 2024-12-24 00:23:50 -03:00
Zamitto
60e0b39f86 feat: use enum 2024-12-23 23:47:34 -03:00
Zamitto
789bccf77a chore: bump version 2024-12-23 23:45:21 -03:00
Zamitto
ce3ed6f17c fix: seeding 2024-12-23 23:44:33 -03:00
Zamitto
54c6b1f1af chore: update version_codename 2024-12-23 20:02:51 -03:00
Zamitto
dfb50e9a06 Merge pull request #1311 from hydralauncher/feat/achievements-points
feat: achievements points
2024-12-23 19:53:09 -03:00
Zamitto
017954b646 Merge branch 'main' into feat/achievements-points 2024-12-23 19:51:24 -03:00
Zamitto
73ac809bb3 Merge branch 'main' into feat/achievements-points 2024-12-23 19:51:06 -03:00
Chubby Granny Chaser
c0f35c5c54 Merge pull request #1313 from hydralauncher/feat/new-catalogue
Feat/new catalogue
2024-12-23 22:50:51 +00:00
Zamitto
84b10eaa0b chore: bump version 2024-12-23 19:50:23 -03:00
Chubby Granny Chaser
813b9e1586 Merge branch 'main' into feat/new-catalogue 2024-12-23 22:49:18 +00:00
Chubby Granny Chaser
92cdfa0526 chore: removing console log 2024-12-23 22:48:09 +00:00
Chubby Granny Chaser
a06333f716 feat: genre translation 2024-12-23 22:45:40 +00:00
Zamitto
01e3054ce9 Merge pull request #1318 from hydrasources/patch-15
Update README.ru.md
2024-12-23 19:27:20 -03:00
Zamitto
549ea750c0 chore: sonar warnings 2024-12-23 19:23:09 -03:00
Zamitto
aab4197156 feat: remove unused file 2024-12-23 19:16:55 -03:00
Zamitto
1bd32012d3 fix: build python 2024-12-23 19:14:09 -03:00
Zamitto
9f84538b76 fix: cancel download that is not active 2024-12-23 18:58:49 -03:00
Zamitto
e53f4808d5 Merge branch 'feat/new-catalogue' into feat/achievements-points 2024-12-23 18:55:26 -03:00
Zamitto
9b9545fb8f fix: wrong folder name 2024-12-23 18:55:13 -03:00
Chubby Granny Chaser
cbfe831e0c Merge branch 'feat/new-catalogue' of github.com:hydralauncher/hydra into feat/new-catalogue 2024-12-23 21:54:25 +00:00
Chubby Granny Chaser
7d277e0133 feat: adding translation for catalogue 2024-12-23 21:54:01 +00:00
Chubby Granny Chaser
d072a14aa3 feat: adding translation for catalogue 2024-12-23 21:52:01 +00:00
Hachi-R
ddc8d67d84 Merge branch 'feat/new-catalogue' of https://github.com/hydralauncher/hydra into feat/new-catalogue 2024-12-23 18:49:24 -03:00
Hachi-R
a499aae31f feat: smooth scrolling on pagination 2024-12-23 18:49:18 -03:00
Zamitto
aa0321df8f fix: continue http downloads 2024-12-23 18:38:27 -03:00
Chubby Granny Chaser
4aa7df65f5 chore: moving tags to redux 2024-12-23 21:38:17 +00:00
Chubby Granny Chaser
8dbb0726d0 chore: moving tags to redux 2024-12-23 21:37:23 +00:00
Zamitto
53b0c0b08f Merge branch 'feat/new-catalogue' into feat/achievements-points 2024-12-23 18:35:38 -03:00
Hachi-R
502f3b4aa7 refactor: move formatNumber hook usage to before early return 2024-12-23 18:19:22 -03:00
Hachi-R
85422837b0 Merge branch 'feat/new-catalogue' of https://github.com/hydralauncher/hydra into feat/new-catalogue 2024-12-23 18:16:01 -03:00
Hachi-R
26a35a902c feat: enhance pagination component with first and last page buttons 2024-12-23 18:15:48 -03:00
hydrasources
f2a058c8c5 Update README.ru.md 2024-12-24 00:09:56 +03:00
Zamitto
1b837377cb feat: update tray icon 2024-12-23 18:02:26 -03:00
Chubby Granny Chaser
7c497977a2 feat: merging with achievements 2024-12-23 20:51:58 +00:00
Chubby Granny Chaser
8c1c86c374 Merge branch 'feat/achievements-points' of github.com:hydralauncher/hydra into feat/new-catalogue 2024-12-23 20:50:36 +00:00
Zamitto
9e714f811b Merge branch 'feat/new-catalogue' into feat/achievements-points 2024-12-23 17:22:50 -03:00
Chubby Granny Chaser
a4754c947f feat: adding new icons 2024-12-23 20:18:00 +00:00
Zamitto
fdced15e40 Merge branch 'feat/new-catalogue' into feat/achievements-points 2024-12-23 17:15:09 -03:00
Chubby Granny Chaser
4c137d4602 feat: adding new icons 2024-12-23 19:58:16 +00:00
Zamitto
711cbb906c Merge branch 'feat/new-catalogue' into feat/achievements-points
# Conflicts:
#	yarn.lock
2024-12-23 16:53:28 -03:00
Chubby Granny Chaser
2e6766f195 feat: adding new icons 2024-12-23 19:44:03 +00:00
Chubby Granny Chaser
87bcfe90fe chore: merging with main 2024-12-23 19:27:57 +00:00
Zamitto
54886a2c5a Merge branch 'feat/new-catalogue' into feat/achievements-points 2024-12-23 16:19:20 -03:00
Chubby Granny Chaser
550cd3b3d5 chore: merging with main 2024-12-23 19:18:34 +00:00
Zamitto
f1c83808fb Merge branch 'main' into feat/achievements-points 2024-12-23 16:16:02 -03:00
Zamitto
fbe3276bac Merge pull request #1317 from hydrasources/patch-14
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
Update translation.json
2024-12-23 16:15:41 -03:00
Eight
1479c15312 Merge pull request #1223 from hydralauncher/feature/seed-completed-downloads
Feature/seed completed downloads
2024-12-23 16:12:54 -03:00
Chubby Granny Chaser
f738f91f24 fix: resetting pages when filter changes 2024-12-23 19:06:10 +00:00
Chubby Granny Chaser
aaecd203e1 feat: adding remove function to filter tags 2024-12-23 19:01:52 +00:00
Chubby Granny Chaser
4af5535f81 feat: adding remove function to filter tags 2024-12-23 19:00:55 +00:00
Chubby Granny Chaser
b5a9beb481 feat: adding remove function to filter tags 2024-12-23 18:57:41 +00:00
Zamitto
ed351109ba Merge branch 'feature/seed-completed-downloads' into feat/achievements-points 2024-12-23 15:27:47 -03:00
hydrasources
3ed5a2ff64 Update translation.json 2024-12-23 21:00:16 +03:00
Hachi-R
b8f5f90929 feat: enhance download handling for magnet and HTTP links in action function 2024-12-23 14:53:35 -03:00
Zamitto
1115cc03b1 Merge branch 'feature/seed-completed-downloads' into feat/achievements-points 2024-12-23 14:33:00 -03:00
Hachi-R
17879f9c70 refactor: remove unused seed process functionality from main application 2024-12-23 14:28:24 -03:00
Zamitto
1ff33be36f feat: remove download warning 2024-12-23 14:19:32 -03:00
Zamitto
0f396b83f1 Merge branch 'feature/seed-completed-downloads' into feat/achievements-points 2024-12-23 14:09:07 -03:00
Zamitto
e02875ad56 feat: improve friends playing game box 2024-12-23 14:08:56 -03:00
Hachi-R
230c24cca5 lint 2024-12-23 14:07:15 -03:00
Hachi-R
f853a2a39e feat: move initial seeding for DownloadManager 2024-12-23 14:07:03 -03:00
Hachi-R
843301c8b6 feat: implement pause and resume functionality for game seeding in DownloadManager 2024-12-23 13:50:57 -03:00
Zamitto
ea90b49604 chore: sonar adjustments 2024-12-23 10:50:35 -03:00
Zamitto
cf39b426e1 Merge branch 'feature/seed-completed-downloads' into feat/achievements-points 2024-12-23 10:41:15 -03:00
Zamitto
b74035979f feat: replace button with div on DropdownMenu 2024-12-23 10:34:18 -03:00
Zamitto
a3caa62ed3 feat: remove console log 2024-12-23 09:40:01 -03:00
Zamitto
2b44728c0e Merge branch 'feature/seed-completed-downloads' into feat/achievements-points 2024-12-23 09:39:08 -03:00
Zamitto
56217fbcf8 fix: bug after pause seed 2024-12-23 09:38:50 -03:00
Zamitto
c9be6b6b92 feat: replace console with logger 2024-12-23 09:17:47 -03:00
Zamitto
07d0e86031 Merge branch 'feature/seed-completed-downloads' into feat/achievements-points 2024-12-23 09:07:37 -03:00
Zamitto
59846cfe2f fix: processProfileImage path and body 2024-12-23 09:06:14 -03:00
Zamitto
ea3d922242 Merge branch 'feature/seed-completed-downloads' into feat/achievements-points 2024-12-23 08:51:24 -03:00
Hachi-R
f9719c995c feat: delay in seed process 2024-12-23 03:07:06 -03:00
Hachi-R
c755aa388b lint 2024-12-23 02:07:48 -03:00
Hachi-R
af2b422154 feat: integrate DownloadManager for active game downloads and streamline RPC handling 2024-12-23 02:07:37 -03:00
Hachi-R
e463ee569a feat: add initial download handling in Python RPC and update spawn method to accept download parameters 2024-12-23 01:25:01 -03:00
Zamitto
8f169ee113 fix: achievement panel when owner does not have the game 2024-12-23 00:00:10 -03:00
Zamitto
b8c456eb71 Merge branch 'feat/new-catalogue' into feat/achievements-points
# Conflicts:
#	src/renderer/src/app.tsx
2024-12-22 22:45:27 -03:00
Hachi-R
35d14b33ca lint 2024-12-22 22:40:51 -03:00
Hachi-R
3aa8230e17 feat: restart downloads and move seed process initiation to main.ts 2024-12-22 22:40:18 -03:00
Chubby Granny Chaser
4476b1b216 feat: removing publishers 2024-12-23 01:32:45 +00:00
Zamitto
12c827fe2a Merge branch 'feat/new-catalogue' into feat/achievements-points 2024-12-22 22:27:34 -03:00
Zamitto
6db6c14016 feat: hydra cloud modal 2024-12-22 22:25:20 -03:00
Chubby Granny Chaser
3a1fa9ab00 feat: removing publishers 2024-12-23 01:14:50 +00:00
Zamitto
fb8682e88d Merge branch 'feat/new-catalogue' into feat/achievements-points 2024-12-22 22:10:43 -03:00
Chubby Granny Chaser
618d6f8337 Merge branch 'feat/new-catalogue' of github.com:hydralauncher/hydra into feat/new-catalogue 2024-12-23 00:48:22 +00:00
Chubby Granny Chaser
214f7d3523 feat: removing publishers 2024-12-23 00:47:39 +00:00
Chubby Granny Chaser
b439a1af3f feat: removing publishers 2024-12-23 00:46:11 +00:00
Chubby Granny Chaser
602ee61cb6 feat: removing publishers 2024-12-23 00:42:08 +00:00
Zamitto
4d0a75e61f feat: refactor 2024-12-22 21:31:24 -03:00
Zamitto
cabddfb926 Merge branch 'feat/new-catalogue' into feat/achievements-points
# Conflicts:
#	src/preload/index.ts
#	src/renderer/src/app.tsx
#	src/renderer/src/features/index.ts
#	src/renderer/src/store.ts
#	yarn.lock
2024-12-22 21:22:52 -03:00
Zamitto
c20369fa57 Merge branch 'feature/seed-completed-downloads' into feat/achievements-points 2024-12-22 21:21:27 -03:00
Zamitto
d6b5fd1b9f feat: cloud ui 2024-12-22 21:21:05 -03:00
Chubby Granny Chaser
4edf1ed41f Merge branch 'main' into feat/new-catalogue 2024-12-23 00:14:22 +00:00
Chubby Granny Chaser
4607665908 fix: fixing download sources migration 2024-12-23 00:07:35 +00:00
Chubby Granny Chaser
c9f8148acf fix: fixing download sources migration 2024-12-23 00:07:02 +00:00
Chubby Granny Chaser
1fd930b0a3 fix: fixing download sources migration 2024-12-23 00:06:23 +00:00
Chubby Granny Chaser
c9c6d5ee46 fix: fixing download sources migration 2024-12-23 00:05:27 +00:00
Chubby Granny Chaser
496924b2a4 fix: fixing download sources migration 2024-12-22 23:42:49 +00:00
Chubby Granny Chaser
32032e1c8a fix: fixing download sources migration 2024-12-22 23:38:54 +00:00
Hachi-R
65b1ec9b1f refactor: replace dataSource with gameRepository in pauseGameSeed and resumeGameSeed events 2024-12-22 20:31:34 -03:00
Zamitto
7b724d4185 Merge branch 'feature/seed-completed-downloads' into feat/achievements-points 2024-12-22 20:27:09 -03:00
Zamitto
c8566dd2be feat: ui improvement 2024-12-22 20:27:04 -03:00
Hachi-R
79bb12ee61 lint 2024-12-22 20:21:16 -03:00
Hachi-R
db01980eb8 refactor: clean up code 2024-12-22 20:20:46 -03:00
Hachi-R
859d849d36 fix: update Portuguese translations and enhance dropdown menu styling 2024-12-22 19:30:05 -03:00
Hachi-R
855f0aa334 refactor: remove commented-out code in download-manager.ts 2024-12-22 18:50:19 -03:00
Zamitto
313ebc6055 feat: cloud modal 2024-12-22 18:05:54 -03:00
Zamitto
041b7d520c feat: ui adjustments and add friend playing game 2024-12-22 16:47:13 -03:00
Zamitto
93bc7c690f feat: ui adjustments 2024-12-22 12:38:31 -03:00
Zamitto
58a8f6fd6e Merge branch 'feature/seed-completed-downloads' into feat/achievements-points 2024-12-22 11:48:25 -03:00
Zamitto
1522b00579 feat: some visuals 2024-12-22 11:47:55 -03:00
Hachi-R
93712a7f5e refactor: remove commented-out code for torrent actions in main.py and torrent_downloader.py 2024-12-22 09:08:36 -03:00
Hachi-R
abb3db4e30 feat: implement directory size check and seed abort 2024-12-22 09:08:20 -03:00
Hachi-R
bd184fceda lint 2024-12-22 09:07:02 -03:00
Hachi-R
93ef0c256e feat: updated pauseGameSeed and resumeGameSeed events 2024-12-22 09:06:39 -03:00
Hachi-R
fd5b2e08a5 lint 2024-12-22 06:58:20 -03:00
Hachi-R
1a286df3f7 Merge branch 'main' into feature/seed-completed-downloads 2024-12-22 06:58:03 -03:00
Zamitto
06e59fdfa0 feat: adding panel 2024-12-21 20:49:50 -03:00
Hachi-R
9884a39abc refactor: replace resumeSeeding with resumeDownload in torrenting event handler 2024-12-21 16:44:49 -03:00
Hachi-R
90b320952b lint 2024-12-21 16:28:01 -03:00
Hachi-R
4b8569bd5e refactor: streamline download completion handling 2024-12-21 16:27:28 -03:00
Hachi-R
5714c23073 feat: implement seed process initiation in PythonRPC 2024-12-21 15:34:29 -03:00
Hachi-R
09ea3b27f4 feat: improve seed status response structure by including game ID 2024-12-21 14:39:16 -03:00
Hachi-R
5fbf0baa0f feat: enhance seed status retrieval 2024-12-21 10:15:04 -03:00
Zamitto
2c09520f98 Merge pull request #1315 from hydrasources/patch-12
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
fix: update language anchor in README.pt-BR.md
2024-12-20 22:57:25 -03:00
Zamitto
87189c070e chore: add openssl to readme 2024-12-20 22:56:42 -03:00
Zamitto
81cded0052 feat: add points to achievement list 2024-12-20 22:22:13 -03:00
Zamitto
89cd970d5a feat: refactor component 2024-12-20 20:31:31 -03:00
hydrasources
c2b7fb4823 Update README.pt-BR.md 2024-12-21 01:55:01 +03:00
Chubby Granny Chaser
f37b92261f feat: adding button to clear selected filters 2024-12-20 22:40:41 +00:00
Chubby Granny Chaser
b28d34cf66 feat: increasing number of results 2024-12-20 22:14:58 +00:00
Zamitto
a21c3dcdf1 Merge pull request #1314 from hydrasources/patch-10
Update RU translation.json
2024-12-20 18:57:28 -03:00
Chubby Granny Chaser
59655a819a feat: adding link direct from sources 2024-12-20 21:33:17 +00:00
Chubby Granny Chaser
d3450c5f65 feat: adding link direct from sources 2024-12-20 21:28:51 +00:00
Chubby Granny Chaser
3af0ae9f85 feat: adding scroll to filters 2024-12-20 18:59:51 +00:00
Chubby Granny Chaser
a557bbb948 feat: adding user tags 2024-12-20 18:43:17 +00:00
Chubby Granny Chaser
e78de55fe7 feat: adding user tags 2024-12-20 18:39:40 +00:00
Zamitto
065ea0c6fe feat: adjust log 2024-12-20 15:38:39 -03:00
hydrasources
9b22251705 Update translation.json 2024-12-20 20:53:41 +03:00
Zamitto
721d0c6da1 Merge branch 'main' into feat/achievements-points 2024-12-20 14:49:40 -03:00
Zamitto
170ac28bb5 fix: user data not being correctly loaded on hydra api setup 2024-12-20 14:48:04 -03:00
Chubby Granny Chaser
3be9053b76 feat: adding pacman 2024-12-20 17:33:13 +00:00
Chubby Granny Chaser
ede1dbc5e7 feat: adding source search 2024-12-20 17:12:59 +00:00
Chubby Granny Chaser
5551125865 feat: adding source search 2024-12-20 17:12:21 +00:00
Chubby Granny Chaser
eb744346f0 feat: adding source search 2024-12-20 17:10:33 +00:00
Chubby Granny Chaser
5d5ce092b7 feat: adding source search 2024-12-20 17:09:56 +00:00
Chubby Granny Chaser
109c12064d feat: adding source search 2024-12-20 17:07:51 +00:00
Zamitto
c9a553c5d3 fix: spanish translation
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-12-20 12:53:12 -03:00
Zamitto
1fae3066fa feat: spanish translation adjustment 2024-12-20 12:53:09 -03:00
Zamitto
c8d1b2c19a feat: spanish translation adjustment 2024-12-20 12:31:32 -03:00
Zamitto
be89e0d60b feat: create stats box 2024-12-20 10:14:59 -03:00
Zamitto
076f33605a fix: spanish translation 2024-12-18 16:26:53 -03:00
Zamitto
eaf099d2ce Merge branch 'main' into feat/achievements-points 2024-12-18 16:13:29 -03:00
Chubby Granny Chaser
007731b71c Merge pull request #1283 from hydralauncher/ci/testing-build-webhook
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
ci: testing upload build script
2024-12-18 19:12:30 +00:00
Chubby Granny Chaser
0ca6c2cbff fix: removing pnpm lock file 2024-12-18 19:10:17 +00:00
Chubby Granny Chaser
94f0df096d Merge branch 'main' into ci/testing-build-webhook 2024-12-18 18:10:26 +00:00
Zamitto
55ed27511f Merge pull request #1306 from 7ROBE/patch-4
Update translation.json
2024-12-18 14:16:49 -03:00
Zamitto
294700a6ca Merge branch 'main' into feat/achievements-points 2024-12-18 14:15:55 -03:00
JackEnx
dfe70a5a95 Merge pull request #1299 from hydralauncher/feature/rpc
Feature/rpc
2024-12-18 14:14:30 -03:00
JackEnx
bc98f7c55e fix: closed game pestis in the watch processes 2024-12-18 13:02:13 -03:00
JackEnx
e2d16ba63e Merge branch 'feature/rpc' of https://github.com/hydralauncher/hydra into feature/rpc 2024-12-18 12:33:25 -03:00
JackEnx
4f7255a8d9 refactor: process watcher commands 2024-12-18 12:31:12 -03:00
Zamitto
ad59fcd3e9 Merge branch 'main' into feature/rpc 2024-12-18 12:29:07 -03:00
JackEnx
5222d319a3 refactor: add bundle.js in external script environment 2024-12-18 12:25:55 -03:00
JackEnx
1f3a6a9da6 refactor: add bundle.js in external script environment 2024-12-18 12:20:07 -03:00
7ROBE
d687c156ff Update translation.json 2024-12-18 18:01:13 +03:00
JackEnx
e95407e6f5 refactor: add URL to end of the env main external resources 2024-12-18 11:51:22 -03:00
Zamitto
23f9b5228c feat: adjustments 2024-12-17 23:40:30 -03:00
Zamitto
ac0d0efe0f feat: update interfaces 2024-12-17 16:14:09 -03:00
JackEnx
4c3eb98041 refactor: rpc url to a generic url 2024-12-17 15:48:11 -03:00
Zamitto
ce2cf89fd6 Merge pull request #1302 from hydralauncher/feat/hidden-achievement-description
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
feat: add description option for hidden achievements
2024-12-17 15:45:32 -03:00
JackEnx
347e38c413 refactor: move rpc game executables url to a env 2024-12-17 15:35:42 -03:00
Zamitto
3a964dcf17 feat: create game 2024-12-17 15:25:10 -03:00
JackEnx
f2714bd0ab fix: process map promise return 2024-12-16 21:47:09 -03:00
JackEnx
66a8170fd2 fix: lint 2024-12-16 21:40:56 -03:00
JackEnx
9f8269d9a9 refactor: linux get game exe logic 2024-12-16 21:31:39 -03:00
JackEnx
64745b9147 feature: linux find opened game and wine path 2024-12-16 20:45:09 -03:00
Zamitto
b0bf33191b Merge branch 'main' into feat/hidden-achievement-description 2024-12-16 20:00:46 -03:00
Zamitto
500db90974 chore: readme link
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-12-16 19:56:14 -03:00
Zamitto
e5f575705f Merge branch 'main' into feat/hidden-achievement-description 2024-12-16 19:55:19 -03:00
Zamitto
1acafe5b8f Merge pull request #1289 from hydralauncher/fix/handle-achievement-exception
fix: handle achievement exception
2024-12-16 19:54:56 -03:00
JackEnx
fcfaae7b58 refactor: move exec command to a function 2024-12-16 19:51:15 -03:00
JackEnx
311b011ec6 feature: linux game observe 2024-12-16 19:48:07 -03:00
JackEnx
efcf778c95 refactor: merged game queries to a single query 2024-12-16 18:52:11 -03:00
Zamitto
149c278e22 Merge branch 'main' into fix/handle-achievement-exception 2024-12-16 18:40:58 -03:00
JackEnx
431ad2ff2c refactor: Set descontruction to Set foreach 2024-12-16 18:39:30 -03:00
Zamitto
93a77dc027 Merge pull request #1296 from hydrasources/patch-7
Update README.ru.md
2024-12-16 18:20:25 -03:00
Zamitto
e5c6b54e7b Merge pull request #1298 from hydrasources/hydrasources-patch-1-6
Hydrasources patch 1 6
2024-12-16 18:19:43 -03:00
Zamitto
859dbb8655 Merge pull request #1295 from hydrasources/patch-4
Update translation.json
2024-12-16 18:19:23 -03:00
Zamitto
6c2f25a9a3 Merge pull request #1297 from hydrasources/patch-8
Update README.pt-BR.md
2024-12-16 18:19:04 -03:00
hydrasources
75140ccf97 Update README.da.md 2024-12-17 00:07:34 +03:00
hydrasources
df46f1f1d0 Update README.de.md 2024-12-17 00:07:15 +03:00
hydrasources
166e53ceaa Update README.nb.md 2024-12-17 00:05:37 +03:00
hydrasources
165e346d38 Update README.nb.md 2024-12-17 00:05:12 +03:00
hydrasources
8485544731 Update README.be.md 2024-12-17 00:03:55 +03:00
hydrasources
feb325c2c7 Update README.pt-BR.md 2024-12-17 00:01:13 +03:00
hydrasources
c611ff2229 Update README.ru.md 2024-12-16 23:58:55 +03:00
hydrasources
e75b2960c0 Update translation.json
I just forgot to update another line
2024-12-16 23:53:09 +03:00
JackEnx
1ffb9828f7 refactor: get system process map 2024-12-16 17:38:03 -03:00
JackEnx
fee1a92715 fix: executable lastIndeOf 2024-12-16 17:10:34 -03:00
Zamitto
8d7553e1cc Merge pull request #1290 from hydrasources/patch-3
Update translation.json
2024-12-16 17:03:49 -03:00
Zamitto
a40638b657 chore: lint 2024-12-16 16:55:10 -03:00
JackEnx
d9adc49e9f fix: executable slice 2024-12-16 16:53:09 -03:00
JackEnx
5607f6d524 refactor: move executable name replate outside the forof 2024-12-16 16:42:07 -03:00
hydrasources
d821fd7800 Update translation.json 2024-12-16 22:38:16 +03:00
JackEnx
e87f287476 refactor: remove redundant plataform validation 2024-12-16 16:37:50 -03:00
JackEnx
c2a52d3c18 refactor: reduce code redundance 2024-12-16 16:35:12 -03:00
JackEnx
08d320ad1c fix: win32 path 2024-12-16 16:34:00 -03:00
JackEnx
d17abdcd11 refactor: games id without path get only games objectID 2024-12-16 16:17:46 -03:00
JackEnx
19485b5ba1 feature: find game in execution executable path 2024-12-16 15:57:49 -03:00
Zamitto
1ea98613fb feat: add hidden achievement description option 2024-12-16 14:57:14 -03:00
JackEnx
b8b000d88c refactor: change game process set to map 2024-12-16 14:36:16 -03:00
Chubby Granny Chaser
1e99dae9de Merge branch 'main' of github.com:hydralauncher/hydra 2024-12-16 16:21:43 +00:00
hydrasources
1e78532dc5 Update translation.json 2024-12-14 16:09:30 +03:00
hydrasources
454beff2d3 Update translation.json 2024-12-14 16:04:19 +03:00
Zamitto
6f417d23d1 fix: handle achievement parse error causing hydra to never search new achievements in real time 2024-12-13 16:48:09 -03:00
Zamitto
58cbf78fb9 chore: update libs 2024-12-13 16:47:51 -03:00
JackEnx
ff917b7ecf Merge pull request #1230 from hydralauncher/fix/linux-game-tracking
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
fix: linux game tracking and closed button
2024-12-13 11:45:12 -03:00
Zamitto
b2d6d7e736 Merge branch 'main' into fix/linux-game-tracking 2024-12-13 11:31:05 -03:00
Zamitto
95d320a0fe Merge pull request #1287 from JarEXE/fix/traymenu
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
fix: workaround for broken or missing tray icon menu on linux
2024-12-11 17:22:49 -03:00
jarome
fd8c57bff0 fix: implemented workaround for broken or missing tray icon menu on linux 2024-12-11 13:24:54 -03:00
Chubby Granny Chaser
36cb1e1103 ci: testing upload build script 2024-12-10 00:54:58 +00:00
Chubby Granny Chaser
77e0be8234 ci: testing upload build script 2024-12-10 00:54:35 +00:00
Chubby Granny Chaser
4b93b91373 ci: testing upload build script 2024-12-10 00:20:35 +00:00
Chubby Granny Chaser
639c7ef1e6 ci: testing upload build script 2024-12-10 00:03:14 +00:00
Chubby Granny Chaser
95ae59c7a3 Merge branch 'main' of github.com:hydralauncher/hydra 2024-12-09 23:38:37 +00:00
Chubby Granny Chaser
9e73a44426 ci: testing upload build script 2024-12-09 23:14:21 +00:00
Chubby Granny Chaser
2c93312df0 ci: testing upload build script 2024-12-09 23:12:10 +00:00
Chubby Granny Chaser
09cf207ecc ci: testing upload build script 2024-12-09 23:04:37 +00:00
Chubby Granny Chaser
1d13b7bede ci: testing upload build script 2024-12-09 23:01:54 +00:00
Chubby Granny Chaser
5b104ecb42 ci: testing upload build script 2024-12-09 22:59:40 +00:00
Chubby Granny Chaser
235045dec4 ci: testing upload build script 2024-12-09 22:56:49 +00:00
Chubby Granny Chaser
fa273a13f2 ci: testing upload build script 2024-12-09 22:54:58 +00:00
Zamitto
d8b59cae05 feat: differ staging cookie
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
2024-12-09 19:29:31 -03:00
Zamitto
45f2727415 chore: bump version 2024-12-09 17:58:46 -03:00
Zamitto
7e44b3dedb Merge pull request #1282 from hydralauncher/fix/intercepting-cookies
Fix/intercepting cookies
2024-12-09 17:57:30 -03:00
Zamitto
0dea700479 feat: adjustments on clear button 2024-12-09 17:26:20 -03:00
Zamitto
56247eaf7b Merge branch 'main' into fix/intercepting-cookies 2024-12-09 16:52:47 -03:00
Zamitto
590a15e534 Merge pull request #1254 from JarEXE/feature/clearpaths
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
feat: allow clearing game executable path and wine prefix
2024-12-09 16:51:18 -03:00
Zamitto
fb1cc9b82c Merge branch 'main' into feature/clearpaths 2024-12-09 16:29:19 -03:00
Zamitto
7595f19af3 feat: remove console log 2024-12-08 22:50:39 -03:00
Zamitto
e978d84f5f feat: intercepting cookies 2024-12-08 22:21:20 -03:00
Zamitto
0157d546e4 chore: bump version
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-12-08 10:57:39 -03:00
Chubby Granny Chaser
4f5dc51a68 Merge pull request #1281 from hydralauncher/fix/fixing-local-images
fix: fixing local images
2024-12-08 13:17:25 +00:00
Chubby Granny Chaser
938650dbde Merge branch 'main' into fix/fixing-local-images 2024-12-08 13:15:52 +00:00
Chubby Granny Chaser
bae9e57fcd fix: fixing local images 2024-12-08 13:12:38 +00:00
Zamitto
6a673f0c6b Merge pull request #1280 from hydralauncher/fix/headers-and-logs
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
Fix/headers and logs
2024-12-08 01:26:55 -03:00
Zamitto
a962d839a8 fix: chatwoot and featurebase headers 2024-12-08 01:04:17 -03:00
Zamitto
173fb41e63 feat: refactor error logs 2024-12-08 00:59:53 -03:00
Zamitto
26cbeee5af Merge pull request #1277 from GearCzech/main
Updated czech translation [translation]
2024-12-08 00:42:33 -03:00
Zamitto
f6b5263814 Merge branch 'main' into main 2024-12-08 00:29:40 -03:00
Zamitto
3b7ddd0170 Merge pull request #1279 from bankov4eto/main
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
PR: [translation]
2024-12-07 10:36:18 -03:00
bankov4eto
600cbfe861 Update translation.json
Updated translation and corrections
2024-12-07 10:57:02 +02:00
bankov4eto
994f4568a4 Update translation.json
Updated translations and corrections
2024-12-07 10:50:06 +02:00
Gear
1de973ebd0 Fixed by prettier now 2024-12-05 22:36:12 +01:00
Gear
4f6d3d7057 fixed the last line 2024-12-05 22:32:31 +01:00
Gear
124e38c782 Updated czech translation 2024-12-05 22:13:28 +01:00
Zamitto
c9eed85a00 Merge pull request #1275 from hydralauncher/fix/set-userDetails-after-login
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
fix: set window.userDetails after login
2024-12-04 21:11:13 -03:00
Zamitto
988c01f506 fix: set window.userDetails after login 2024-12-04 12:11:14 -03:00
Zamitto
5450443022 Merge pull request #1274 from hydralauncher/chore/remove-intercom-dependency
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
chore: remove intercom dependency
2024-12-04 09:04:35 -03:00
Zamitto
590a1b354d chore: remove intercom dependency 2024-12-04 01:57:47 -03:00
Zamitto
2dcb629c2d Merge pull request #1269 from Lianela/main
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
feature: updated spanish translation
2024-12-02 23:59:48 -03:00
Lianela
96feaf8d42 Update translation.json 2024-12-02 17:43:00 -06:00
Lianela
4cb3258e17 feat: updated spanish translation
added missing strings
2024-12-02 17:38:13 -06:00
Chubby Granny Chaser
9b9b3f73d0 fix: fixing data: links on CSP
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-12-02 20:37:43 +00:00
Chubby Granny Chaser
de36965017 fix: prevent loading external resources twice 2024-12-02 19:37:32 +00:00
Chubby Granny Chaser
e9fddd2456 Merge branch 'main' of github.com:hydralauncher/hydra 2024-12-02 19:13:41 +00:00
Chubby Granny Chaser
8b4791f1f4 chore: bump version 2024-12-02 19:12:39 +00:00
Zamitto
281208a8aa Merge branch 'main' into fix/linux-game-tracking 2024-12-02 16:08:38 -03:00
Chubby Granny Chaser
5f9397f6db Merge branch 'main' into feature/clearpaths 2024-12-02 18:47:19 +00:00
Chubby Granny Chaser
870e45991b Merge pull request #1268 from hydralauncher/fix/migrating-hltb
Fix/migrating hltb
2024-12-02 18:47:08 +00:00
Chubby Granny Chaser
38e94c92d7 fix: cache-busting external resources 2024-12-02 18:44:03 +00:00
Chubby Granny Chaser
93fbf7657d fix: returning hydra api call directly 2024-12-02 18:15:45 +00:00
Chubby Granny Chaser
0fc6d69851 fix: migrating hltb to api 2024-12-02 17:58:13 +00:00
Chubby Granny Chaser
7f600a0cbf feat: adding csp update 2024-12-02 17:10:13 +00:00
Chubby Granny Chaser
d7e06d6622 feat: adding aria2c 2024-11-28 19:16:05 +00:00
Chubby Granny Chaser
c6d4b658a1 feat: adding aria2c 2024-11-28 19:13:39 +00:00
Chubby Granny Chaser
a847f9370c feat: adding aria2c 2024-11-28 19:13:15 +00:00
Chubby Granny Chaser
fe8f962fb0 feat: adding aria2c 2024-11-28 19:12:47 +00:00
Chubby Granny Chaser
4060f7a1a6 feat: adding aria2c 2024-11-28 19:09:13 +00:00
Zamitto
5bc424796a Merge pull request #1219 from hydralauncher/feat/intercom-user-id
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
feat: add intercom user id
2024-11-28 11:27:57 -03:00
Zamitto
7f33b63bed Merge branch 'main' into feat/intercom-user-id 2024-11-28 09:55:15 -03:00
Chubby Granny Chaser
2d8b63c803 Merge branch 'feature/seed-completed-downloads' of github.com:hydralauncher/hydra into feature/seed-completed-downloads 2024-11-28 10:34:15 +00:00
Chubby Granny Chaser
6259cf4104 Merge branch 'main' of github.com:hydralauncher/hydra into feature/seed-completed-downloads 2024-11-28 10:13:37 +00:00
Chubby Granny Chaser
f35c34fa63 fix: fixing bottom panel scss 2024-11-28 10:13:23 +00:00
Zamitto
57e0fb493f Merge pull request #1261 from hydralauncher/fix/correct-subscription-date-validation
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
fix: subscription date validation
2024-11-27 13:37:32 -03:00
Zamitto
730ea4f2b9 fix: subscription date validation 2024-11-27 13:27:13 -03:00
jarome
948965dda5 QoL allow clearing game executable path and wine prefix 2024-11-23 21:39:45 -03:00
Hachi-R
f2cc20cb7c refactor: removed dropdown title because its ugly 2024-11-15 23:54:45 -03:00
JackEnx
46c3b33548 refactor: remove process watcher duplicated code 2024-11-13 11:54:01 -03:00
JackEnx
7785d42021 fix: linux game tracking and closed button 2024-11-12 15:39:18 -03:00
Eight
130c23603f Merge branch 'main' into feature/seed-completed-downloads 2024-11-12 04:34:15 -03:00
Hachi-R
330341392d lint 2024-11-12 04:32:34 -03:00
Hachi-R
9d1c04d07a refactor: export with component definition 2024-11-12 04:32:08 -03:00
Hachi-R
94ef1679a9 feat: add menu with download options on download page 2024-11-12 04:12:22 -03:00
Hachi-R
ca953de464 lint 2024-11-12 04:10:43 -03:00
Hachi-R
2c1c3e3c98 feat: add dropdown menu component 2024-11-12 04:10:19 -03:00
Hachi-R
40ec773425 lint 2024-11-11 16:39:58 -03:00
Hachi-R
a7b8018ed9 "feat: pause seeding if game folder is deleted" 2024-11-11 16:24:04 -03:00
Zamitto
8cfe5b4d34 fix: add friend's pass to format name 2024-11-11 10:35:33 -03:00
Zamitto
a2e41b81a3 Merge branch 'main' into feat/intercom-user-id 2024-11-10 23:38:07 -03:00
Zamitto
ee4639e041 Merge pull request #1222 from bankov4eto/main
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
PR: [translation] bulgarian
2024-11-10 23:37:00 -03:00
Zamitto
6e6469d90f fix: format ignore case 2024-11-10 20:55:23 -03:00
bankov4eto
a53793a76b Merge branch 'hydralauncher:main' into main 2024-11-10 12:50:23 +02:00
bankov4eto
d046f1ed21 Update index.ts 2024-11-10 09:25:19 +02:00
Zamitto
da1ac788fb Update translation.json 2024-11-09 20:58:21 -03:00
Chubby Granny Chaser
1980560a2d Merge branch 'main' of github.com:hydralauncher/hydra
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
2024-11-09 22:14:29 +00:00
Hachi-R
1416cd46a3 feat: seed downloads from previous versions 2024-11-09 16:03:43 -03:00
Chubby Granny Chaser
610b6e528c Merge branch 'main' into feature/seed-completed-downloads 2024-11-09 18:03:28 +00:00
Hachi-R
f66bdd706b feat: pause seeding before deleting game 2024-11-09 14:29:45 -03:00
Hachi-R
518d919da5 feat: add locale strings 2024-11-09 13:00:22 -03:00
Hachi-R
9619578fcf lint 2024-11-09 12:47:16 -03:00
Hachi-R
56687948bf feat: display upload speed during seeding 2024-11-09 12:45:48 -03:00
bankov4eto
7166f66a9e Update translation.json 2024-11-09 17:29:32 +02:00
Hachi-R
8ec52bf193 temp 2024-11-09 12:08:58 -03:00
bankov4eto
cc3fc10ddf Merge pull request #1 from bankov4eto/bankov4eto-patch-1
Create translation.json
2024-11-09 15:41:30 +02:00
bankov4eto
15ecba1f6e Create translation.json
Bulgarian translation added
2024-11-09 15:36:16 +02:00
Zamitto
2828640ed7 feat: add intercom user id 2024-11-09 02:54:23 -03:00
Hachi-R
c314c397a5 feat: add option to disable seeding after download completes 2024-11-09 01:29:06 -03:00
Chubby Granny Chaser
341903fc3e ci: pushing builds to r2 2024-11-09 04:26:01 +00:00
Hachi-R
5078946191 refactor: change logic to seed new downloads 2024-11-09 01:16:03 -03:00
Hachi-R
7c039ead10 feat: add seeding management logic 2024-11-08 23:36:43 -03:00
Zamitto
20c001914a Merge pull request #1217 from hydralauncher/feat/intercom-userid
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
feat: add userid to intercom and post to logout
2024-11-08 23:16:48 -03:00
Zamitto
77e9de704d feat: open checkout with user language 2024-11-08 22:40:43 -03:00
Zamitto
34ec8467ec feat: temp removing userId intercom 2024-11-08 22:34:58 -03:00
Hachi-R
94b65c0357 lint 2024-11-08 21:30:51 -03:00
Hachi-R
b32952f076 feat: add ablity to pause and resume the seeding process 2024-11-08 21:29:40 -03:00
Zamitto
eeae140a41 chore: remove unused file 2024-11-08 20:17:12 -03:00
Zamitto
e277af0e4b feat: add staging info on bottom panel 2024-11-08 20:03:22 -03:00
Zamitto
8a67492cf8 feat: add userid to itercom and post to logout 2024-11-08 19:47:28 -03:00
Hachi-R
c556a00e4a feat: get seed status 2024-11-08 18:28:58 -03:00
Hachi-R
9c9c0e6c09 feat: seed after doenload 2024-11-08 18:24:06 -03:00
Hachi-R
21ca26dcfe feat: update schema with seeding columns 2024-11-08 17:30:18 -03:00
Eight
981dbceb93 Merge pull request #1207 from hydralauncher/feature/disable-nsfw-popup
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
Feature/disable nsfw alert
2024-11-06 21:51:24 -03:00
Hachi-R
aaee27732d refactor: rename all "popup" strings to "alert" 2024-11-06 20:44:56 -03:00
Hachi-R
e7acce2dfc feat: add localization strings 2024-11-06 03:01:28 -03:00
Hachi-R
56b15bf52a lint 2024-11-06 02:58:10 -03:00
Hachi-R
2f8fe67f9f feat: add option to disable NSFW warning 2024-11-06 02:57:52 -03:00
Chubby Granny Chaser
b09e91a1cf fix: fixing analytics for ddl
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
2024-11-05 20:29:44 +00:00
Zamitto
9418c4acf7 fix: achievement filter 2024-11-05 17:09:46 -03:00
Chubby Granny Chaser
0451bc55aa chore: more relaxed CSP 2024-11-05 19:59:41 +00:00
Chubby Granny Chaser
2840110a21 ci: removing bump 2024-11-05 19:30:09 +00:00
Chubby Granny Chaser
8c4eacf045 chore: bump version 2024-11-05 19:18:13 +00:00
Chubby Granny Chaser
179785432d Merge pull request #1206 from hydralauncher/ci/adding-intercom-app-id
Ci/adding intercom app
2024-11-05 19:17:46 +00:00
Chubby Granny Chaser
c3da39205f ci: adding intercom app id 2024-11-05 19:12:12 +00:00
Chubby Granny Chaser
f071d1006b ci: adding intercom app id 2024-11-05 19:11:03 +00:00
Chubby Granny Chaser
6da1832799 ci: adding intercom app id 2024-11-05 19:08:37 +00:00
Chubby Granny Chaser
df0e124c3a Merge pull request #1204 from hydralauncher/feat/adding-intercom
Feat/adding intercom
2024-11-05 18:24:06 +00:00
Chubby Granny Chaser
25f1a72b48 Merge branch 'main' into feat/adding-intercom 2024-11-05 18:17:37 +00:00
Chubby Granny Chaser
2b5e76ffdd feat: adding intercom 2024-11-05 18:15:17 +00:00
Chubby Granny Chaser
9d75e3ad6f feat: adding intercom 2024-11-05 18:13:32 +00:00
Zamitto
ab5024ec4a Merge pull request #1203 from hydralauncher/fix/replace-nbsp-with-space
fix: replace nbsp with space
2024-11-05 14:23:02 -03:00
Zamitto
bdaf4d6d9b fix: use game iconUrl to show finish download notification 2024-11-05 13:49:29 -03:00
Zamitto
6d53aaa631 feat: parsing hash before post analytics 2024-11-05 13:43:21 -03:00
Zamitto
e67d605949 chore: add envs to gh action yml 2024-11-05 13:21:51 -03:00
Zamitto
b82840df3b feat: add download analytics 2024-11-05 13:07:37 -03:00
Zamitto
42e0df29ee fix: replace nbsp with space 2024-11-05 12:33:09 -03:00
Zamitto
0745f5b401 chore: bump version
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-11-05 01:33:44 -03:00
Zamitto
1ab5b8bd00 Merge pull request #1200 from hydralauncher/fix/linux-deb-download
fix: linux deb download
2024-11-05 01:32:40 -03:00
JackEnx
dc93ef9134 fix: linux deb download 2024-11-05 00:13:55 -03:00
Zamitto
943cfc2913 Merge pull request #1193 from zxcsix-zxc/patch-1
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
Update RU translation.json
2024-11-03 16:11:45 -03:00
zxcsix-zxc
6b125aff27 Update translation.json
Changed translation for "hot"
2024-11-03 00:50:29 +02:00
Chubby Granny Chaser
3469b624d5 Merge pull request #1190 from hydralauncher/feat/removing-sentry
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
fix: removing sentry
2024-11-02 17:25:41 +00:00
Chubby Granny Chaser
c498e331c7 fix: removing sentry.properties 2024-11-02 17:16:33 +00:00
Chubby Granny Chaser
c8165c10bf chore: resolving conflicts with yarn.lock 2024-11-02 17:09:10 +00:00
Chubby Granny Chaser
8af29abd92 fix: removing sentry 2024-11-02 17:06:30 +00:00
Zamitto
5662ddd2be Merge pull request #1170 from hydralauncher/feat/use-native-notification-for-achievements
feat: use native notification for achievements
2024-11-02 13:33:55 -03:00
Zamitto
8f1e71010b Merge branch 'main' into feat/use-native-notification-for-achievements 2024-11-02 13:20:43 -03:00
Chubby Granny Chaser
71ff6c3c44 Merge pull request #1189 from hydralauncher/feature/removing-lottie-and-starting-sass-migration
Feature/removing lottie and starting sass migration
2024-11-02 15:50:15 +00:00
Chubby Granny Chaser
74cd60ff3d feat: removing lottie react 2024-11-02 15:31:24 +00:00
Chubby Granny Chaser
d09a441faa feat: removing lottie react 2024-11-02 15:27:27 +00:00
Chubby Granny Chaser
bef9ec30f9 Merge branch 'main' of github.com:hydralauncher/hydra into feature/cloud-sync 2024-11-02 14:44:51 +00:00
Chubby Granny Chaser
3e33e1f4b3 fix: fixing window on macos 2024-11-02 14:44:42 +00:00
Zamitto
c8485adac5 Merge pull request #1184 from Sir-Kam/Sir-Kam-English-Translation-Modifications
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
[translation] Update en translation.json
2024-11-01 09:16:32 -03:00
Cameron W. A.
d623828fe5 Update translation.json
Fixed the English of some entries as they weren't quite right or didn't flow the best.
2024-10-31 22:06:18 -04:00
Zamitto
0f5c7af703 feat: adjust profile hero current game link not linking correctly 2024-10-31 18:22:22 -03:00
Zamitto
b965d3aa0e Merge branch 'main' into feat/use-native-notification-for-achievements 2024-10-31 17:53:57 -03:00
Zamitto
1d6db5b76b Merge pull request #1181 from expload233/main
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
🎯Update Chinese Translation to fit new version
2024-10-31 17:53:43 -03:00
Zamitto
0b896b8b7c Merge branch 'main' into main 2024-10-31 17:52:08 -03:00
Zamitto
93d12a9fb6 chore: update steam games 2024-10-31 17:39:13 -03:00
Zamitto
ce239e0e20 fix: types 2024-10-31 17:34:13 -03:00
Zamitto
09af1d1f89 feat: remove unused code 2024-10-31 17:19:58 -03:00
Zamitto
3b828ca0f4 feat: adjust css 2024-10-31 17:15:49 -03:00
Zamitto
4f4dd29e5f feat: refactor 2024-10-31 16:57:46 -03:00
Zamitto
9189541c3a feat: i18n 2024-10-31 13:11:52 -03:00
expload
dcb6eb9ba6 Update translation of new functions 2024-10-31 16:03:24 +00:00
expload
e43365e568 🎯Update&Complete Chinese Translation 2024-10-31 16:03:17 +00:00
Zamitto
9ee4e2e29b Merge branch 'main' into feat/use-native-notification-for-achievements
# Conflicts:
#	src/main/index.ts
2024-10-31 12:53:39 -03:00
Eight
760030841a Merge pull request #1177 from hydralauncher/feature/quality-of-life
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
feature/add-start-minimized-option
2024-10-31 12:25:25 -03:00
Hachi-R
5fb08b39fa refactor: rename migration to be more descriptive 2024-10-31 11:39:18 -03:00
Hachi-R
43558f8c0e feat: prevent main window creation when --hidden arg is present 2024-10-31 11:32:20 -03:00
Hachi-R
554889fe7d refactor: remove launch app minimized logic 2024-10-31 09:26:55 -03:00
expload
25e1a15828 Merge branch 'hydralauncher:main' into main 2024-10-31 15:51:45 +08:00
Hachi-R
619090961b chore: refactor hidden startup logic and tray click event 2024-10-31 01:09:10 -03:00
Hachi-R
0ecd27d4d5 lint 2024-10-30 20:00:50 -03:00
Hachi-R
f585e343d9 feat: use argv to start app minimized on system launch 2024-10-30 19:59:37 -03:00
Hachi-R
0d68851cf4 fix: ensure both values are passed to object to prevent false outcome 2024-10-30 17:46:52 -03:00
Hachi-R
36813d5f86 chore: remove unnecessary log 2024-10-30 17:34:38 -03:00
Hachi-R
ad3b84b0ae lint 2024-10-30 15:47:47 -03:00
Hachi-R
9e020652c9 feat: implement launch minimized option 2024-10-30 15:47:42 -03:00
Hachi-R
7af56cd7cc feat: add option to start minimized in user settings 2024-10-30 15:47:33 -03:00
Hachi-R
6dd454a982 feat: add 'startMinimized' property to user preferences 2024-10-30 15:47:22 -03:00
Zamitto
fd80b85786 feat: parse xml 2024-10-30 15:25:11 -03:00
Zamitto
119af47d77 feat: remove audio file 2024-10-29 23:55:55 -03:00
Zamitto
a419b9ae38 feat: add test notification 2024-10-29 23:53:30 -03:00
Zamitto
7d4d434164 chore: libs 2024-10-29 23:47:05 -03:00
Zamitto
5d304f9e13 feat: replace notification window 2024-10-29 23:45:39 -03:00
Zamitto
a45e06efa3 feat: use electron native notification with xml 2024-10-29 23:45:39 -03:00
Zamitto
e7292eb75e chore: update node version 2024-10-29 22:28:35 -03:00
Zamitto
39f731352f feat: use sound lib 2024-10-29 22:17:45 -03:00
Zamitto
9fa9f6d85a feat: use power toast 2024-10-29 21:36:16 -03:00
Zamitto
0a86ec89aa chore: bump version
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
2024-10-29 18:49:30 -03:00
Zamitto
238d207590 Merge pull request #1159 from hydralauncher/fix/remove-wine-prefix-not-null-on-pre-search
fix: remove wine prefix on pre search
2024-10-29 16:41:19 -03:00
Zamitto
98e2d2ec0d chore: update steam-games.json 2024-10-29 11:12:55 -03:00
Zamitto
717dab5c90 Merge pull request #1158 from Zormein/patch-2
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
Update translation.json
2024-10-28 19:51:40 -03:00
Zamitto
d73a46aac2 feat: remove wine prefix on pre search 2024-10-28 19:50:16 -03:00
Zamitto
9f9a4eba18 feat: remove wine prefix on pre search 2024-10-28 18:12:17 -03:00
Zamitto
3bddd7e76b feat: remove wine prefix on pre search 2024-10-28 17:38:27 -03:00
Zormein
7cfc871be2 Update translation.json
Fix little grammar error
2024-10-28 21:25:01 +02:00
Zamitto
5705de7d7a chore: add FAQ to issue template
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
2024-10-27 10:56:32 -03:00
Zamitto
b6fb29ca2d fix: french translation
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-10-26 23:57:10 -03:00
expload
d094230614 merge with en translation 2024-10-26 14:44:17 +00:00
expload
742abb06ac Merge branch 'hydralauncher:main' into main 2024-10-26 21:57:39 +08:00
Zamitto
e89f459c78 Merge pull request #1127 from bernardofernandezz/patch-1
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
fix: not redirecting to readme with correct language
2024-10-25 18:20:16 -03:00
Zamitto
0dac4d5cf3 feat: remove silent auto install 2024-10-25 16:30:44 -03:00
Bernardo Fernandez
93fb26c89b fix: not redirecting to readme with correct language 2024-10-25 08:26:46 -03:00
Zamitto
446d6b75c0 chore: bump version
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-10-24 21:07:38 -03:00
Zamitto
8dd29c7461 feat: disable lottie loop on game page 2024-10-24 20:56:29 -03:00
Zamitto
0ad1a2e3fe fix: shortcut and animation on home
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-10-24 19:32:04 -03:00
Zamitto
3c03d5ce16 Merge pull request #1113 from SoloQTKiller/correcao_traducao
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
Translation Correction
2024-10-23 22:58:47 -03:00
SoloQTKiller
8d8b714c68 Correçao de Tradução 2024-10-23 22:29:26 -03:00
Zamitto
7d79048a25 Merge pull request #1094 from hydralauncher/feat/refactor-achievements-files
feat: refactor achievements file
2024-10-23 21:52:27 -03:00
Zamitto
4a3ba43dae feat: remove uneeded logs 2024-10-23 21:14:04 -03:00
Zamitto
dc413736e8 fix: sign in to see achievements overlay 2024-10-23 20:17:08 -03:00
Zamitto
2d98addd02 Merge branch 'main' into feat/refactor-achievements-files 2024-10-23 13:31:22 -03:00
Zamitto
b85e712d8c chore: bump version 2024-10-23 13:24:09 -03:00
Zamitto
582c276e95 fix: N/A problem on repacks 2024-10-23 13:23:44 -03:00
Zamitto
430b07eb89 Merge pull request #1096 from Zormein/patch-1
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
Update Estonian translation
2024-10-23 06:32:04 -03:00
Zamitto
b46f46bc45 Merge branch 'main' into feat/refactor-achievements-files 2024-10-23 06:24:03 -03:00
Zamitto
fd41ec5070 Merge branch 'main' into patch-1 2024-10-23 06:23:35 -03:00
Zamitto
25d0f77c1d Merge pull request #1095 from Lianela/main
feat: new strings translated to spanish
2024-10-23 06:19:05 -03:00
Zormein
c5b2a8242c Update Estonian translation
Added new translations & removed duplicate lines.
2024-10-23 09:16:27 +03:00
Lianela
8b7ce6b062 fix: comma... (second one) 2024-10-22 23:19:00 -06:00
Lianela
db58ff0ba3 fix: comma...
(this is akward from my side)
2024-10-22 23:18:28 -06:00
Lianela
e951e11e62 Update translation.json 2024-10-22 23:09:47 -06:00
Lianela
0b854eda7c feat: new strings translated to spanish 2024-10-22 23:08:48 -06:00
Zamitto
648083fbf4 chore: bump version
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-10-23 00:07:50 -03:00
Zamitto
09316dac9e fix: isPortableVersion 2024-10-23 00:07:45 -03:00
Zamitto
670df826af chore: bump version 2024-10-23 00:06:54 -03:00
Zamitto
912f9611ea fix: isPortableVersion 2024-10-22 23:47:35 -03:00
Zamitto
d8254353b5 feat: refactor achievements file 2024-10-22 23:24:22 -03:00
Zamitto
73185e7cbc fix: small adjustment 2024-10-22 22:33:23 -03:00
Zamitto
c36c940a79 fix: subscription 2024-10-22 22:25:35 -03:00
Zamitto
1d73b0a251 Merge pull request #1091 from MigProPlayer/patch-1
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
Update Portuguese (Portugal) translation
2024-10-22 19:13:08 -03:00
MigPro
8e4e87840a Merge branch 'main' into patch-1 2024-10-22 23:10:30 +01:00
MigPro
cb8d9aeb82 Update pt-PT translation with new strings
Also fixed some strings with bad grammar (I basically rewrote the entire translation from scratch)
2024-10-22 23:07:24 +01:00
Zamitto
1656ff1b0a fix: subscription check 2024-10-22 19:07:20 -03:00
Zamitto
b54cfbadc5 feat: i18n 2024-10-22 18:41:42 -03:00
Zamitto
f02959f134 feat: hide tour modal 2024-10-22 18:21:46 -03:00
Zamitto
3bff55ef2c Merge pull request #1090 from hydralauncher/feat/i18n
feat: i18n adjustments
2024-10-22 18:11:35 -03:00
Zamitto
02d1f8ff47 feat: i18n 2024-10-22 17:50:19 -03:00
Zamitto
f1cf4b683b Merge branch 'main' into feat/i18n 2024-10-22 17:47:29 -03:00
Zamitto
a774b107f3 Merge pull request #1087 from hydralauncher/feature/cloud-sync-improvements
feat: improving cloud sync manual mapping
2024-10-22 17:47:14 -03:00
Zamitto
57179446ce Merge branch 'feature/cloud-sync-improvements' into feat/i18n 2024-10-22 17:33:02 -03:00
Zamitto
034e71b3ee Merge branch 'main' into feature/cloud-sync-improvements 2024-10-22 17:32:55 -03:00
Zamitto
c1144d3891 feat: update translations 2024-10-22 17:32:40 -03:00
Zamitto
2620f31989 Merge branch 'feature/cloud-sync-improvements' into feat/i18n
# Conflicts:
#	src/locales/en/translation.json
2024-10-22 17:17:30 -03:00
Zamitto
3bca6eed2b feat: i18n 2024-10-22 17:14:37 -03:00
Zamitto
d10fed6aeb feat: update i18n 2024-10-22 17:01:56 -03:00
Zamitto
ee73c04b12 fix: audio only playing once 2024-10-22 16:25:51 -03:00
Zamitto
73eb7ac637 feat: add new achievement provider 2024-10-22 16:13:50 -03:00
Zamitto
144444ad10 Merge pull request #1089 from Zormein/main
Added Estonian translation
2024-10-22 11:43:58 -03:00
Zormein
8d892ab440 Merge branch 'main' into main 2024-10-22 17:22:01 +03:00
Zormein
eb6c056713 Changed Readme code to et & added Estonian to other readme files as well 2024-10-22 17:20:39 +03:00
Zormein
4063568a42 Changed code from ee to et & added language to index.ts. 2024-10-22 17:15:27 +03:00
Zamitto
7ebe42ebf1 Merge pull request #1078 from Deeptanshuu/patch-1
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
Fixed Translation
2024-10-22 11:14:43 -03:00
Chubby Granny Chaser
21b6783624 fix: adding wine prefix to preview 2024-10-22 15:11:47 +01:00
Zamitto
1ab9564fac Merge branch 'main' into patch-1 2024-10-22 11:06:10 -03:00
Zamitto
ab618cea90 Merge branch 'main' into main 2024-10-22 11:03:45 -03:00
Zamitto
202533c85c Merge pull request #1088 from hydralauncher/feat/update-hydra-api-subscription
feat: HydraApi updates
2024-10-22 11:03:09 -03:00
Zormein
7a5cacf103 Update translation.json
Made prettier using Prettier
2024-10-22 16:42:02 +03:00
Zormein
dfb6a324c3 Update translation.json 2024-10-22 16:33:04 +03:00
Zormein
6a26c6e5e8 Add files via upload 2024-10-22 16:31:49 +03:00
Zormein
5dac84051e Update README.ee.md 2024-10-22 16:19:58 +03:00
Zamitto
57e4bd4d27 feat: updates 2024-10-22 10:17:54 -03:00
Zormein
dec4254cb3 Add files via upload 2024-10-22 16:07:55 +03:00
Chubby Granny Chaser
7d3d5d42d1 fix: adding wine prefix to preview 2024-10-22 14:01:44 +01:00
Chubby Granny Chaser
6bbd916e99 Merge branch 'feature/cloud-sync-improvements' of https://github.com/hydralauncher/hydra into feature/cloud-sync-improvements 2024-10-22 13:40:46 +01:00
Chubby Granny Chaser
ceef316a19 fix: adding wine prefix to preview 2024-10-22 13:39:41 +01:00
Chubby Granny Chaser
fe056eaf85 Merge branch 'main' into feature/cloud-sync-improvements 2024-10-22 13:35:30 +01:00
Chubby Granny Chaser
bfcf8178d8 feat: improving cloud sync manual mapping 2024-10-22 13:34:34 +01:00
Zamitto
3ade87fe0b Merge pull request #1086 from Lianela/main
feat. updated spanish translation
2024-10-22 09:16:10 -03:00
Lianela
07205d043d feat. updated spanish translation
This update adds this:
- fixed mistakes
- changed some words to make it more friendly
- added achievements strings
- hydra cloud strings added too
- re-done entire translation to make sure everything is good
- strings compared to the english translation to make everything easier to find
- deleted strings that were still on spanish translation but in english didn't exist
- added missing strings and translated from last updates that weren't translated or missing at all

Basically I took the time to clean everything and make sure it was ready on time
2024-10-21 20:43:16 -06:00
Zamitto
7de6e96f63 feat: wait get me on main
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-10-21 19:26:34 -03:00
Zamitto
9c595583cd Merge pull request #1031 from hydralauncher/feature/game-achievements
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
game achievements
2024-10-21 17:54:48 -03:00
Zamitto
1c63fc11ee chore: docs 2024-10-21 17:45:42 -03:00
Zamitto
49ee05770a feat: creating subscribe modal 2024-10-21 17:41:52 -03:00
Zamitto
44131fe831 Merge branch 'feature/cloud-sync' into feature/game-achievements 2024-10-21 16:13:58 -03:00
Zamitto
a72eb768e7 feat: show buttons to open checkout 2024-10-21 16:12:10 -03:00
Chubby Granny Chaser
955725b646 fix: fixing games with colon ludusavi 2024-10-21 20:10:18 +01:00
Zamitto
8a24fd8ef9 feat: add envs to gh action yml 2024-10-21 15:54:37 -03:00
Zamitto
b7f717a6f4 feat: use env 2024-10-21 15:38:43 -03:00
Zamitto
6d1f290895 Merge branch 'feature/cloud-sync' into feature/game-achievements 2024-10-21 15:34:13 -03:00
Chubby Granny Chaser
e86daacad4 ci: testing cloudfront deployment 2024-10-21 19:33:25 +01:00
Zamitto
f2d66df34f Merge branch 'feature/cloud-sync' into feature/game-achievements
# Conflicts:
#	src/main/services/achievements/achievement-watcher.ts
#	src/main/services/achievements/update-local-unlocked-achivements.ts
#	src/main/services/hydra-api.ts
2024-10-21 15:32:16 -03:00
Zamitto
21fecb2c4e feat: open checkout page 2024-10-21 15:30:38 -03:00
Chubby Granny Chaser
af8468066a feat: adding artifact limit 2024-10-21 19:21:25 +01:00
Chubby Granny Chaser
34a33ccef3 feat: adding artifact limit 2024-10-21 19:19:18 +01:00
Zamitto
6ef1135ba2 feat: update error log 2024-10-21 15:10:07 -03:00
Zamitto
df5f82d47f feat: getMe on launch 2024-10-21 15:05:56 -03:00
Zamitto
d801bad49e feat: show notification on launch 2024-10-21 12:57:31 -03:00
Zamitto
9f76ae8c59 feat: re add log interceptor 2024-10-21 11:28:38 -03:00
Zamitto
2f9fa6da48 feat: add new possible path 2024-10-21 10:37:31 -03:00
Zamitto
d0f42e73ff feat: get achievement data on demand 2024-10-21 10:27:16 -03:00
Zamitto
0bcf005365 feat: refactor 2024-10-21 04:40:04 -03:00
Zamitto
27e8a0820f feat: optimizations 2024-10-21 04:34:39 -03:00
Zamitto
fd5262cd6e feat: change Users to users 2024-10-21 02:57:14 -03:00
Zamitto
36b98a7d73 fix: return on parse file 2024-10-21 02:31:06 -03:00
Zamitto
c6fda9b4d8 feat: start watching new achievements only after finishing sync 2024-10-21 02:29:40 -03:00
Zamitto
bb65d77fc6 feat: adjustments on achievements 2024-10-21 01:42:07 -03:00
Zamitto
22fc95ff53 feat: wine prefix for achievements 2024-10-20 23:45:34 -03:00
Zamitto
36e6a8cef7 feat: refactor 2024-10-20 22:13:06 -03:00
Zamitto
33e91e2007 feat: update compare achievement response 2024-10-20 14:40:08 -03:00
Chubby Granny Chaser
2599b332fd Merge branch 'feature/game-achievements' of github.com:hydralauncher/hydra into feature/cloud-sync 2024-10-20 18:16:02 +01:00
Chubby Granny Chaser
735b540af4 feat: adding console.log 2024-10-20 18:11:13 +01:00
Zamitto
1d7858438d feat: update logs for achievements 2024-10-20 13:01:24 -03:00
Zamitto
993b35cf3b feat: adjust rld achievement 2024-10-20 12:48:04 -03:00
Zamitto
63507f00f6 Merge branch 'feature/cloud-sync' into feature/game-achievements 2024-10-20 12:04:12 -03:00
Chubby Granny Chaser
ded56c518d feat: adding file parser 2024-10-20 08:56:52 +01:00
Chubby Granny Chaser
fbae552b1b feat: adding file parser 2024-10-20 08:55:41 +01:00
Chubby Granny Chaser
0567674f2a Merge branch 'main' of github.com:hydralauncher/hydra into feature/cloud-sync 2024-10-20 08:12:51 +01:00
Chubby Granny Chaser
b7c9b5ec54 fix: fixing multiple calls for backup 2024-10-20 08:09:15 +01:00
Zamitto
f0a2bf2f48 feat: use new endpoint to get compared achievements 2024-10-19 17:35:50 -03:00
Zamitto
89bb099caa feat: add link to game in achievements page 2024-10-19 14:01:33 -03:00
Zamitto
f7b9a88219 Merge branch 'main' into feature/game-achievements 2024-10-19 13:35:31 -03:00
Zamitto
7f8fd32cfe fix: headers for auth window 2024-10-19 13:30:17 -03:00
Zamitto
614c840aac Merge branch 'feature/cloud-sync' into feature/game-achievements 2024-10-19 11:53:03 -03:00
Zamitto
bc6d038c58 feat: add correct text 2024-10-19 11:52:55 -03:00
Chubby Granny Chaser
0e5d37a3a0 feat: adding wine prefix 2024-10-19 15:48:41 +01:00
Deeptanshu Lal
1bdb80a92b Update translation.json
Change Conclusion to Completion in ETA
2024-10-19 16:08:52 +05:30
Zamitto
584f725eda feat: adjustments 2024-10-19 04:06:34 -03:00
Zamitto
1176ddbe30 Merge pull request #1074 from hohky/main
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
Changes in language and code visual
2024-10-18 13:35:36 -03:00
Hohky
c7fe59c854 Delete .yarnrc 2024-10-18 17:15:59 +01:00
Hohky
9a61a3b448 Delete .yarn/releases/yarn-1.22.22.cjs 2024-10-18 17:15:48 +01:00
Hohky
801658fb39 changes in language and code visual 2024-10-18 16:02:57 +00:00
Zamitto
6c6d13e387 feat: adjusting ui 2024-10-18 12:31:16 -03:00
Zamitto
ab27fd21d7 feat: redoing page 2024-10-18 12:02:07 -03:00
Zamitto
2700f27d03 feat: redoing page 2024-10-18 01:00:42 -03:00
Zamitto
ea5b07a1ec feat: testing new achievements page ui 2024-10-16 23:09:54 -03:00
Zamitto
108b2552b5 feat: achievements adjustments 2024-10-16 12:37:44 -03:00
Chubby Granny Chaser
a498f9dd80 feat: adding background image migration 2024-10-16 11:06:15 +01:00
Chubby Granny Chaser
67109ff51a feat: adding background image upload 2024-10-16 10:59:57 +01:00
Chubby Granny Chaser
bdaf68ad23 Merge branch 'feature/game-achievements' of github.com:hydralauncher/hydra into feature/cloud-sync 2024-10-16 10:46:35 +01:00
Chubby Granny Chaser
05625e7594 feat: enabling gif upload 2024-10-16 10:46:17 +01:00
Zamitto
4820109b8d feat: WIP validate cloud subscription 2024-10-16 01:37:11 -03:00
Zamitto
5c4ddd9b7a feat: profile active subscription 2024-10-16 01:08:10 -03:00
Zamitto
fe681c3af9 feat: create UserSubscription 2024-10-16 00:58:22 -03:00
Zamitto
8ff925fbb9 feat: refactor 2024-10-15 16:16:38 -03:00
Zamitto
958a7d037f feat: add profileImage to achievements page 2024-10-15 12:39:39 -03:00
Zamitto
c5764a49e1 chore: update dependencies 2024-10-15 11:56:53 -03:00
Zamitto
64c16e82b4 fix: ini files with BOM and new online fix location 2024-10-14 20:48:41 -03:00
Zamitto
e9186e0a3c fix: bug 2024-10-14 17:46:52 -03:00
Zamitto
e7a4888f54 feat: skeleton 2024-10-14 15:06:02 -03:00
Zamitto
359733fa40 fix: seeing own profile 2024-10-14 14:42:16 -03:00
Zamitto
034e88e286 feat: adjusting achievements page 2024-10-14 14:20:42 -03:00
Zamitto
1d29bc3620 feat: add achievement notifications setting 2024-10-13 22:37:36 -03:00
Zamitto
c24f6be1b7 feat: comparing achievements 2024-10-13 22:22:36 -03:00
Zamitto
694e0cd12c feat: achievements ui 2024-10-13 22:07:16 -03:00
Zamitto
8cc8b5fe6f feat: format date based on language for repacks 2024-10-13 21:30:21 -03:00
Zamitto
a4475d2145 feat: achievement section for user not logged in 2024-10-13 21:14:06 -03:00
Zamitto
a064958d4c feat: update achievements processors 2024-10-13 16:03:54 -03:00
Zamitto
7e25741657 feat: achievements page adjustments 2024-10-11 16:02:38 -03:00
Zamitto
0d909d6eeb chore: cache 2024-10-11 15:33:35 -03:00
Zamitto
9a699e082d chore: test cache 2024-10-11 15:29:46 -03:00
Zamitto
bf416e47b3 chore: cache 2024-10-11 14:05:28 -03:00
Zamitto
0461aa2b71 chore: cache 2024-10-11 13:39:31 -03:00
Zamitto
b3aae3e8aa chore: update cache 2024-10-11 13:27:27 -03:00
Zamitto
887ec3f8eb feat: update achievements page 2024-10-11 13:24:43 -03:00
Zamitto
be08fb6d14 feat: temp remove fetch from local cache 2024-10-11 13:13:47 -03:00
Chubby Granny Chaser
05653500b6 Merge branch 'feature/cloud-sync' of github.com:hydralauncher/hydra into feature/cloud-sync 2024-10-10 13:29:42 +01:00
Chubby Granny Chaser
0241d8752b feat: adding border to profile hero 2024-10-10 13:29:32 +01:00
Zamitto
c8022896a6 feat: refactor 2024-10-09 23:11:28 -03:00
Zamitto
3dcdcae9a7 Merge branch 'feature/cloud-sync' into feature/game-achievements 2024-10-09 21:45:35 -03:00
Zamitto
fa026f82a6 feat: update achievements page 2024-10-09 21:26:45 -03:00
Chubby Granny Chaser
e3f61bbaa8 fix: fixing games with : 2024-10-10 00:33:16 +01:00
Zamitto
8fb31e0e64 Merge branch 'main' into feature/game-achievements 2024-10-09 10:37:30 -03:00
Zamitto
03413a9e6b fix: open game installer when download is zip 2024-10-08 15:44:21 -03:00
Zamitto
ffac677e3f feat: update achievements on sidebar 2024-10-08 15:24:49 -03:00
Chubby Granny Chaser
446b03eeff feat: removing documents mapping 2024-10-08 04:23:33 +01:00
Chubby Granny Chaser
16cd5b43d8 feat: adding drive mapping 2024-10-08 03:33:57 +01:00
Chubby Granny Chaser
bcca701dc9 feat: adding drive mapping 2024-10-08 03:33:06 +01:00
Zamitto
365178b06d fix: update normalize path 2024-10-07 22:29:39 -03:00
Zamitto
1bba8c84bd Merge branch 'feature/cloud-sync' into feature/game-achievements 2024-10-07 21:31:21 -03:00
Zamitto
a557735545 feat: update hook dependency 2024-10-07 21:30:53 -03:00
Chubby Granny Chaser
1705b89355 fix: normalizing windows paths 2024-10-08 01:13:09 +01:00
Zamitto
fca585d062 feat: preview version of achievements screen 2024-10-07 20:25:05 -03:00
Zamitto
63aee44982 feat: refactor achievement listeners 2024-10-07 20:16:12 -03:00
Zamitto
f5445b00f4 Merge branch 'feature/cloud-sync' into feature/game-achievements 2024-10-07 19:13:20 -03:00
Zamitto
e93088e8b9 Merge branch 'feature/cloud-sync' into feature/game-achievements
# Conflicts:
#	src/locales/en/translation.json
#	src/locales/pt-BR/translation.json
#	src/main/events/library/add-game-to-library.ts
#	src/renderer/src/pages/game-details/sidebar/sidebar.css.ts
#	src/renderer/src/pages/game-details/sidebar/sidebar.tsx
2024-10-07 19:12:57 -03:00
Chubby Granny Chaser
0f1ed20bbb fix: removing backup folder before uploading 2024-10-07 22:30:29 +01:00
Chubby Granny Chaser
9405b0dcfc fix: removing backup folder before uploading 2024-10-07 22:29:48 +01:00
Zamitto
39af661720 feat: create achievements page 2024-10-07 17:17:12 -03:00
Chubby Granny Chaser
75be6e5b47 feat: adding hltb key extraction 2024-10-07 21:02:15 +01:00
Chubby Granny Chaser
baafc6c7d1 feat: adding hltb key extraction 2024-10-07 20:56:53 +01:00
Zamitto
6d4f957e2b feat: add achievement section title 2024-10-07 12:26:36 -03:00
Zamitto
7c9c27801f feat: add dodi folder 2024-10-07 11:52:25 -03:00
Zamitto
7f09a7796f feat: remove awaits 2024-10-06 15:15:24 -03:00
Zamitto
af83152997 feat: creamapi process 2024-10-06 11:18:14 -03:00
Zamitto
5d21adcbb1 wip: get alternate objectIds 2024-10-06 02:48:46 -03:00
Zamitto
456e7ed809 feat: add alternative objectIds 2024-10-06 02:33:02 -03:00
Zamitto
f5da836b1b feat: remove unneeded log persist 2024-10-05 23:10:32 -03:00
Zamitto
1ea64d7243 fix: file not being processed if it was created after watcher started 2024-10-05 23:07:14 -03:00
Zamitto
57118ec5b9 feat: add rle folder 2024-10-05 22:43:19 -03:00
Zamitto
002028130b feat: try add FLT and fix possible bug on unlockedAchievements 2024-10-05 22:17:00 -03:00
Zamitto
71e7f1ee58 fix: process user_stats.ini 2024-10-05 20:31:05 -03:00
Chubby Granny Chaser
0222121288 fix: fixing multiple folders 2024-10-05 07:12:47 +01:00
Chubby Granny Chaser
f6acfa4aee feat: removing existing directory 2024-10-05 04:53:15 +01:00
Zamitto
2a6b757e37 feat: get achievement from game directory on launch 2024-10-05 00:49:52 -03:00
Chubby Granny Chaser
9391b7e6c9 feat: removing directory sync 2024-10-05 04:29:29 +01:00
Chubby Granny Chaser
b99dbe83e2 adding mkdir for backup path 2024-10-05 03:55:48 +01:00
Chubby Granny Chaser
bcbe6c9619 updating current home dir 2024-10-05 03:53:51 +01:00
Chubby Granny Chaser
0873c8e244 fix: fixing windows path replacement 2024-10-05 03:27:40 +01:00
Chubby Granny Chaser
58502aeb1f feat: adding change hero 2024-10-05 02:25:46 +01:00
Chubby Granny Chaser
4222fcec52 feat: adding change hero 2024-10-05 02:22:43 +01:00
Chubby Granny Chaser
035e424a76 feat: adding change hero 2024-10-05 02:21:41 +01:00
Zamitto
5e313a0374 feat: add 3dm file inside game directory 2024-10-04 16:37:42 -03:00
Zamitto
81e2bda049 chore: add preview on version 2024-10-04 13:58:32 -03:00
Zamitto
d27ce9781f Merge branch 'feature/game-achievements' into chore/test-preview 2024-10-04 13:56:40 -03:00
Zamitto
94e242168c fix: file location 2024-10-04 13:48:03 -03:00
Zamitto
e4ca3d38ec Merge branch 'feature/game-achievements' into chore/test-preview 2024-10-04 13:27:03 -03:00
Zamitto
0acb0fd4c8 feat: add more folders and organize code 2024-10-04 13:26:52 -03:00
Zamitto
241d7692b9 feat: add new rld folder 2024-10-04 11:56:36 -03:00
Zamitto
0895e9ec72 Merge branch 'feature/game-achievements' into chore/test-preview 2024-10-03 21:29:33 -03:00
Zamitto
9b932358e8 feat: increase notification time 2024-10-03 21:29:07 -03:00
Zamitto
3ed4547dfe Merge branch 'feature/game-achievements' into chore/test-preview 2024-10-03 21:11:16 -03:00
Zamitto
9731035820 feat: searching new folders 2024-10-03 21:04:37 -03:00
Zamitto
7e2d9316f3 feat: achievement animation 2024-10-03 19:13:00 -03:00
Zamitto
7cddcd8147 feat: refactoring code 2024-10-03 11:16:30 -03:00
Zamitto
5da9eb6366 Merge branch 'feature/game-achievements' into chore/test-preview 2024-10-02 23:09:15 -03:00
Zamitto
9c7651d8e2 feat: dev tools 2024-10-02 23:08:58 -03:00
Zamitto
8b5ed96e9b Merge branch 'feature/game-achievements' into chore/test-preview
# Conflicts:
#	yarn.lock
2024-10-02 22:59:32 -03:00
Zamitto
f0e0abae8c feat: showing achievements queue 2024-10-02 22:58:10 -03:00
Zamitto
cadb9e8dff feat: add GSE Saves 2024-10-02 21:55:42 -03:00
Zamitto
beaa919c80 feat: refactoring notification window 2024-10-02 18:01:58 -03:00
Zamitto
ef4844b8c0 Merge branch 'feature/game-achievements' into chore/test-preview
# Conflicts:
#	src/main/services/window-manager.ts
#	src/renderer/src/context/game-details/game-details.context.tsx
#	src/renderer/src/declaration.d.ts
#	src/types/index.ts
#	yarn.lock
2024-10-02 15:16:43 -03:00
Zamitto
d5b1bcdc7f fix: adjustment to get achievements when file is created after watcher started 2024-10-02 13:59:48 -03:00
Zamitto
05652d9c1b feat: refactor watcher 2024-10-02 13:30:07 -03:00
Zamitto
6a0f47eacb feat: use uppercase 2024-10-01 23:53:37 -03:00
Zamitto
8f9508c00e chore: bump libraries
# Conflicts:
#	package.json
#	yarn.lock
2024-10-01 23:52:40 -03:00
Zamitto
44e59a5f6f feat: refactoring achievements watcher 2024-10-01 22:29:42 -03:00
Zamitto
c18c41ac95 feat: update achievement audio and refactors 2024-10-01 18:34:46 -03:00
Zamitto
084b7f5b9c chore: bump libraries
# Conflicts:
#	yarn.lock
2024-10-01 18:32:02 -03:00
Zamitto
92b0ced08a feat: logs 2024-10-01 11:08:08 -03:00
Zamitto
f6ce6eddb8 feat: logs 2024-10-01 10:50:30 -03:00
Zamitto
a031049b73 feat: adjustments 2024-09-29 16:46:12 -03:00
Zamitto
a48e269d7f feat: adjustment update achievements on api 2024-09-29 16:24:57 -03:00
Zamitto
333b143b17 feat: route adjustment 2024-09-29 11:36:44 -03:00
Chubby Granny Chaser
586df616e8 feat: removing session interception from auth 2024-09-28 00:59:17 +01:00
Zamitto
eda47fc6af Merge branch 'main' into feature/game-achievements
# Conflicts:
#	src/renderer/src/context/game-details/game-details.context.tsx
#	src/renderer/src/main.tsx
2024-09-27 20:54:02 -03:00
Chubby Granny Chaser
202751ddca feat: adding logger 2024-09-28 00:24:18 +01:00
Chubby Granny Chaser
790f7a2549 feat: adding logger 2024-09-28 00:23:47 +01:00
Chubby Granny Chaser
eebd09ccf2 feat: adding logger 2024-09-28 00:22:38 +01:00
Chubby Granny Chaser
ac9565f924 Merge branch 'main' of github.com:hydralauncher/hydra into feature/cloud-sync 2024-09-27 23:19:51 +01:00
Chubby Granny Chaser
55a92fd68a docs: moving readme 2024-09-27 23:19:39 +01:00
Zamitto
84420668fc fix: import 2024-09-27 18:20:29 -03:00
Zamitto
4bf25f8c52 feat: adjust notifications code 2024-09-27 17:12:12 -03:00
Zamitto
bdba3dd29c feat: browser window for notification 2024-09-27 14:59:08 -03:00
Zamitto
753a293cd7 feat: remove notification spam 2024-09-26 21:51:15 -03:00
Zamitto
d7c05247c3 feat: merge achievements with remote 2024-09-26 18:27:35 -03:00
Zamitto
54dae87a58 feat: grayscale and update game details context on achievement event 2024-09-26 17:47:15 -03:00
Zamitto
50b34dc864 feat: add catch 2024-09-26 16:13:41 -03:00
Zamitto
08fbd4c8d8 feat: fix notification icons 2024-09-26 16:09:36 -03:00
Zamitto
780ab5f909 feat: refactor 2024-09-26 15:33:32 -03:00
Zamitto
c72eefdb77 feat: notifications 2024-09-26 14:50:23 -03:00
Zamitto
5c790edb2c feat: real time achievement track 2024-09-26 13:37:33 -03:00
Zamitto
24d21b9839 feat: use different db for staging build 2024-09-26 09:30:37 -03:00
Chubby Granny Chaser
5b9d860937 feat: adding i18n for cloud sync 2024-09-25 22:22:52 +01:00
Chubby Granny Chaser
9b5e13ad35 feat: adding i18n for cloud sync 2024-09-25 22:22:26 +01:00
Zamitto
25cfdb50d8 feat: refactor 2024-09-25 18:16:32 -03:00
Chubby Granny Chaser
32fa69627c Merge branch 'feature/cloud-sync' of github.com:hydralauncher/hydra into feature/cloud-sync 2024-09-25 21:07:48 +01:00
Chubby Granny Chaser
3e165e05fb fix: adding no backup preview condition 2024-09-25 21:07:41 +01:00
Chubby Granny Chaser
89b830fe9a feat: clearing backup history on sign out 2024-09-25 20:44:56 +01:00
Chubby Granny Chaser
2d7aef34c6 Merge branch 'main' into feature/cloud-sync 2024-09-25 19:54:38 +01:00
Chubby Granny Chaser
0ea7329aa3 fix: fixing chmod for windows on postinstall 2024-09-25 19:53:37 +01:00
Chubby Granny Chaser
b87aade2a3 ci: pointing build to staging 2024-09-25 19:48:32 +01:00
Chubby Granny Chaser
e64a414309 feat: adding cloud sync 2024-09-25 19:37:28 +01:00
Zamitto
f98432f6c6 feat: refactor game achievement table 2024-09-24 17:31:49 -03:00
Zamitto
f3a5f90bc7 feat: save achievements cache 2024-09-24 16:32:48 -03:00
Zamitto
7e3cf0a00e feat: starting showing local achievements 2024-09-24 14:00:56 -03:00
Zamitto
5b0cf1e82b feat: handle user not logged in error 2024-09-24 13:06:32 -03:00
Zamitto
500cd2a531 feat: saving achievements on open launcher 2024-09-24 13:06:24 -03:00
JackEnx
8fb62af0cf feature: wip-game-achievements
refactor: rename files
2024-09-24 10:33:54 -03:00
expload
2edb96ba5b Create pull-request-template.md 2024-07-10 14:16:30 +08:00
336 changed files with 17483 additions and 10861 deletions

View File

@@ -1,5 +1,2 @@
MAIN_VITE_API_URL=API_URL
MAIN_VITE_AUTH_URL=AUTH_URL
MAIN_VITE_STEAMGRIDDB_API_KEY=YOUR_API_KEY
MAIN_VITE_SENTRY_DSN=YOUR_SENTRY_DSN
SENTRY_AUTH_TOKEN=

View File

@@ -3,3 +3,4 @@ dist
out
.gitignore
migration.stub
hydra-python-rpc/

View File

@@ -26,4 +26,9 @@ module.exports = {
},
],
},
settings: {
react: {
version: "detect",
},
},
};

View File

@@ -1,5 +1,5 @@
name: Bug Report
description: Create a report to help us improve. Write in English, please.
description: Create a report to help us improve. Write in English.
title: "[BUG] Write a title for your bug"
labels: ["bug"]
body:
@@ -61,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
View 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:**
-

View File

@@ -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,28 +40,45 @@ jobs:
sudo apt-get install -y libarchive-tools
yarn build:linux
env:
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_AUTH_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 }}
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_AUTH_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

View File

@@ -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

View File

@@ -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'
@@ -44,22 +44,42 @@ jobs:
env:
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_AUTH_URL }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
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 }}
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_AUTH_URL }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
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
View File

@@ -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

View File

@@ -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,18 +13,19 @@
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
[![es](https://img.shields.io/badge/lang-es-red)](README.es.md)
[![fr](https://img.shields.io/badge/lang-fr-blue)](README.fr.md)
[![de](https://img.shields.io/badge/lang-de-black)](README.de.md)
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](./docs/README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](./README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](./docs/README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](./docs/README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](./docs/README.be.md)
[![es](https://img.shields.io/badge/lang-es-red)](./docs/README.es.md)
[![fr](https://img.shields.io/badge/lang-fr-blue)](./docs/README.fr.md)
[![de](https://img.shields.io/badge/lang-de-black)](./docs/README.de.md)
[![ita](https://img.shields.io/badge/lang-it-red)](./docs/README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](./docs/README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](./docs/README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](./docs/README.nb.md)
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](./docs/README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
@@ -124,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/).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 604 KiB

View File

@@ -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 @@
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](../README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
@@ -25,8 +25,9 @@
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](screenshot.png)
</div>

View File

@@ -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 @@
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](../README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
@@ -25,8 +25,9 @@
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Katalog](./docs/screenshot.png)
![Hydra Katalog](screenshot.png)
</div>

View File

@@ -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 @@
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](../README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
@@ -24,8 +24,9 @@
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](screenshot.png)
</div>

View File

@@ -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 @@
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](../README.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
[![pl](https://img.shields.io/badge/lang-pl-white)](README.pl.md)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
@@ -25,8 +25,9 @@
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Katalog](./docs/screenshot.png)
![Hydra Katalog](screenshot.png)
</div>

View File

@@ -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 @@
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](../README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
@@ -25,8 +25,9 @@
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](screenshot.png)
</div>

186
docs/README.et.md Normal file
View 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>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](../README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
[![es](https://img.shields.io/badge/lang-es-red)](README.es.md)
[![fr](https://img.shields.io/badge/lang-fr-blue)](README.fr.md)
[![de](https://img.shields.io/badge/lang-de-black)](README.de.md)
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Kataloog](screenshot.png)
</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.

View File

@@ -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 @@
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](../README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
@@ -25,8 +25,9 @@
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Catalogue Hydra](./docs/screenshot.png)
![Catalogue Hydra](screenshot.png)
</div>

View File

@@ -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>
@@ -25,8 +25,9 @@
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](./screenshot.png)
</div>

View File

@@ -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 @@
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](../README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
@@ -24,8 +24,9 @@
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](screenshot.png)
</div>

View File

@@ -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>
@@ -25,8 +25,9 @@
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](./screenshot.png)
</div>

View File

@@ -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 @@
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](../README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
@@ -25,8 +25,9 @@
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](./screenshot.png)
</div>
@@ -50,9 +51,9 @@
- [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
@@ -152,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
@@ -160,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:
@@ -176,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" />

View File

@@ -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 @@
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](../README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
@@ -25,8 +25,9 @@
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](./screenshot.png)
</div>

View File

@@ -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 @@
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](../README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
@@ -25,8 +25,9 @@
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](screenshot.png)
</div>

View File

@@ -3,9 +3,12 @@ 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/*"

View File

@@ -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()],
},
};
});

View File

@@ -1,6 +1,6 @@
{
"name": "hydralauncher",
"version": "2.1.7",
"version": "3.1.2",
"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,81 +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",
"dexie": "^4.0.8",
"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",

View 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
View 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))

View File

@@ -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)

View File

@@ -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"
)]
)

View File

@@ -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

View File

@@ -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

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 18 KiB

120
scripts/postinstall.cjs Normal file
View 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
View 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,
}),
});
}
});

File diff suppressed because one or more lines are too long

View File

@@ -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": "لافتة الملف الشخصي المتحركة"
}
}

View File

@@ -2,7 +2,6 @@
"language_name": "беларуская мова",
"home": {
"featured": "Рэкамэндаванае",
"trending": "Актуальнае",
"surprise_me": "Здзіві мяне",
"no_results": "Няма вынікаў"
},

View File

@@ -0,0 +1,381 @@
{
"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": {
"next_page": "Следваща страница",
"previous_page": "Предишна страница"
},
"game_details": {
"open_download_options": "Варианти за изтегляне",
"download_options_zero": "Няма варианти за изтегляне",
"download_options_one": "{{count}} варианти за изтегляне",
"download_options_other": "{{count}} варианти за изтегляне",
"updated_at": "Обновено на {{updated_at}}",
"install": "Инсталирай",
"resume": "Продължи",
"pause": "Пауза",
"cancel": "Отказ",
"remove": "Премахни",
"space_left_on_disk": "{{space}} място на диска",
"eta": "Заклчение {{eta}}",
"calculating_eta": "Калкулиране на оставащо време…",
"downloading_metadata": "Изтегляне на метадата…",
"filter": "Филтрирай 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": {
"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": {
"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": {
"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": {
"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 Cloud Абонамент",
"subscribe_now": "Абонирай се сега",
"cloud_saving": "Запазване в облака",
"cloud_achievements": "Запазете постиженията си в облака",
"animated_profile_picture": "Анимирана профилна снимка",
"premium_support": "Премиум поддръжка",
"show_and_compare_achievements": "Показвайте и сравнявайте постиженията си с тези на други потребители",
"animated_profile_banner": "Анимиран профилен банер"
}
}

View File

@@ -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ó",

View File

@@ -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"
}
}

View File

@@ -5,7 +5,6 @@
},
"home": {
"featured": "Anbefalet",
"trending": "Trender",
"surprise_me": "Overrask mig",
"no_results": "Ingen resultater fundet",
"start_typing": "Begynd at skrive for at søge...",
@@ -252,7 +251,7 @@
"last_time_played": "Sidst spillet {{period}}",
"activity": "Seneste aktivitet",
"library": "Bibliotek",
"total_play_time": "Samlet spiltid: {{amount}}",
"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",

View File

@@ -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",

View File

@@ -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"
"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,43 @@
"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",
"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 +208,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 +229,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 +244,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 +263,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 +280,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 +306,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 +345,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",
@@ -312,6 +368,47 @@
"report_reason_spam": "Spam",
"report_reason_other": "Other",
"profile_reported": "Profile reported",
"your_friend_code": "Your friend code:"
"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"
}
}

View File

@@ -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",
"no_results": "Sin resultados encontrados",
"start_typing": "Empieza a escribir para buscar...",
"hot": "Popular Ahora",
"weekly": "📅 Destacados de esta semana",
"start_typing": "Empieza a escribir para buscar..."
"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": "El ejecutable se encuentra en uso por \"{{game}}\"",
"nsfw_content_description": "{{title}} puede ser no adecuado para todas las edades por su contenido. \n¿Deseas continuar de igual forma?",
"nsfw_content_title": "Este juego contiene contenido inapropiado.",
"player_count": "Jugadores activos",
"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"
"stats": "Estadísticas",
"download_count": "Downloads",
"player_count": "Jugadores activos",
"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 a mostrar debe tener como máximo 50 caracteres",
"displayname_min_length": "El nombre a 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": "Este perfil es privado",
"profile_reported": "Perfil reportado",
"report": "Reportar",
"report_description": "Información adicional",
"report_description_placeholder": "Información adicional",
"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": "Reportar",
"report_reason_hate": "Discursos de odio",
"report_reason_other": "Otro",
"report_reason_sexual_content": "Contenido sexual",
"report_reason_spam": "Spam/Contenido no deseado",
"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"
}
}

View 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"
}
}

View File

@@ -2,7 +2,6 @@
"language_name": "فارسی",
"home": {
"featured": "پیشنهادی",
"trending": "پرطرفدار",
"surprise_me": "سوپرایزم کن",
"no_results": "اتمام‌ای پیدا نشد"
},

View File

@@ -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",

View File

@@ -2,7 +2,6 @@
"language_name": "Magyar",
"home": {
"featured": "Featured",
"trending": "Népszerű",
"surprise_me": "Lepj meg",
"no_results": "Nem található"
},

View File

@@ -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",

View File

@@ -23,6 +23,8 @@ 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,
@@ -47,7 +49,9 @@ export default {
fa,
ro,
ca,
bg,
kk,
cs,
nb,
et,
};

View File

@@ -2,7 +2,6 @@
"language_name": "Italiano",
"home": {
"featured": "In primo piano",
"trending": "Di tendenza",
"surprise_me": "Sorprendimi",
"no_results": "Nessun risultato trovato"
},

View File

@@ -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": "Көрсету аты",

View File

@@ -2,7 +2,6 @@
"language_name": "한국어",
"home": {
"featured": "추천",
"trending": "인기",
"surprise_me": "무작위 추천",
"no_results": "결과 없음"
},

View File

@@ -5,7 +5,6 @@
},
"home": {
"featured": "Anbefalinger",
"trending": "Trender",
"surprise_me": "Overrask meg",
"no_results": "Ingen resultater fundet",
"start_typing": "Begynn å skrive for å søke...",
@@ -252,7 +251,7 @@
"last_time_played": "Sist spilt {{period}}",
"activity": "Seneste aktivitet",
"library": "Bibliotek",
"total_play_time": "Samlet spilltid: {{amount}}",
"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",

View File

@@ -2,7 +2,6 @@
"language_name": "Nederlands",
"home": {
"featured": "Uitgelicht",
"trending": "Trending",
"surprise_me": "Verrasing",
"no_results": "Geen resultaten gevonden"
},

View File

@@ -2,7 +2,6 @@
"language_name": "Polski",
"home": {
"featured": "Wyróżnione",
"trending": "Trendujące",
"surprise_me": "Zaskocz mnie",
"no_results": "Nie znaleziono wyników"
},

View File

@@ -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,44 @@
"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",
"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 +193,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 +210,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 +232,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 +255,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 +284,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 +306,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 +350,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",
@@ -316,6 +366,46 @@
"report_reason_spam": "Spam",
"report_reason_other": "Outro",
"profile_reported": "Perfil reportado",
"your_friend_code": "Seu código de amigo:"
"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"
}
}

View File

@@ -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 {{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,12 +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",
"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",
"your_friend_code": "Seu código de amigo:"
"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"
}
}

View File

@@ -2,7 +2,6 @@
"language_name": "Română",
"home": {
"featured": "Recomandate",
"trending": "Populare",
"surprise_me": "Surprinde-mă",
"no_results": "Niciun rezultat găsit"
},

View File

@@ -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": "Подробнее"
}
}

View File

@@ -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ı"
},

View File

@@ -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": "Будь ласка, попробуйте ще раз"
}
}

View File

@@ -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": "动态个人简介横幅"
}
}

View File

@@ -1,10 +1,17 @@
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");
@@ -12,4 +19,10 @@ export const seedsPath = app.isPackaged
? path.join(process.resourcesPath, "seeds")
: path.join(__dirname, "..", "..", "seeds");
export const appVersion = app.getVersion();
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" : "");

View File

@@ -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,

View File

@@ -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;
}

View 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;
}

View File

@@ -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;

View File

@@ -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,9 @@ export class Game {
@Column("text", { nullable: true })
executablePath: string | null;
@Column("text", { nullable: true })
winePrefixPath: string | null;
@Column("int", { default: 0 })
playTimeInMilliseconds: number;
@@ -69,19 +70,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;

View File

@@ -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";

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;

View 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;
}

View File

@@ -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;
};

View File

@@ -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();

View File

@@ -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";

View File

@@ -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);
}
};

View File

@@ -1,9 +1,6 @@
import type { GameShop } from "@types";
import { registerEvent } from "../register-event";
import { HydraApi } from "@main/services";
import { CatalogueCategory, steamUrlBuilder } from "@shared";
import { steamGamesWorker } from "@main/workers";
import { CatalogueCategory } from "@shared";
const getCatalogue = async (
_event: Electron.IpcMainInvokeEvent,
@@ -14,26 +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",
});
return {
title: steamGame.name,
shop: game.shop,
cover: steamUrlBuilder.library(game.objectId),
objectID: game.objectId,
};
})
);
};
registerEvent("getCatalogue", getCatalogue);

View 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);

View File

@@ -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,21 +34,21 @@ 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) => {
if (result) {
gameShopCacheRepository.upsert(
{
objectID,
objectID: objectId,
shop: "steam",
language,
serializedData: JSON.stringify(result),
@@ -68,7 +68,7 @@ const getGameShopDetails = async (
if (cachedGame) {
return {
...cachedGame,
objectID,
objectId,
} as ShopDetails;
}

View File

@@ -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);

View File

@@ -1,28 +0,0 @@
import type { CatalogueEntry } from "@types";
import { registerEvent } from "../register-event";
import { steamGamesWorker } from "@main/workers";
import { steamUrlBuilder } from "@shared";
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" }
);
return {
results: steamGames.map((steamGame) => ({
title: steamGame.name,
shop: "steam",
cover: steamUrlBuilder.library(steamGame.id),
objectID: steamGame.id,
})),
cursor: cursor + steamGames.length,
};
};
registerEvent("getGames", getGames);

View File

@@ -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,
});
};

View 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);

View File

@@ -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({

View File

@@ -1,23 +1,18 @@
import type { CatalogueSearchPayload } from "@types";
import { registerEvent } from "../register-event";
import { convertSteamGameToCatalogueEntry } from "../helpers/search-games";
import { CatalogueEntry } from "@types";
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 });
return games.map((game) => {
return convertSteamGameToCatalogueEntry({
id: Number(game.objectId),
name: game.title,
clientIcon: null,
});
});
payload: CatalogueSearchPayload,
take: number,
skip: number
) => {
return HydraApi.post(
"/catalogue/search",
{ ...payload, take, skip },
{ needsAuth: false }
);
};
registerEvent("searchGames", searchGamesEvent);
registerEvent("searchGames", searchGames);

View 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);

View 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);

View 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);

View File

@@ -0,0 +1,21 @@
import { registerEvent } from "../register-event";
import type { GameShop } from "@types";
import { Ludusavi } from "@main/services";
import { gameRepository } from "@main/repository";
const getGameBackupPreview = async (
_event: Electron.IpcMainInvokeEvent,
objectId: string,
shop: GameShop
) => {
const game = await gameRepository.findOne({
where: {
objectID: objectId,
shop,
},
});
return Ludusavi.getBackupPreview(shop, objectId, game?.winePrefixPath);
};
registerEvent("getGameBackupPreview", getGameBackupPreview);

View File

@@ -0,0 +1,14 @@
import { registerEvent } from "../register-event";
import type { GameShop } from "@types";
import { Ludusavi } from "@main/services";
const selectGameBackupPath = async (
_event: Electron.IpcMainInvokeEvent,
_shop: GameShop,
objectId: string,
backupPath: string | null
) => {
return Ludusavi.addCustomGame(objectId, backupPath);
};
registerEvent("selectGameBackupPath", selectGameBackupPath);

View File

@@ -0,0 +1,111 @@
import { HydraApi, logger, Ludusavi, WindowManager } from "@main/services";
import { registerEvent } from "../register-event";
import fs from "node:fs";
import path from "node:path";
import * as tar from "tar";
import crypto from "node:crypto";
import type { GameShop } from "@types";
import axios from "axios";
import os from "node:os";
import { backupsPath } from "@main/constants";
import { app } from "electron";
import { normalizePath } from "@main/helpers";
import { gameRepository } from "@main/repository";
const bundleBackup = async (
shop: GameShop,
objectId: string,
winePrefix: string | null
) => {
const backupPath = path.join(backupsPath, `${shop}-${objectId}`);
// Remove existing backup
if (fs.existsSync(backupPath)) {
fs.rmSync(backupPath, { recursive: true });
}
await Ludusavi.backupGame(shop, objectId, backupPath, winePrefix);
const tarLocation = path.join(backupsPath, `${crypto.randomUUID()}.tar`);
await tar.create(
{
gzip: false,
file: tarLocation,
cwd: backupPath,
},
["."]
);
return tarLocation;
};
const uploadSaveGame = async (
_event: Electron.IpcMainInvokeEvent,
objectId: string,
shop: GameShop,
downloadOptionTitle: string | null
) => {
const game = await gameRepository.findOne({
where: {
objectID: objectId,
shop,
},
});
const bundleLocation = await bundleBackup(
shop,
objectId,
game?.winePrefixPath ?? null
);
fs.stat(bundleLocation, async (err, stat) => {
if (err) {
logger.error("Failed to get zip file stats", err);
throw err;
}
const { uploadUrl } = await HydraApi.post<{
id: string;
uploadUrl: string;
}>("/profile/games/artifacts", {
artifactLengthInBytes: stat.size,
shop,
objectId,
hostname: os.hostname(),
homeDir: normalizePath(app.getPath("home")),
downloadOptionTitle,
platform: os.platform(),
});
fs.readFile(bundleLocation, async (err, fileBuffer) => {
if (err) {
logger.error("Failed to read zip file", err);
throw err;
}
await axios.put(uploadUrl, fileBuffer, {
headers: {
"Content-Type": "application/tar",
},
onUploadProgress: (progressEvent) => {
logger.log(progressEvent);
},
});
WindowManager.mainWindow?.webContents.send(
`on-upload-complete-${objectId}-${shop}`,
true
);
fs.rm(bundleLocation, (err) => {
if (err) {
logger.error("Failed to remove tar file", err);
throw err;
}
});
});
});
};
registerEvent("uploadSaveGame", uploadSaveGame);

Some files were not shown because too many files have changed in this diff Show More