Compare commits

...

448 Commits

Author SHA1 Message Date
Hachi-R
f22896303d lint 2024-11-07 20:35:33 -03:00
Hachi-R
a9085ec2ed feat: pass seeding list from downloader.py to download page 2024-11-07 20:35:17 -03:00
Hachi-R
452532e18b chore: removed remove_torrent() 2024-11-06 22:41:59 -03:00
Hachi-R
b55bc935f7 lint 2024-11-06 22:23:36 -03:00
Hachi-R
e8fc71b36b revert: partially revert changes in getStatus 2024-11-06 22:23:26 -03:00
Hachi-R
6295637b48 feat: add get-sedding endpoint 2024-11-06 21:58:55 -03:00
Hachi-R
e1a5a95ceb chore: removed resume torrent after download 2024-11-06 20:28:55 -03:00
Hachi-R
e5dff9babe lint 2024-11-06 19:30:06 -03:00
Hachi-R
5d59a15bbf feat: check if downloading data exists 2024-11-06 19:29:51 -03:00
Hachi-R
f555890b4c chore: remove possibility of null returning 2024-11-06 19:18:36 -03:00
Hachi-R
d4b1569892 lint 2024-11-06 19:11:38 -03:00
Hachi-R
e0f7f34d14 feat: use main-loop to watch seeding list 2024-11-06 19:10:13 -03:00
Zamitto
cd4715e00d feat: refactor get_download_status 2024-11-05 18:31:56 -03:00
Hachi-R
5daad057e7 feat: return seeding status in downloader 2024-11-05 17:10:25 -03:00
Hachi-R
3a3c0a2b35 Merge branch 'main' into feature/seed-completed-downloads 2024-11-05 15:20:03 -03:00
Hachi-R
64b1795ddd lint 2024-11-05 15:16:24 -03:00
Hachi-R
86d3f7ac81 chore: use resumeDownload() 2024-11-05 15:16:10 -03: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
Hachi-R
1458314df6 lint 2024-11-04 14:03:05 -03:00
Hachi-R
1ad501c64e chore: check if uri exists before adding to table 2024-11-04 14:02:48 -03:00
Hachi-R
92ec056ba8 lint 2024-11-04 03:13:50 -03:00
Hachi-R
bd8974c7cb feat: add initial seeding logic and separation between seeding from downloading 2024-11-04 03:13:17 -03:00
Hachi-R
83b7fb83ab feat: add seed-list table 2024-11-03 21:39:05 -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
Hachi-R
dc4dda7e17 Merge branch 'feature/seed-completed-downloads' of https://github.com/hydralauncher/hydra into feature/seed-completed-downloads 2024-10-31 23:06:50 -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
Hachi-R
1ebf8acb9b lint 2024-10-31 23:05:59 -03:00
Hachi-R
0955af1e69 feat: add option in user preferences to seed after download completes 2024-10-31 23:05:59 -03:00
Hachi-R
fd7f2403da lint 2024-10-31 23:02:44 -03:00
Hachi-R
e331b9b246 feat: add option in user preferences to seed after download completes 2024-10-31 23:02:23 -03: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
d93e234001 chore: update steam-games.json
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
2024-10-08 22:21:04 -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
Zamitto
0fdd2797a5 Merge pull request #1049 from Lianela/main
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
fix: fixed some translations
2024-10-08 15:09:16 -03:00
Lianela
4b763173f6 fix: fixed some translations 2024-10-07 22:15:04 -06: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
Chubby Granny Chaser
37111c11d8 Merge pull request #1008 from hydralauncher/fix/migrate-repacks-from-sqlite-to-dexie
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
Fix/migrate repacks from sqlite to dexie
2024-09-27 23:15:37 +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
Chubby Granny Chaser
43e9919b6b fix: adding direct comparison last downloaded option 2024-09-27 03:39:42 +01:00
Chubby Granny Chaser
2aa393967f Merge branch 'fix/migrate-repacks-from-sqlite-to-dexie' of github.com:hydralauncher/hydra into fix/migrate-repacks-from-sqlite-to-dexie 2024-09-27 03:27:55 +01:00
Chubby Granny Chaser
17febcd88a feat: adding notification when all repacks are migrated 2024-09-27 03:27:02 +01: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
41c80daaaa Merge branch 'main' into fix/migrate-repacks-from-sqlite-to-dexie 2024-09-25 19:38:43 +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
d57980edc7 Merge pull request #987 from alexhostrup/danish-translation
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
Added a danish README
2024-09-24 14:28:07 -03:00
Zamitto
97dc9b03b0 Merge branch 'main' into danish-translation 2024-09-24 14:19:41 -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
Zamitto
fabeedaa8a Merge pull request #1012 from hydralauncher/chore/update-steam-games
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
chore: update steam games
2024-09-23 14:45:02 -03:00
Zamitto
e701a273d8 fix: ui when game has no icon 2024-09-23 14:20:57 -03:00
Zamitto
6c32fdbcbb Merge branch 'main' into chore/update-steam-games 2024-09-23 13:46:47 -03:00
Zamitto
61b2d55d47 Merge branch 'main' into danish-translation 2024-09-23 12:22:41 -03:00
Zamitto
7b5e4459d4 chore: update READMES 2024-09-23 12:16:22 -03:00
Zamitto
5b450db5eb chore: update steam games 2024-09-22 22:01:50 -03:00
Chubby Granny Chaser
d88e06e289 Merge branch 'main' of github.com:hydralauncher/hydra into fix/migrate-repacks-from-sqlite-to-dexie 2024-09-22 21:09:06 +01:00
Zamitto
e77991ea16 Merge pull request #1009 from hydralauncher/chore/update-api-url
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
chore: update api and auth url
2024-09-22 16:42:19 -03:00
Zamitto
5e55c05bd7 chore: i18n for friend code 2024-09-22 16:30:47 -03:00
Zamitto
81e74f068f fix: import correctly vite env 2024-09-22 16:25:16 -03:00
Zamitto
d5a510175f feat: use env to open auth window 2024-09-22 16:21:01 -03:00
Zamitto
2b2f29da61 chore: add envs to pipeline 2024-09-22 16:20:45 -03:00
Chubby Granny Chaser
339dc89702 feat: adding dexie 2024-09-22 17:45:50 +01:00
Chubby Granny Chaser
50028fbfd8 feat: adding dexie 2024-09-22 17:45:01 +01:00
Chubby Granny Chaser
d97c5b894a feat: adding dexie 2024-09-22 17:44:06 +01:00
Chubby Granny Chaser
f860439fb5 feat: adding dexie 2024-09-22 17:43:05 +01:00
Chubby Granny Chaser
ddd6ff7dbe Merge branch 'main' of github.com:hydralauncher/hydra into feature/adding-flame-animation 2024-09-21 21:19:08 +01:00
Chubby Granny Chaser
849b6de6bc feat: adding dexie 2024-09-21 21:19:00 +01:00
Zamitto
79e2eb042a Merge pull request #1001 from hydralauncher/chore/bump-version-and-update-CSP
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
chore: bump version and change CSP
2024-09-21 10:47:32 -03:00
Zamitto
f9ad26c836 chore: bump version and change CSP 2024-09-21 10:38:53 -03:00
Zamitto
f6fbfe33e0 Merge pull request #988 from alexhostrup/nb-translation
Norwegian bokmål translation and README
2024-09-21 10:38:26 -03:00
Alexander Hostrup
18d6ca630a Merge branch 'main' into nb-translation 2024-09-20 23:39:59 +02:00
Alexander Hostrup
c7afcff0b4 Fixed small issue with language code being wrong 2024-09-20 23:38:20 +02:00
Zamitto
a3bdfe7641 Merge pull request #995 from hydralauncher/fix/game-details-gallery-align
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
fix: game details gallery align
2024-09-19 20:48:48 -03:00
Zamitto
e7b4f8e1c8 feat: add lazy loading 2024-09-19 15:38:33 -03:00
Zamitto
e526c0f650 feat: adjust align on wider images 2024-09-19 15:38:20 -03:00
Zamitto
9791c311f1 chore: update bug issue template 2024-09-18 15:46:14 -03:00
Alexander Hostrup
b1ea9cbfaa formatting 2024-09-18 19:54:08 +02:00
Alexander Hostrup
74d2ec8238 Added translation and README in Norwegian Bokmål 2024-09-18 19:53:46 +02:00
Alexander Hostrup
f8f2124cec Forgot something 2024-09-18 18:08:30 +02:00
Alexander Hostrup
3833e11e98 Added a danish README 2024-09-18 18:04:32 +02:00
Zamitto
613898b32d Merge pull request #985 from hydralauncher/fix/migration-to-fix-missing-columns
Some checks failed
Release / build (ubuntu-latest) (push) Has been cancelled
Release / build (windows-latest) (push) Has been cancelled
fix: migration to fix missing columns
2024-09-18 07:35:27 -03:00
Zamitto
2bc98317e9 fix: conditional to check if hydra is updating 2024-09-18 07:07:29 -03:00
Zamitto
2e87ae8486 fix: new line 2024-09-18 06:50:20 -03:00
Zamitto
df5f34119f feat: add script to remove hydra folders on uninstall 2024-09-17 23:02:12 -03:00
Zamitto
2271368199 chore: bump version 2024-09-17 21:56:50 -03:00
Zamitto
e139423b52 feat: add axios user agent header with Hydra version 2024-09-17 21:56:46 -03:00
Zamitto
aa2ecfad96 feat: add migration to add missing columns from installations before 2.0 2024-09-17 21:49:30 -03:00
Zamitto
b76441a763 Merge pull request #984 from alexhostrup/danish-translation
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
Updated Danish translation to match English translation
2024-09-17 18:23:07 -03:00
Alexander Hostrup
2d160ba8ee Merge branch 'main' into danish-translation 2024-09-17 22:35:06 +02:00
Zamitto
5863b15b12 doc: fix log location description 2024-09-17 17:32:05 -03:00
Zamitto
bc175e635f doc: update bug report template 2024-09-17 17:30:28 -03:00
Alexander Hostrup
f7f89cb778 Updated Danish translation to match English translation 2024-09-17 22:19:53 +02:00
Chubby Granny Chaser
16c45692da Merge pull request #982 from hydralauncher/feature/adding-flame-animation
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
chore: bump version
2024-09-17 16:53:06 +01:00
Chubby Granny Chaser
30aa3f5470 chore: bump version 2024-09-17 16:50:26 +01:00
Chubby Granny Chaser
ef16732c0a Merge pull request #981 from hydralauncher/feature/adding-flame-animation
feat: adding flame animation
2024-09-17 16:42:24 +01:00
Chubby Granny Chaser
84c472a3fa chore: bump version 2024-09-17 16:37:25 +01:00
Chubby Granny Chaser
2610f8b17b Merge branch 'feature/adding-flame-animation' of github.com:hydralauncher/hydra into feature/adding-flame-animation 2024-09-17 16:32:11 +01:00
Chubby Granny Chaser
705b12019f Merge branch 'main' of github.com:hydralauncher/hydra into feature/adding-flame-animation 2024-09-17 16:31:44 +01:00
Zamitto
39be8fdf53 Merge branch 'main' into feature/adding-flame-animation 2024-09-17 12:28:59 -03:00
Chubby Granny Chaser
cc7c3455fa feat: adding flame animation 2024-09-17 16:28:59 +01:00
Chubby Granny Chaser
d1f4bc7207 feat: adding flame animation 2024-09-17 16:26:12 +01:00
Chubby Granny Chaser
aa4ca25653 feat: adding flame animation 2024-09-17 16:25:19 +01:00
Zamitto
405ea0a824 fix: playtime count 2024-09-17 11:10:44 -03:00
Zamitto
43bc0cb08f Merge pull request #977 from hydralauncher/feat/polling-from-sync
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
feat: polling from sync
2024-09-16 16:46:29 -03:00
Zamitto
3c200aa2eb fix: rename variable 2024-09-16 14:48:15 -03:00
Zamitto
cc5967814b fix: adjust when calling /games/download 2024-09-16 14:07:00 -03:00
Zamitto
ec16efed2f feat: create use details functions 2024-09-16 14:03:54 -03:00
Zamitto
09d0e5b4ef Merge pull request #976 from hydralauncher/feat/update-typing-to-match-get-me
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
feat: update typing to match get me
2024-09-16 13:36:26 -03:00
Zamitto
5b18aba2b8 feat: omit username and tokens in logs 2024-09-16 13:09:50 -03:00
Zamitto
192008c76c fix: not showing repacks and stats if game details request fails 2024-09-16 12:56:29 -03:00
Zamitto
1de3a9836c feat: update typing to match get me endpoint 2024-09-16 11:22:41 -03:00
Zamitto
ee02811aea chore: remove space in version string
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-09-15 12:21:41 -03:00
Zamitto
c21ebe1ce2 fix: database migration 2024-09-15 12:09:51 -03:00
Zamitto
214e39adda chore: version
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-09-15 01:17:16 -03:00
Zamitto
8258127616 chore: version 2024-09-15 01:07:46 -03:00
Zamitto
f9906bfe95 fix: message and migration 2024-09-15 01:00:44 -03:00
Chubby Granny Chaser
ff91284a91 chore: fix version
Some checks are pending
Release / build (ubuntu-latest) (push) Waiting to run
Release / build (windows-latest) (push) Waiting to run
2024-09-15 03:46:38 +01:00
Chubby Granny Chaser
b4f99418e9 chore: changing auth url 2024-09-15 03:39:13 +01:00
expload
2edb96ba5b Create pull-request-template.md 2024-07-10 14:16:30 +08:00
285 changed files with 12833 additions and 6897 deletions

View File

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

View File

@@ -1,6 +1,6 @@
name: Bug Report
description: Create a report to help us improve. Write in English, please.
title: "[BUG] "
description: Create a report to help us improve. Write in English.
title: "[BUG] Write a title for your bug"
labels: ["bug"]
body:
- type: markdown
@@ -29,12 +29,15 @@ body:
validations:
required: false
- type: textarea
id: screenshots
id: additional-info
attributes:
label: Screenshots
description: If applicable, add screenshots to help explain your problem.
label: Additional information and data
description: |
Add screenshots and upload your logs file here.
Logs location on Windows: "%appdata%/hydra"
Logs location on Linux: "~/.config/hydra/"
validations:
required: false
required: true
- type: input
id: OS
attributes:
@@ -49,13 +52,6 @@ body:
description: Please provide the version of Hydra you are using.
validations:
required: true
- type: textarea
id: additional-info
attributes:
label: Additional Information
description: Please provide any additional information and context about your problem.
validations:
required: false
- type: checkboxes
id: terms
attributes:
@@ -65,3 +61,5 @@ body:
required: true
- label: I am aware that Hydra team does not offer any support or help regarding the downloaded games.
required: true
- label: I have read the [Frequently Asked Questions (FAQ)](https://github.com/hydralauncher/hydra/wiki/FAQ).
required: true

12
.github/pull-request-template.md vendored Normal file
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
@@ -40,18 +40,20 @@ jobs:
sudo apt-get install -y libarchive-tools
yarn build:linux
env:
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_STAGING_API_URL }}
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_STAGING_AUTH_URL }}
MAIN_VITE_CHECKOUT_URL: ${{ vars.MAIN_VITE_STAGING_CHECKOUT_URL }}
MAIN_VITE_ANALYTICS_API_URL: ${{ vars.MAIN_VITE_ANALYTICS_API_URL }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build Windows
if: matrix.os == 'windows-latest'
run: yarn build:win
env:
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_STAGING_API_URL }}
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_STAGING_AUTH_URL }}
MAIN_VITE_CHECKOUT_URL: ${{ vars.MAIN_VITE_STAGING_CHECKOUT_URL }}
MAIN_VITE_ANALYTICS_API_URL: ${{ vars.MAIN_VITE_ANALYTICS_API_URL }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create artifact
@@ -59,7 +61,6 @@ jobs:
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
@@ -43,8 +43,9 @@ jobs:
yarn build:linux
env:
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_AUTH_URL }}
MAIN_VITE_CHECKOUT_URL: ${{ vars.MAIN_VITE_CHECKOUT_URL }}
MAIN_VITE_ANALYTICS_API_URL: ${{ vars.MAIN_VITE_ANALYTICS_API_URL }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build Windows
@@ -52,12 +53,29 @@ jobs:
run: yarn build:win
env:
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_AUTH_URL }}
MAIN_VITE_CHECKOUT_URL: ${{ vars.MAIN_VITE_CHECKOUT_URL }}
MAIN_VITE_ANALYTICS_API_URL: ${{ vars.MAIN_VITE_ANALYTICS_API_URL }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- 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: |

6
.gitignore vendored
View File

@@ -1,5 +1,5 @@
.vscode
node_modules
.vscode/
node_modules/
hydra-download-manager/
fastlist.exe
__pycache__
@@ -9,4 +9,4 @@ out
*.log*
.env
.vite
sentry.properties
ludusavi/

View File

@@ -13,16 +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)
[![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)

7
build/installer.nsh Normal file
View File

@@ -0,0 +1,7 @@
!macro customUnInstall
${ifNot} ${isUpdated}
RMDir /r "$APPDATA\${APP_PACKAGE_NAME}"
RMDir /r "$APPDATA\hydra"
RMDir /r "$LOCALAPPDATA\hydralauncher-updater"
${endIf}
!macroend

View File

@@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1>
<p align="center">
<strong>Hydra - гэта гульнявы лаўнчар з уласным убудаваным кліентам BitTorrent і самастойным scraper`ам для рэпакаў.</strong>
<strong>Hydra - гэта гульнявы лаўнчар з уласным убудаваным кліентам BitTorrent.</strong>
</p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@@ -23,8 +23,11 @@
[![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)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](./screenshot.png)
</div>
@@ -139,9 +142,8 @@ pip install -r requirements.txt
## Пераменныя асяроддзі
Вам спатрэбіцца ключ API SteamGridDB, каб атрымаць значкі гульняў пры ўсталёўкі.
Калі вы жадаеце выкарыстоўваць onlinefix у якасці рэпака, вам трэба дадаць вашыя ўліковыя дадзеныя ў файл .env.
Як толькі вы атрымаеце ключ, вы зможаце скапіяваць або пераназваць файл `.env.example` у `.env` і змясціць у яго `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
Як толькі вы атрымаеце ключ, вы зможаце скапіяваць або пераназваць файл `.env.example` у `.env` і змясціць у яго `STEAMGRIDDB_API_KEY`.
## Запуск

View File

@@ -23,8 +23,11 @@
[![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)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Katalog](./docs/screenshot.png)
![Hydra Katalog](./screenshot.png)
</div>

187
docs/README.da.md Normal file
View File

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

View File

@@ -23,8 +23,11 @@
[![fr](https://img.shields.io/badge/lang-fr-blue)](README.fr.md)
[![de](https://img.shields.io/badge/lang-de-black)](README.de.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)
[![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

@@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1>
<p align="center">
<strong>Hydra es un launcher de juegos con su propio cliente de bittorrent y gestor propio de repacks.</strong>
<strong>Hydra es un launcher de juegos con su propio cliente de bittorrent.</strong>
</p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@@ -23,8 +23,11 @@
[![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)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](./screenshot.png)
</div>
@@ -55,17 +58,15 @@
## Acerca de
**Hydra** es un **Launcher de Juegos** con su propio **Cliente Bittorrent** y **autogestor de Repacks**.
**Hydra** es un **Launcher de Juegos** con su propio **Cliente Bittorrent**.
<br>
El launcher está escrito en TypeScript (Electron) y Python, el cuál se encarga del sistema de torrent usando libtorrent.
## Caracteristicas
- Buscador e instalador autogestionado de repacks a través de las páginas más confiables en él [Megahilo](https://www.reddit.com/r/Piracy/wiki/megathread/)
- Cliente propio de bittorrent integrado
- Integración de How Long To Beat (HLTB) en la página del juego
- Customización de rutas de descargas
- Notificaciones en actualizaciones a listas de repacks
- Soporte a Windows y Linux
- En constante actualización
- Y mucho más ...
@@ -139,9 +140,8 @@ pip install -r requirements.txt
## Variables del Entorno
Necesitas una llave API de SteamGridDB para así poder obtener los íconos de los juegos en la instalación.
Si quieres también tener los repacks de onlinefix, necesitarás añadir tus credenciales al .env
Una vez que los tengas, puedes copiar o renombrar el archivo `.env.example` cómo `.env` y colocarlo en `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
Una vez que los tengas, puedes copiar o renombrar el archivo `.env.example` cómo `.env` y colocarlo en `STEAMGRIDDB_API_KEY`.
## Ejecucion

186
docs/README.et.md Normal file
View File

@@ -0,0 +1,186 @@
<div align="center">
[<img src="../resources/icon.png" width="144"/>](https://hydralauncher.site)
<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

@@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1>
<p align="center">
<strong>Hydra est un lanceur de jeux avec son propre client bittorrent intégré et un scraper de repack auto-géré.</strong>
<strong>Hydra est un lanceur de jeux avec son propre client bittorrent intégré.</strong>
</p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@@ -23,8 +23,11 @@
[![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)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Catalogue Hydra](./docs/screenshot.png)
![Catalogue Hydra](./screenshot.png)
</div>
@@ -55,17 +58,15 @@
## À propos
**Hydra** est un **lanceur de jeux** avec son propre **client BitTorrent** intégré et un **scraper de repack auto-géré**.
**Hydra** est un **lanceur de jeux** avec son propre **client BitTorrent** intégré.
<br>
Le lanceur est écrit en TypeScript (Electron) et Python, qui gère le système de torrent en utilisant libtorrent.
## Fonctionnalités
- Scraper de repack auto-géré parmi tous les sites les plus fiables sur le [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/")
- Client bittorrent intégré
- Intégration How Long To Beat (HLTB) sur la page du jeu
- Personnalisation des chemins de téléchargement
- Notifications de mise à jour de la liste de repack
- Support pour Windows et Linux
- Constamment mis à jour
- Et plus encore ...
@@ -139,9 +140,8 @@ pip install -r requirements.txt
## Variables d'environnement
Vous aurez besoin d'une clé API SteamGridDB pour récupérer les icônes de jeux lors de l'installation.
Si vous voulez avoir onlinefix comme repacker, vous devrez ajouter vos identifiants au fichier .env.
Une fois que vous l'avez, vous pouvez copier ou renommer le fichier `.env.example` en `.env` et y mettre `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
Une fois que vous l'avez, vous pouvez copier ou renommer le fichier `.env.example` en `.env` et y mettre `STEAMGRIDDB_API_KEY`.
## Lancement

View File

@@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1>
<p align="center">
<strong>Hydra è un game launcher con il proprio client bittorrent e autogestore di repacks.</strong>
<strong>Hydra è un game launcher con il proprio client bittorrent.</strong>
</p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@@ -23,8 +23,11 @@
[![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)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](./screenshot.png)
</div>
@@ -55,17 +58,15 @@
## A proposito
**Hydra** è un **Game Launcher** con il proprio **Client BitTorrent** e **autogestore di repack**.
**Hydra** è un **Game Launcher** con il proprio **Client BitTorrent**.
<br>
Il launcher è scritto in TypeScript (Electron) and Python, che gestisce il sistema di torrenting appoggiandosi a libtorrent.
## Caratteristiche
- Motore di ricerca automatizzato sulle fonti di repack dal [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/")
- Client Bittorrent integrato
- Integrazione How Long To Beat (HLTB) nella pagina del gioco
- Percorso del download Personalizzato
- Notifiche di aggiornamenti sulla list dei repacks
- Supporto Windows e Linux
- Costantemente Aggiornato
- E molto altro ...
@@ -139,9 +140,8 @@ pip install -r requirements.txt
## Variabili d'ambiente
Avrai bisogno di una chiave API SteamGridDB per poter caricare le icone di gioco.
Se intendi avere onlinefix come repacker dovrai aggiungere le tue credenziali al file .env
Una volta ottenuta, puoi copiare e rinominare il file `.env.example` a `.env` e metterlo in `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
Una volta ottenuta, puoi copiare e rinominare il file `.env.example` a `.env` e metterlo in `STEAMGRIDDB_API_KEY`.
## Esecuzione

188
docs/README.nb.md Normal file
View File

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

View File

@@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1>
<p align="center">
<strong>Hydra - to program uruchamiający gry z własnym wbudowanym klientem bittorrent i samodzielnie zarządzanym repackagerem..</strong>
<strong>Hydra - to program uruchamiający gry z własnym wbudowanym klientem bittorrent.</strong>
</p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@@ -23,8 +23,11 @@
[![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)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](./screenshot.png)
</div>
@@ -55,17 +58,15 @@
## O nas
**Hydra** - jest **programem uruchamiającym gry** z wbudowanym **klientem BitTorrent** i **samozarządzającym się repackagerem**.
**Hydra** - jest **programem uruchamiającym gry** z wbudowanym **klientem BitTorrent**.
<br>
Ten launcher jest napisany w TypeScript (Electron) i Pythonie, który współpracuje z systemem torrent przy użyciu libtorrent.
## Cechy
- Samodzielnie zarządzany repackager wśród wszystkich najbardziej zaufanych stron na [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/").
- Własny wbudowany klient bittorrent
- Integracja funkcji How Long To Beat (HLTB) na stronie gry
- Personalizacja folderu pobierania
- Powiadomienia o aktualizacjach listy repacków
- Wsparcie dla systemów Windows i Linux
- Stała aktualizacja
- I nie tylko ...
@@ -143,9 +144,8 @@ pip install -r requirements.txt
## Zmienne środowiskowe
Będziesz potrzebował klucza API SteamGridDB, aby uzyskać ikony gier podczas instalacji.
Jeśli chcesz użyć onlinefix jako repackagera, musisz dodać swoje dane uwierzytelniające do .env
Po jego uzyskaniu można skopiować plik lub zmienić jego nazwę `.env.example` na `.env` i umieść go na`STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
Po jego uzyskaniu można skopiować plik lub zmienić jego nazwę `.env.example` na `.env` i umieść go na`STEAMGRIDDB_API_KEY`.
## Run

View File

@@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1>
<p align="center">
<strong>Hydra é um Launcher de Jogos com seu próprio cliente de bittorrent integrado e um wrapper autogerenciado para busca de repacks.</strong>
<strong>Hydra é um Launcher de Jogos com seu próprio cliente de bittorrent integrado.</strong>
</p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@@ -23,8 +23,11 @@
[![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)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](./screenshot.png)
</div>
@@ -48,24 +51,22 @@
- [Environment variables](#-environment-variables)
- [Running](#-running)
- [Build](#-build)
- [Build the bittorrent client](#-build-the-bittorrent-client)
- [Build the Electron application](#-build-the-electron-application)
- [Contributors](#-contributors)
- [ Criar o cliente bittorrent](#-build-the-bittorrent-client)
- [Criar a aplicação Electron](#-build-the-electron-application)
- [Contribuidores](#-contributors)
- [Licença](#-licença)
## <a name="about"> Sobre
**Hydra** é um **Launcher de Jogos** com seu próprio **Cliente BitTorrent incorporado** e um **raspador de repack auto-gerenciado**.
**Hydra** é um **Launcher de Jogos** com seu próprio **Cliente BitTorrent incorporado**.
<br>
O launcher é escrito em TypeScript (Electron) e Python, que lida com o sistema de torrent usando libtorrent.
## <a name="features"> Recursos
- Wrapper de repacks auto-gerenciado entre todos os sites mais confiáveis no [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/")
- Cliente BitTorrent incorporado próprio
- Integração com [How Long To Beat (HLTB)](https://howlongtobeat.com/) na página do jogo
- Personalização do caminho de downloads
- Notificações de atualização da lista de repacks
- Suporte para Windows e Linux
- Constantemente atualizado
- E mais ...
@@ -136,14 +137,13 @@ Instale as dependências Python necessárias usando o pip:
pip install -r requirements.txt
```
## <a name="environment-variables"></a> Environment variables
## <a name="environment-variables"></a> Variáveis de ambiente
Você precisará de uma chave da API SteamGridDB para buscar os ícones do jogo durante a instalação.
Se você deseja ter o onlinefix como um repacker, precisará adicionar suas credenciais ao arquivo .env.
Depois de obtê-lo, você pode copiar ou renomear o arquivo `.env.example` para `.env` e inserir `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME` e `ONLINEFIX_PASSWORD`.
Depois de obtê-lo, você pode copiar ou renomear o arquivo `.env.example` para `.env` e inserir `STEAMGRIDDB_API_KEY`.
## <a name="running"></a> Running
## <a name="running"></a> Executando
Uma vez que você tenha configurado tudo, você pode executar o seguinte comando para iniciar tanto o processo Electron quanto o cliente BitTorrent:
@@ -153,7 +153,7 @@ yarn dev
## <a name="build"></a> Build
### <a name="build-the-bittorrent-client"></a> Build the bittorrent client
### <a name="build-the-bittorrent-client"></a> Criar o cliente bittorrent
Compile o cliente BitTorrent usando este comando
@@ -161,7 +161,7 @@ Compile o cliente BitTorrent usando este comando
python torrent-client/setup.py build
```
### <a name="build-the-electron-application"></a> Build the Electron application
### <a name="build-the-electron-application"></a> Criar a aplicação Electron
Compile a aplicação Electron usando este comando:
@@ -177,7 +177,7 @@ No Linux:
yarn build:linux
```
## <a name="contributors"></a> Contributors
## <a name="contributors"></a> Contribuidores
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />

View File

@@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1>
<p align="center">
<strong>Hydra - это игровой лаунчер с собственным встроенным клиентом BitTorrent и самостоятельным scraper`ом для репаков.</strong>
<strong>Hydra - это игровой лаунчер с собственным встроенным клиентом BitTorrent.</strong>
</p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@@ -23,8 +23,11 @@
[![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)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](./screenshot.png)
</div>
@@ -139,9 +142,8 @@ pip install -r requirements.txt
## Переменные среды
Вам понадобится ключ API SteamGridDB, чтобы получить значки игр при установке.
Если вы хотите использовать onlinefix в качестве репака, вам нужно добавить ваши учетные данные в файл .env.
Как только у вас будет ключ, вы можете скопировать или переименовать файл `.env.example` в `.env` и поместить в него `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
Как только у вас будет ключ, вы можете скопировать или переименовать файл `.env.example` в `.env` и поместить в него `STEAMGRIDDB_API_KEY`.
## Запуск

View File

@@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1>
<p align="center">
<strong>Hydra - це ігровий лаунчер з власним вбудованим bittorrent-клієнтом і самокерованим збирачем репаків.</strong>
<strong>Hydra - це ігровий лаунчер з власним вбудованим bittorrent-клієнтом.</strong>
</p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@@ -23,8 +23,11 @@
[![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)
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
![Hydra Catalogue](./docs/screenshot.png)
![Hydra Catalogue](./screenshot.png)
</div>
@@ -143,9 +146,8 @@ pip install -r requirements.txt
## Змінні середовища
Вам знадобиться ключ API SteamGridDB, щоб отримати іконки ігор під час встановлення.
Якщо ви хочете використовувати onlinefix як перепакувальник, вам потрібно додати свої облікові дані до .env
Отримавши його, ви можете скопіювати або перейменувати файл `.env.example` на `.env`і помістити його на`STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`.
Отримавши його, ви можете скопіювати або перейменувати файл `.env.example` на `.env`і помістити його на`STEAMGRIDDB_API_KEY`.
## Запустіть

View File

@@ -1,11 +1,13 @@
appId: site.hydralauncher.hydra
appId: gg.hydralauncher.hydra
productName: Hydra
directories:
buildResources: build
extraResources:
- ludusavi
- hydra-download-manager
- seeds
- from: node_modules/create-desktop-shortcuts/src/windows.vbs
- from: resources/achievement.wav
files:
- "!**/.vscode/*"
- "!src/*"
@@ -27,6 +29,7 @@ nsis:
createDesktopShortcut: always
oneClick: false
allowToChangeInstallationDirectory: true
include: installer.nsh
portable:
artifactName: ${name}-${version}-portable.${ext}
mac:

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.0",
"version": "3.0.5",
"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 ./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",
@@ -38,39 +38,39 @@
"@hookform/resolvers": "^3.9.0",
"@primer/octicons-react": "^19.9.0",
"@reduxjs/toolkit": "^2.2.3",
"@sentry/electron": "^5.1.0",
"@vanilla-extract/css": "^1.14.2",
"@vanilla-extract/dynamic": "^2.1.1",
"@vanilla-extract/recipes": "^0.5.2",
"auto-launch": "^5.0.6",
"axios": "^1.7.7",
"better-sqlite3": "^11.2.1",
"better-sqlite3": "^11.3.0",
"check-disk-space": "^3.4.0",
"classnames": "^2.5.1",
"color": "^4.2.3",
"color.js": "^1.2.0",
"create-desktop-shortcuts": "^1.11.0",
"date-fns": "^3.6.0",
"electron-log": "^5.1.4",
"electron-updater": "^6.1.8",
"fetch-cookie": "^3.0.1",
"dexie": "^4.0.9",
"electron-log": "^5.2.0",
"electron-updater": "^6.3.9",
"file-type": "^19.6.0",
"flexsearch": "^0.7.43",
"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",
"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",
@@ -78,15 +78,15 @@
"zod": "^3.23.8"
},
"devDependencies": {
"@commitlint/cli": "^19.3.0",
"@commitlint/config-conventional": "^19.2.2",
"@commitlint/cli": "^19.5.0",
"@commitlint/config-conventional": "^19.5.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/folder-hash": "^4.0.4",
"@types/jsdom": "^21.1.6",
"@types/jsonwebtoken": "^9.0.6",
"@types/lodash-es": "^4.17.12",
@@ -94,11 +94,12 @@
"@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-builder": "^25.1.8",
"electron-vite": "^2.0.0",
"eslint": "^8.56.0",
"eslint-plugin-jsx-a11y": "^6.8.0",
@@ -108,6 +109,7 @@
"prettier": "^3.2.4",
"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",

49
postinstall.cjs Normal file
View File

@@ -0,0 +1,49 @@
const { default: axios } = require("axios");
const util = require("node:util");
const fs = require("node:fs");
const path = require("node:path");
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);
});
};
downloadLudusavi();

View File

@@ -1,7 +1,6 @@
libtorrent
cx_Freeze
cx_Freeze == 7.2.3
cx_Logging; sys_platform == 'win32'
lief; sys_platform == 'win32'
pywin32; sys_platform == 'win32'
psutil
Pillow

BIN
resources/achievement.wav Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -2,7 +2,6 @@
"language_name": "اَلْعَرَبِيَّةُ",
"home": {
"featured": "مميّز",
"trending": "شائع",
"surprise_me": "فاجئني",
"no_results": "لم يتم العثور على نتائج"
},

View File

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

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

View File

@@ -5,7 +5,6 @@
},
"home": {
"featured": "Doporučené",
"trending": "Trendy",
"surprise_me": "Překvap mě",
"no_results": "Výsledek nenalezen"
},

View File

@@ -1,10 +1,15 @@
{
"language_name": "Dansk",
"app": {
"successfully_signed_in": "Loggede ind successfuldt"
},
"home": {
"featured": "Anbefalet",
"trending": "Trender",
"surprise_me": "Overrask mig",
"no_results": "Ingen resultater fundet"
"no_results": "Ingen resultater fundet",
"start_typing": "Begynd at skrive for at søge...",
"hot": "Populært lige nu",
"weekly": "📅 Mest populære spil denne uge"
},
"sidebar": {
"catalogue": "Katalog",
@@ -12,27 +17,35 @@
"settings": "Indstillinger",
"my_library": "Mit bibliotek",
"downloading_metadata": "{{title}} (Downloader metadata…)",
"paused": "{{title}} (Paused)",
"downloading": "{{title}} ({{percentage}} - Downloading…)",
"filter": "Filtrer bibliotek",
"home": "Hjem"
"paused": "{{title}} (Sat på pause)",
"downloading": "{{title}} ({{percentage}} - Downloader…)",
"filter": "Filtrér bibliotek",
"home": "Hjem",
"queued": "{{title}} (I køen)",
"game_has_no_executable": "Spillet har ikke nogen eksekverbar fil valgt",
"sign_in": "Log ind",
"friends": "Venner"
},
"header": {
"search": "Søg spil",
"search": "Søg efter spil",
"home": "Hjem",
"catalogue": "Katalog",
"downloads": "Downloads",
"search_results": "Søge resultater",
"settings": "Indstillinger"
"settings": "Indstillinger",
"version_available_install": "Version {{version}} tilgængelig. Klik her for at genstarte og installere.",
"version_available_download": "Version {{version}} tilgængelig. Klik her for at downloade."
},
"bottom_panel": {
"no_downloads_in_progress": "Ingen downloads igang",
"downloading_metadata": "Downloader {{title}} metadata…",
"downloading": "Downloader {{title}}… ({{percentage}} færdig) - Konklusion {{eta}} - {{speed}}"
"downloading": "Downloader {{title}}… ({{percentage}} færdig) - Fuldt downloadet {{eta}} - {{speed}}",
"calculating_eta": "Downloader {{title}}… ({{percentage}} færdig) - Udregner resterende tid…",
"checking_files": "Checker {{title}} filer… ({{percentage}} færdig)"
},
"catalogue": {
"next_page": "Næste side",
"previous_page": "Tidligere side"
"previous_page": "Forrige side"
},
"game_details": {
"open_download_options": "Åben download muligheder",
@@ -47,11 +60,13 @@
"remove": "Fjern",
"space_left_on_disk": "{{space}} tilbage på harddisken",
"eta": "Konklusion {{eta}}",
"calculating_eta": "Udregner resterende tid…",
"downloading_metadata": "Downloader metadata…",
"filter": "Filtrer repacks",
"filter": "Filtrér repacks",
"requirements": "System behov",
"minimum": "Mindste",
"recommended": "Anbefalet",
"paused": "Sat på pause",
"release_date": "Offentliggjort den {{date}}",
"publisher": "Udgivet af {{publisher}}",
"hours": "timer",
@@ -70,10 +85,51 @@
"deleting": "Sletter installatør…",
"close": "Luk",
"playing_now": "Spiller nu",
"change": "Ændré",
"change": "Ændre",
"repacks_modal_description": "Vælg den repack du vil downloade",
"select_folder_hint": "For at ændre standard mappen, gå til <0>Instillingerne</0>",
"download_now": "Download nu"
"download_now": "Download nu",
"no_shop_details": "Kunne ikke modtage butiks detaljerne.",
"download_options": "Download muligheder",
"download_path": "Download sti",
"previous_screenshot": "Forrige skærmbillede",
"next_screenshot": "Næste skærmbillede",
"screenshot": "Skærmbillede {{number}}",
"open_screenshot": "Åben skærmbillede {{number}}",
"download_settings": "Download indstillinger",
"downloader": "Downloader",
"select_executable": "Vælg",
"no_executable_selected": "Ingen eksekverbar fil valgt",
"open_folder": "Åben mappe",
"open_download_location": "Se downloadede filer",
"create_shortcut": "Lav skrivebords genvej",
"remove_files": "Fjern filer",
"remove_from_library_title": "Er du sikker?",
"remove_from_library_description": "Dette vil fjerne {{game}} fra dit bibliotek",
"options": "Valgmuligheder",
"executable_section_title": "Eksekverbar fil",
"executable_section_description": "Sti til filen som skal bruges når \"Spil\" bliver klikket",
"downloads_secion_title": "Downloads",
"downloads_section_description": "Undersøg opdateringer eller andre versioner af dette spil",
"danger_zone_section_title": "Farezonen",
"danger_zone_section_description": "Fjern dette spil fra dit bibliotek eller filerne der er blevet downloadet af Hydra",
"download_in_progress": "Download undervejs",
"download_paused": "Download sat på pause",
"last_downloaded_option": "Sidste download mulighed",
"create_shortcut_success": "Genvej lavet successfuldt",
"create_shortcut_error": "Fejl under skabelsen af genvej",
"nsfw_content_title": "Dette spil indeholder upassende indhold",
"nsfw_content_description": "{{title}} indeholder indhold der ikke egner sig til alle aldre. Er du sikker på at du vil fortsætte?",
"allow_nsfw_content": "Fortsæt",
"refuse_nsfw_content": "Gå tilbage",
"stats": "Statistik",
"download_count": "Downloads",
"player_count": "Aktive spillere",
"download_error": "Denne download mulighed er ikke tilgængelig",
"download": "Download",
"executable_path_in_use": "Eksekverbar allerede i brug af \"{{game}}\"",
"warning": "Advarsel:",
"hydra_needs_to_remain_open": "Hydra skal forblive åbent for at denne download kan gennemføres. I tilfælde af at Hydra lukker før downloaden er færdig, mister du dit fremskridt."
},
"activation": {
"title": "Aktivér Hydra",
@@ -81,45 +137,95 @@
"enter_activation_code": "Indtast din aktiverings kode",
"message": "Hvis du ikke ved hvor du skal spørge om dette, burde du ikke have dette.",
"activate": "Aktivér",
"loading": "Loader…"
"loading": "Indlæser…"
},
"downloads": {
"resume": "Fortsæt",
"pause": "Pause",
"eta": "Konklusion {{eta}}",
"paused": "Pauset",
"paused": "Sat på pause",
"verifying": "Verificerer…",
"completed": "Færdigt",
"removed": "Ikke downloadet",
"cancel": "Annullér",
"filter": "Filtrer downloadet spil",
"filter": "Filtrér downloadet spil",
"remove": "Fjern",
"downloading_metadata": "Downloader metadata…",
"deleting": "Sletter installatør…",
"delete": "Fjern installatør",
"delete_modal_title": "Er du sikker?",
"delete_modal_description": "Dette vil fjerne alle installations filerne fra din computer",
"install": "Installér"
"install": "Installér",
"download_in_progress": "Undervejs",
"queued_downloads": "Downloadkø",
"downloads_completed": "Gennemførte",
"queued": "I kø",
"no_downloads_title": "Rimelig tomt",
"no_downloads_description": "Du har ikke downloadet noget med Hydra endnu, men det er aldrig for sent at begynde.",
"checking_files": "Undersøger filer…"
},
"settings": {
"downloads_path": "Downloads sti",
"change": "Opdatering",
"change": "Opdatér",
"notifications": "Notifikationer",
"enable_download_notifications": "Når et download bliver færdigt",
"enable_download_notifications": "Når en download bliver færdigt",
"enable_repack_list_notifications": "Når en ny repack bliver tilføjet",
"real_debrid_api_token_label": "Real-Debrid API nøgle",
"quit_app_instead_hiding": "Afslut Hydra instedet for at minimere til processlinjen",
"launch_with_system": "Åben Hydra ved start af systemet",
"general": "Generelt",
"behavior": "Opførsel",
"download_sources": "Download kilder",
"language": "Sprog",
"real_debrid_api_token": "API nøgle",
"enable_real_debrid": "Slå Real-Debrid til",
"real_debrid_description": "Real-Debrid er en ubegrænset downloader der gør det muligt for dig at downloade filer med det samme og med den bedste udnyttelse af din internet hastighed.",
"real_debrid_invalid_token": "Ugyldig API nøgle",
"real_debrid_api_token_hint": "Du kan få din API nøgle <0>her</0>",
"save_changes": "Gem ændringer"
"real_debrid_free_account_error": "Brugeren \"{{username}}\" er en gratis bruger. Venligst abbonér på Real-Debrid",
"real_debrid_linked_message": "Brugeren \"{{username}}\" er forbundet",
"save_changes": "Gem ændringer",
"changes_saved": "Ændringer gemt successfuldt",
"download_sources_description": "Hydra vil hente download links fra disse kilder. Kilde URLen skal være et direkte link til en .json fil der indeholder download linkene.",
"validate_download_source": "Validér",
"remove_download_source": "Fjern",
"add_download_source": "Tilføj kilde",
"download_count_zero": "Ingen download muligheder",
"download_count_one": "{{countFormatted}} download mulighed",
"download_count_other": "{{countFormatted}} download muligheder",
"download_source_url": "Download kilde URL",
"add_download_source_description": "Indsæt URLen der indeholder .json filen",
"download_source_up_to_date": "Op til dato",
"download_source_errored": "Fejlede",
"sync_download_sources": "Synkronisér kilder",
"removed_download_source": "Download kilde fjernet",
"added_download_source": "Tilføjede download kilde",
"download_sources_synced": "Alle download kilder er synkroniserede",
"insert_valid_json_url": "Indsæt en gyldig JSON url",
"found_download_option_zero": "Ingen download mulighed fundet",
"found_download_option_one": "Fandt {{countFormatted}} download mulighed",
"found_download_option_other": "Fandt {{countFormatted}} download mulighed",
"import": "Importér",
"public": "Offentlig",
"private": "Privat",
"friends_only": "Kun blandt venner",
"privacy": "Privatliv",
"profile_visibility": "Synlighed af profil",
"profile_visibility_description": "Vælg hvem der kan se din profil og dit bibliotek",
"required_field": "Dette felt er påkrævet",
"source_already_exists": "Denne kilde er allerede blevet tilføjet",
"must_be_valid_url": "Kilden skal være en gyldig URL",
"blocked_users": "Blokerede brugere",
"user_unblocked": "Brugeren er blevet afblokeret"
},
"notifications": {
"download_complete": "Download færdig",
"game_ready_to_install": "{{title}} er klar til at installeret",
"repack_list_updated": "Repack liste opdateret",
"repack_count_one": "{{count}} repack tilføjet",
"repack_count_other": "{{count}} repacks tilføjet"
"repack_count_other": "{{count}} repacks tilføjet",
"new_update_available": "Version {{version}} tilgængelig",
"restart_to_install_update": "Genstart Hydra for at installere opdateringen"
},
"system_tray": {
"open": "Åben Hydra",
@@ -130,10 +236,80 @@
},
"binary_not_found_modal": {
"title": "Programmer ikke installeret",
"description": "Wine eller Lutris eksekverbare blev ikke fundet på dit system",
"description": "Wine eller Lutris eksekverbar blev ikke fundet på dit system",
"instructions": "Tjek den korrekte måde at installere nogle af dem, på din Linux distribution, så spillet kan køre normalt"
},
"modal": {
"close": "Luk knap"
},
"forms": {
"toggle_password_visibility": "Skift synlighed af kodeord"
},
"user_profile": {
"amount_hours": "{{amount}} timer",
"amount_minutes": "{{amount}} minuter",
"last_time_played": "Sidst spillet {{period}}",
"activity": "Seneste aktivitet",
"library": "Bibliotek",
"total_play_time": "Samlet spiltid: {{amount}}",
"no_recent_activity_title": "Hmmm… ikke noget her",
"no_recent_activity_description": "Du har ikke spillet nogen spil for nyligt. Dét er det på tide at lave om på!",
"display_name": "Brugernavn",
"saving": "Gemmer",
"save": "Gem",
"edit_profile": "Redigér Profil",
"saved_successfully": "Gemt successfuldt",
"try_again": "Venligst, prøv igen",
"sign_out_modal_title": "Er du sikker?",
"cancel": "Annullér",
"successfully_signed_out": "Loggede ud successfuldt",
"sign_out": "Log ud",
"playing_for": "Spiller i {{amount}}",
"sign_out_modal_text": "Dit bibliotek er koblet sammen med din nuværende bruger. Når du logger ud er dit bibliotek ikke synligt længere, og nogen som helst form for fremskridt bliver ikke gemt. Vil du fortsætte med at logge ud?",
"add_friends": "Tilføj venner",
"add": "Tilføj",
"friend_code": "Venne kode",
"see_profile": "Se profil",
"sending": "Sender",
"friend_request_sent": "Venne anmodning sendt",
"friends": "Venner",
"friends_list": "Venne liste",
"user_not_found": "Bruger ikke fundet",
"block_user": "Blokér bruger",
"add_friend": "Tilføj ven",
"request_sent": "Anmodning sendt",
"request_received": "Anmodning modtaget",
"accept_request": "Acceptér anmodning",
"ignore_request": "Ignorér anmodning",
"cancel_request": "Annullér anmodning",
"undo_friendship": "Fortryd venskab",
"request_accepted": "Anmodning accepteret",
"user_blocked_successfully": "Bruger blokeret successfuldt",
"user_block_modal_text": "Dette blokerer {{displayName}}",
"blocked_users": "Blokerede brugere",
"unblock": "Afblokér",
"no_friends_added": "Du har stadig ikke tilføjet nogen venner",
"pending": "Afventer",
"no_pending_invites": "Du har ingen afventende invitationer",
"no_blocked_users": "Du har ingen blokerede brugere",
"friend_code_copied": "Venne kode kopieret",
"undo_friendship_modal_text": "Dette vil fortryde dit venskab med {{displayName}}",
"privacy_hint": "For at justere hvem der kan se dette, gå til <0>Indstillingerne</0>",
"locked_profile": "Denne profil er privat",
"image_process_failure": "Fejlede under håndteringen af billedet",
"required_field": "Dette felt er påkrævet",
"displayname_min_length": "Brugernavnet skal være mindst 3 karakterer langt",
"displayname_max_length": "Brugernavnet skal være højest 50 karakterer langt",
"report_profile": "Rapportér denne profil",
"report_reason": "Hvorfor rapportérer du denne profil?",
"report_description": "Yderligere information",
"report_description_placeholder": "Yderligere information",
"report": "Rapportér",
"report_reason_hate": "Hadefuld tale",
"report_reason_sexual_content": "Seksuelt indhold",
"report_reason_violence": "Vold",
"report_reason_spam": "Spam",
"report_reason_other": "Andet",
"profile_reported": "Profil rapporteret"
}
}

View File

@@ -5,7 +5,6 @@
},
"home": {
"featured": "Empfohlen",
"trending": "Beliebt",
"surprise_me": "Überrasche mich",
"no_results": "Keine Ergebnisse gefunden"
},

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"
"hot": "Hot now",
"weekly": "📅 Top games of the week",
"achievements": "🏆 Games to beat"
},
"sidebar": {
"catalogue": "Catalogue",
@@ -40,7 +40,7 @@
"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)"
},
@@ -130,7 +130,42 @@
"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": "Your achievements are not synchronized",
"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"
},
"activation": {
"title": "Activate Hydra",
@@ -163,7 +198,10 @@
"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_seed": "Stop seed",
"resume_seed": "Resume seed"
},
"settings": {
"downloads_path": "Downloads path",
@@ -180,7 +218,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 +233,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 +252,13 @@
"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 in unlocked",
"launch_minimized": "Launch Hydra minimized",
"seed_after_download_completes": "Seed after download completes"
},
"notifications": {
"download_complete": "Download complete",
@@ -226,7 +267,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,7 +293,7 @@
"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}}",
"no_recent_activity_title": "Hmmm… nothing here",
@@ -289,7 +332,7 @@
"user_block_modal_text": "This will block {{displayName}}",
"blocked_users": "Blocked users",
"unblock": "Unblock",
"no_friends_added": "You still don't have added friends",
"no_friends_added": "You have no added friends",
"pending": "Pending",
"no_pending_invites": "You have no pending invites",
"no_blocked_users": "You have no blocked users",
@@ -311,6 +354,30 @@
"report_reason_violence": "Violence",
"report_reason_spam": "Spam",
"report_reason_other": "Other",
"profile_reported": "Profile reported"
"profile_reported": "Profile reported",
"your_friend_code": "Your friend code:",
"upload_banner": "Upload banner",
"uploading_banner": "Uploading banner…",
"background_image_updated": "Background image updated"
},
"achievement": {
"achievement_unlocked": "Achievement unlocked",
"user_achievements": "{{displayName}}'s Achievements",
"your_achievements": "Your Achievements",
"unlocked_at": "Unlocked at:",
"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}}"
},
"tour": {
"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"
}
}

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",
"hot": "🔥 Caliente ahora",
"weekly": "📅 Los mejores juegos de la semana",
"start_typing": "Empieza a escribir para buscar..."
"no_results": "Sin resultados encontrados",
"start_typing": "Empieza a escribir para buscar...",
"hot": "Popular Ahora",
"weekly": "📅 Mejores juegos de la semana",
"achievements": "🏆 Juegos para completar"
},
"sidebar": {
"catalogue": "Catálogo",
@@ -22,8 +22,8 @@
"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"
},
@@ -34,8 +34,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",
@@ -99,7 +99,7 @@
"open_screenshot": "Abrir captura {{number}}",
"download_settings": "Ajustes de descarga",
"downloader": "Método de descarga",
"select_executable": "Seleccionar",
"select_executable": "Seleccionar ejecutable",
"no_executable_selected": "No se seleccionó un ejecutable",
"open_folder": "Abrir carpeta",
"open_download_location": "Ver archivos descargados",
@@ -119,16 +119,53 @@
"last_downloaded_option": "Última opción descargada",
"create_shortcut_success": "Atajo creado con éxito",
"create_shortcut_error": "Error al crear un atajo",
"allow_nsfw_content": "Continuar",
"download": "Descargar",
"download_count": "Descargas",
"download_error": "Esta opción de descarga no está disponible.",
"executable_path_in_use": "Ejecutable ya en uso por \"{{game}}\"",
"nsfw_content_description": "{{title}} incluye contenido que puede no ser adecuado para todas las edades. \n¿Estás seguro de que quieres continuar?",
"nsfw_content_title": "Este juego contiene contenido inapropiado.",
"nsfw_content_description": "{{title}} puede ser no adecuado para todas las edades por su contenido. \n¿Deseas continuar de igual forma?",
"allow_nsfw_content": "Continuar",
"refuse_nsfw_content": "No, gracias",
"stats": "Estadísticas",
"download_count": "Downloads",
"player_count": "Jugadores activos",
"refuse_nsfw_content": "Volver",
"stats": "Estadísticas"
"download_error": "Esta opción de descarga no está disponible.",
"download": "Descargar",
"executable_path_in_use": "El ejecutable se encuentra en uso por \"{{game}}\"",
"warning": "Advertencia:",
"hydra_needs_to_remain_open": "Para esta descarga, Hydra necesita mantenerse abierta hasta que concluya. En caso de que Hydra se cierre antes de que concluya, podrías perder todo el progreso.",
"achievements": "Logros",
"achievements_count": "Logros {{unlockedCount}}/{{achievementsCount}}",
"cloud_save": "Guardado en la nube",
"cloud_save_description": "Guarda tu progreso en la nube y continúa jugando en cualquier dispositivo",
"backups": "Copias de Seguridad",
"install_backup": "Instalar",
"delete_backup": "Eliminar",
"create_backup": "Nueva Copia de Seguridad",
"last_backup_date": "Última copia de seguridad el {{date}}",
"no_backup_preview": "No se encontraron datos de guardados para este juego",
"restoring_backup": "Restaurando copia de seguridad ({{progress}} completado)…",
"uploading_backup": "Subiendo copia de seguridad…",
"no_backups": "No has creado ninguna copia de seguridad para este juego aún",
"backup_uploaded": "Copia de seguridad subida",
"backup_deleted": "Copia de seguridad eliminada",
"backup_restored": "Copia de seguridad restaurada",
"see_all_achievements": "Ver todos los logros",
"sign_in_to_see_achievements": "Inicia sesión para ver los logros",
"mapping_method_automatic": "Automático",
"mapping_method_manual": "Manual",
"mapping_method_label": "Método de mapeo",
"files_automatically_mapped": "Archivos mapeados automáticamente",
"no_backups_created": "Sin copias de seguridad creadas para este juego",
"manage_files": "Gestionar archivos",
"loading_save_preview": "Buscando datos de guardados de juegos…",
"wine_prefix": "Prefijo de Wine",
"wine_prefix_description": "El prefijo de Wine usado para ejecutar este juego",
"no_download_option_info": "Sin información disponible",
"backup_deletion_failed": "La eliminación de la copia de seguridad falló",
"max_number_of_artifacts_reached": "Número máximo de copias de seguridad de este juego alcanzadas",
"achievements_not_sync": "Tus logros no están sincronizados",
"manage_files_description": "Gestiona los archivos que serán respaldados y restaurados",
"select_folder": "Seleccionar carpeta",
"backup_from": "Copia de seguridad de {{date}}",
"custom_backup_location_set": "Se configuró la carpeta de copia de seguridad"
},
"activation": {
"title": "Activar Hydra",
@@ -205,20 +242,18 @@
"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"
},
"notifications": {
"download_complete": "Descarga completada",
@@ -227,7 +262,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 +275,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": {
@@ -296,23 +333,44 @@
"no_blocked_users": "No has bloqueado a ningún usuario",
"friend_code_copied": "Código de amigo copiado",
"undo_friendship_modal_text": "Esto deshará tu amistad con {{displayName}}",
"displayname_max_length": "El nombre para mostrar debe tener como máximo 50 caracteres",
"displayname_min_length": "El nombre para mostrar debe tener al menos 3 caracteres",
"locked_profile": "Este perfil es privado.",
"privacy_hint": "Para ajustar quién puede ver esto, ve a <0>Configuración</0>.",
"profile_locked": "",
"profile_reported": "Perfil reportado",
"report": "Informe",
"locked_profile": "Este perfil es privado",
"image_process_failure": "Error al procesar la imagen",
"required_field": "Este campo es obligatorio",
"displayname_min_length": "El nombre a mostrar debe tener al menos 3 caracteres",
"displayname_max_length": "El nombre a mostrar debe tener como máximo 50 caracteres",
"report_profile": "Reportar este perfil",
"report_reason": "¿Cual es el motivo del reporte?",
"report_description": "Información adicional",
"report_description_placeholder": "Información adicional",
"report_profile": "Reportar este perfil",
"report_reason": "¿Por qué estás denunciando este perfil?",
"report_reason_hate": "Discurso de odio",
"report_reason_other": "Otro",
"report": "Reportar",
"report_reason_hate": "Discursos de odio",
"report_reason_sexual_content": "Contenido sexual",
"report_reason_spam": "Correo basura",
"report_reason_violence": "Violencia",
"required_field": "Este campo es obligatorio",
"image_process_failure": "Error al procesar la imagen"
"report_reason_spam": "Spam / Contenido no deseado",
"report_reason_other": "Otro",
"profile_reported": "Perfil reportado",
"your_friend_code": "Tu código de amigo:",
"upload_banner": "Subir un banner",
"uploading_banner": "Subiendo banner…",
"background_image_updated": "Imagen de fondo actualizada"
},
"achievement": {
"achievement_unlocked": "Logro desbloqueado",
"user_achievements": "Logros de {{displayName}}",
"your_achievements": "Tus Logros",
"unlocked_at": "Desbloqueado el:",
"subscription_needed": "Se necesita una suscripción a Hydra Cloud se necesita para ver este contenido",
"new_achievements_unlocked": "Desbloqueados {{achievementCount}} nuevos logros de {{gameCount}} juegos"
},
"tour": {
"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"
}
}

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: {{amount}}",
"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:",
"subscription_needed": "Selle sisu nägemiseks on vaja Hydra Cloud tellimust",
"new_achievements_unlocked": "Avatud {{achievementCount}} uut saavutust {{gameCount}} mängust"
},
"tour": {
"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",

View File

@@ -22,6 +22,8 @@ import ro from "./ro/translation.json";
import ca from "./ca/translation.json";
import kk from "./kk/translation.json";
import cs from "./cs/translation.json";
import nb from "./nb/translation.json";
import et from "./et/translation.json";
export default {
"pt-BR": ptBR,
@@ -48,4 +50,6 @@ export default {
ca,
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": "Жаңартылған",

View File

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

View File

@@ -0,0 +1,315 @@
{
"language_name": "Norsk Bokmål",
"app": {
"successfully_signed_in": "Logget inn vellykket"
},
"home": {
"featured": "Anbefalinger",
"surprise_me": "Overrask meg",
"no_results": "Ingen resultater fundet",
"start_typing": "Begynn å skrive for å søke...",
"hot": "Populært akkurat nå",
"weekly": "📅 De mest populære spillene denne uken"
},
"sidebar": {
"catalogue": "Katalog",
"downloads": "Nedlastinger",
"settings": "Innstillinger",
"my_library": "Mitt bibliotek",
"downloading_metadata": "{{title}} (Laster ned metadata…)",
"paused": "{{title}} (Satt på pause)",
"downloading": "{{title}} ({{percentage}} - Laster ned…)",
"filter": "Filtrér bibliotek",
"home": "Hjem",
"queued": "{{title}} (I køen)",
"game_has_no_executable": "Spillet har ikke noen kjørbar fil valgt",
"sign_in": "Logge inn",
"friends": "Venner"
},
"header": {
"search": "Søk efter spill",
"home": "Hjem",
"catalogue": "Katalog",
"downloads": "Nedlastinger",
"search_results": "Søkeresultater",
"settings": "Innstillinger",
"version_available_install": "Versjon {{version}} tilgjengelig. Klikk her for å gjenstarte og installere.",
"version_available_download": "Versjon {{version}} tilgjengelig. Klikk her for at laste ned."
},
"bottom_panel": {
"no_downloads_in_progress": "Ingen nedlastinger pågår",
"downloading_metadata": "Laster ned {{title}} metadata…",
"downloading": "Laster ned {{title}}… ({{percentage}} ferdig) - Fullstendig nedlastet {{eta}} - {{speed}}",
"calculating_eta": "Laster ned {{title}}… ({{percentage}} ferdig) - Regner ut resterende tid…",
"checking_files": "Sjekker {{title}} filer… ({{percentage}} ferdig)"
},
"catalogue": {
"next_page": "Neste side",
"previous_page": "Forrige side"
},
"game_details": {
"open_download_options": "Åpne nedlastingsmuligheter",
"download_options_zero": "Ingen nedlastingsmulighet",
"download_options_one": "{{count}} nedlastingsmulighet",
"download_options_other": "{{count}} nedlastingsmuligheter",
"updated_at": "Oppdatert {{updated_at}}",
"install": "Installere",
"resume": "Fortsett",
"pause": "Pause",
"cancel": "Kansellere",
"remove": "Fjern",
"space_left_on_disk": "{{space}} tilbake på harddisken",
"eta": "Konklusjon {{eta}}",
"calculating_eta": "Utregner resterende tid…",
"downloading_metadata": "Laster ned metadata…",
"filter": "Filtrér gjennpakkinger",
"requirements": "Systemkrav",
"minimum": "Mindste",
"recommended": "Anbefalet",
"paused": "Satt på pause",
"release_date": "Offentliggjort den {{date}}",
"publisher": "Gitt ut av {{publisher}}",
"hours": "timer",
"minutes": "minutter",
"amount_hours": "{{amount}} timer",
"amount_minutes": "{{amount}} minutter",
"accuracy": "{{accuracy}}% nøyaktighet",
"add_to_library": "Tilføy til biblioteket",
"remove_from_library": "Fjern fra biblioteket",
"no_downloads": "Ingen nedlastinger tilgjengelig",
"play_time": "Spilt i {{amount}}",
"last_time_played": "Sist spilt {{period}}",
"not_played_yet": "Du har ikke spilt {{title}} enda",
"next_suggestion": "Neste forslag",
"play": "Spil",
"deleting": "Sletter installatør…",
"close": "Lukk",
"playing_now": "Spiller nå",
"change": "Endre",
"repacks_modal_description": "Velg den gjennpakking du vil laste ned",
"select_folder_hint": "For å endre standard mappen, gå til <0>Innstillingene</0>",
"download_now": "Last ned nå",
"no_shop_details": "Kunne ikke modta butikksdetaljene.",
"download_options": "Nedlastingsmuligheter",
"download_path": "Nedlastingssti",
"previous_screenshot": "Forrige skjermbilde",
"next_screenshot": "Neste skjermbilde",
"screenshot": "Skjermbilde {{number}}",
"open_screenshot": "Åpen skjermbilde {{number}}",
"download_settings": "Nedlastingsinnstillinger",
"downloader": "Laster ned",
"select_executable": "Velg",
"no_executable_selected": "Ingen kjørbar fil valgt",
"open_folder": "Åpne mappe",
"open_download_location": "Se nedlastingede filer",
"create_shortcut": "Opprett snarvei på skrivebordet",
"remove_files": "Fjern filer",
"remove_from_library_title": "Er du sikker?",
"remove_from_library_description": "Dette vil fjerne {{game}} fra biblioteket ditt",
"options": "Valgmuligheter",
"executable_section_title": "Kjørbar fil",
"executable_section_description": "Sti til filen som skal brukes når det trykkes på \"Spill\"",
"downloads_secion_title": "Nedlastinger",
"downloads_section_description": "Sjekk for oppdateringer eller andre versjoner af dette spillet",
"danger_zone_section_title": "Faresonen",
"danger_zone_section_description": "Fjern dette spillet fra biblioteket ditt eller filene som har blitt lastet ned av Hydra",
"download_in_progress": "Nedlasting pågår",
"download_paused": "Nedlasting satt på pause",
"last_downloaded_option": "Siste nedlastingsmulighet",
"create_shortcut_success": "Opprettelse av snarvei vellykket",
"create_shortcut_error": "Feil under oprettelsen av snarvei",
"nsfw_content_title": "Dette spillet inneholder upassende innhold",
"nsfw_content_description": "{{title}} inneholder innhold som ikke passer til alle aldre. Er du sikker på at du vil fortsette?",
"allow_nsfw_content": "Fortsett",
"refuse_nsfw_content": "Gå tilbake",
"stats": "Statistikk",
"download_count": "Nedlastinger",
"player_count": "Aktive spillere",
"download_error": "Denne nedlastingsmulighet er ikke tilgjengelig",
"download": "Last ned",
"executable_path_in_use": "Kjørbar fil blir allerede brukt av \"{{game}}\"",
"warning": "Advarsel:",
"hydra_needs_to_remain_open": "Hydra skal forbli åpent for at denne nedlastingen kan gjennomføres. I tilfelle av at Hydra lukker før nedlastingen er ferdig, mister du fremskrittet ditt."
},
"activation": {
"title": "Aktivér Hydra",
"installation_id": "Installasjons ID:",
"enter_activation_code": "Inntast aktiveringskoden din",
"message": "Hvis du ikke vet hvor du skal spørre om dette, burde du ikke ha dette.",
"activate": "Aktivér",
"loading": "Innleser…"
},
"downloads": {
"resume": "Fortsett",
"pause": "Pause",
"eta": "Konklusjon {{eta}}",
"paused": "Satt på pause",
"verifying": "Verifiserer…",
"completed": "Ferdig",
"removed": "Ikke lastet ned",
"cancel": "Kansellér",
"filter": "Filtrér nedlastede spill",
"remove": "Fjern",
"downloading_metadata": "Laster ned metadata…",
"deleting": "Sletter installatør…",
"delete": "Fjern installatør",
"delete_modal_title": "Er du sikker?",
"delete_modal_description": "Dette vil fjerne alle installasjonsfilene fra datamaskinen din",
"install": "Installér",
"download_in_progress": "Pågår",
"queued_downloads": "Nedlastingskø",
"downloads_completed": "Gjennomførte",
"queued": "I kø",
"no_downloads_title": "Ganske tomt",
"no_downloads_description": "Du har ikke lastet ned noe med Hydra enda, men det er aldri for sent å begynne.",
"checking_files": "Undersøker filer…"
},
"settings": {
"downloads_path": "Nedlastingssti",
"change": "Oppdater",
"notifications": "Notifikasjoner",
"enable_download_notifications": "Når en nedlasting blir ferdig",
"enable_repack_list_notifications": "Når en ny gjennpakking bliver lagt til",
"real_debrid_api_token_label": "Real-Debrid API nøkkel",
"quit_app_instead_hiding": "Avslut Hydra i stedet for å minimere til prosesslinjen",
"launch_with_system": "Åpne Hydra ved oppstart av datamaskinen",
"general": "Generelt",
"behavior": "Oppførsel",
"download_sources": "Nedlastingskilder",
"language": "Språk",
"real_debrid_api_token": "API nøkkel",
"enable_real_debrid": "Slå på Real-Debrid",
"real_debrid_description": "Real-Debrid er en ubegrenset nedlaster som gør det mulig for deg å laste ned filer med en gang og med den beste utnyttelsen av internethastigheten din.",
"real_debrid_invalid_token": "Ugyldig API nøkkel",
"real_debrid_api_token_hint": "Du kan få API nøkkelen din <0>her</0>",
"real_debrid_free_account_error": "Brukeren \"{{username}}\" er en gratis bruker. Vennligst abboner på Real-Debrid",
"real_debrid_linked_message": "Brukeren \"{{username}}\" er forbunnet",
"save_changes": "Lagre endringer",
"changes_saved": "Lagring av endringer vellykket",
"download_sources_description": "Hydra vil hente nedlastingslenker fra disse kildene. Kilde URLen skal være en direkte lenke til en .json fil som inneholder nedlastingslenkene.",
"validate_download_source": "Validér",
"remove_download_source": "Fjern",
"add_download_source": "Legg til kilde",
"download_count_zero": "Ingen nedlastingsmuligheter",
"download_count_one": "{{countFormatted}} nedlastingsmulighet",
"download_count_other": "{{countFormatted}} nedlastingsmuligheter",
"download_source_url": "Last ned kilde URL",
"add_download_source_description": "Sett inn URLen som inneholder .json filen",
"download_source_up_to_date": "Oppdatert",
"download_source_errored": "Mislyktes",
"sync_download_sources": "Synkroniser kilder",
"removed_download_source": "Nedlastingskilde fjernet",
"added_download_source": "La til Nedlastingskilde",
"download_sources_synced": "Alle nedlastingskilder er synkroniserte",
"insert_valid_json_url": "Innsett en gyldig JSON url",
"found_download_option_zero": "Ingen nedlastingsmulighet funnet",
"found_download_option_one": "Fant {{countFormatted}} nedlastingsmulighet",
"found_download_option_other": "Fant {{countFormatted}} nedlastingsmuligheter",
"import": "Importer",
"public": "Offentlig",
"private": "Privat",
"friends_only": "Kun blant venner",
"privacy": "Privatliv",
"profile_visibility": "Synlighet av profil",
"profile_visibility_description": "Velg hvem som kan se profilen din og biblioteket ditt",
"required_field": "Dette feltet er påkrevet",
"source_already_exists": "Denne kilden har allerede blitt lagt til",
"must_be_valid_url": "Kilden må være en gyldig URL",
"blocked_users": "Blokerte brukere",
"user_unblocked": "Brukeren har blit avblokert"
},
"notifications": {
"download_complete": "Nedlasting ferdig",
"game_ready_to_install": "{{title}} er klar til å bli installert",
"repack_list_updated": "Gjennpakkingslisten er opdateret",
"repack_count_one": "{{count}} gjennpakking lagt til",
"repack_count_other": "{{count}} gjennpakkinger lagt til",
"new_update_available": "Versjon {{version}} tilgjengelig",
"restart_to_install_update": "Gjenstart Hydra for å installere oppdateringen"
},
"system_tray": {
"open": "Åpne Hydra",
"quit": "Avslutt"
},
"game_card": {
"no_downloads": "Ingen nedlastinger tilgjengelig"
},
"binary_not_found_modal": {
"title": "Programmer ikke installert",
"description": "Wine eller Lutris kjørbar ble ikke funnet på systemet ditt",
"instructions": "Sjekk den korrekte måten å installere noen av de, på Linux distributionen din, så spillet kan kjøre på vanlig måte"
},
"modal": {
"close": "Lukk knapp"
},
"forms": {
"toggle_password_visibility": "Skift synlighet af passord"
},
"user_profile": {
"amount_hours": "{{amount}} timer",
"amount_minutes": "{{amount}} minutter",
"last_time_played": "Sist spilt {{period}}",
"activity": "Seneste aktivitet",
"library": "Bibliotek",
"total_play_time": "Samlet spilltid: {{amount}}",
"no_recent_activity_title": "Hmmm… ikke noe her",
"no_recent_activity_description": "Du har ikke spilt noen spill for på det seneste. Det er det på tide at endre på!",
"display_name": "Brukernavn",
"saving": "Lagrer",
"save": "Lagre",
"edit_profile": "Rediger Profil",
"saved_successfully": "Lagring vellykket",
"try_again": "Vennligst, prøv igjen",
"sign_out_modal_title": "Er du sikker?",
"cancel": "Kansellér",
"successfully_signed_out": "Utlogging vellykket",
"sign_out": "Log ut",
"playing_for": "Spiller i {{amount}}",
"sign_out_modal_text": "Biblioteket ditt er sammenkobelt med den nåverende brukeren. Når du logger ut er biblioteket ditt ikke synlig lenger, og hvilken som helst form for fremskritt bliver ikke lagret. Vil du fortsette med å logge ut?",
"add_friends": "Legg til venner",
"add": "Legg til",
"friend_code": "Vennekode",
"see_profile": "Se profil",
"sending": "Sender",
"friend_request_sent": "Venneforespørsel sendt",
"friends": "Venner",
"friends_list": "Venneliste",
"user_not_found": "Bruker ikke funnet",
"block_user": "Blokkere bruker",
"add_friend": "Legg til venn",
"request_sent": "Forespørsel sendt",
"request_received": "Forespørsel modtatt",
"accept_request": "Akseptere forespørsel",
"ignore_request": "Ignorere forespørsel",
"cancel_request": "Kansellre forespørsel",
"undo_friendship": "Angre venskab",
"request_accepted": "Forespørsel akseptert",
"user_blocked_successfully": "Blokkering av bruker vellykket",
"user_block_modal_text": "Dette blokerer {{displayName}}",
"blocked_users": "Blokerte brukere",
"unblock": "Avblokere",
"no_friends_added": "Du har fortsatt ikke lagt til noen venner",
"pending": "Avventer",
"no_pending_invites": "Du har ingen avventende invitasjoner",
"no_blocked_users": "Du har ingen blokerte brukere",
"friend_code_copied": "Vennekode kopiert",
"undo_friendship_modal_text": "Dette vil angre venskapet ditt med {{displayName}}",
"privacy_hint": "For å justere på hvem som kan se dette, gå til <0>Innstillingene</0>",
"locked_profile": "Denne profilen er privat",
"image_process_failure": "Mislyktes under håndteringen av bildet",
"required_field": "Dette feltet er påkrevet",
"displayname_min_length": "Brukernavnet skal være minst 3 karakterer langt",
"displayname_max_length": "Brukernavnet skal være maksimalt 50 karakterer langt",
"report_profile": "Rapportér denne profilen",
"report_reason": "Hvorfor rapportérer du denne profilen?",
"report_description": "Mer informasjon",
"report_description_placeholder": "Mer informasjon",
"report": "Rapportér",
"report_reason_hate": "Hatytringer",
"report_reason_sexual_content": "Seksuelt innhold",
"report_reason_violence": "Vold",
"report_reason_spam": "Spam",
"report_reason_other": "Annet",
"profile_reported": "Profil rapportert"
}
}

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…"
@@ -126,7 +126,42 @@
"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": "Suas conquistas não estão sincronizadas",
"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"
},
"activation": {
"title": "Ativação",
@@ -155,11 +190,14 @@
"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_seed": "Parar seed",
"resume_seed": "Retomar seed"
},
"settings": {
"downloads_path": "Diretório dos downloads",
@@ -168,7 +206,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 +228,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 +251,9 @@
"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"
},
"notifications": {
"download_complete": "Download concluído",
@@ -299,7 +336,6 @@
"friend_code_copied": "Código de amigo copiado",
"undo_friendship_modal_text": "Isso irá remover sua amizade com {{displayName}}",
"privacy_hint": "Pra controlar quem pode ver seu perfil, acesse a <0>Tela de Configurações</0>",
"profile_locked": "Este perfil é privado",
"image_process_failure": "Falha ao processar a imagem",
"required_field": "Este campo é obrigatório",
"displayname_min_length": "Nome de exibição deve ter pelo menos 3 caracteres",
@@ -315,6 +351,30 @@
"report_reason_violence": "Violência",
"report_reason_spam": "Spam",
"report_reason_other": "Outro",
"profile_reported": "Perfil reportado"
"profile_reported": "Perfil reportado",
"your_friend_code": "Seu código de amigo:",
"upload_banner": "Carregar banner",
"uploading_banner": "Carregando banner…",
"background_image_updated": "Imagem de fundo salva"
},
"achievement": {
"achievement_unlocked": "Conquista desbloqueada",
"your_achievements": "Suas Conquistas",
"user_achievements": "Conquistas de {{displayName}}",
"unlocked_at": "Desbloqueado em:",
"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}}"
},
"tour": {
"subscription_tour_title": "Assinatura 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"
}
}

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",
"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,11 +324,49 @@
"user_block_modal_text": "Bloquear {{displayName}}",
"blocked_users": "Utilizadores bloqueados",
"unblock": "Desbloquear",
"no_friends_added": "Ainda não adicionaste amigos",
"no_friends_added": "Ainda não adicionaste nenhum amigo",
"pending": "Pendentes",
"no_pending_invites": "Não tens convites de amizade pendentes",
"no_pending_invites": "Não tens pedidos de amizade pendentes",
"no_blocked_users": "Não tens nenhum utilizador bloqueado",
"friend_code_copied": "Código de amigo copiado",
"image_process_failure": "Falha ao processar a imagem"
"undo_friendship_modal_text": "Isto vai remover a tua amizade com {{displayName}}",
"privacy_hint": "Para controlar quem pode ver o teu perfil, acede às <0>Definições</0>",
"profile_locked": "Este perfil é privado",
"image_process_failure": "Falha ao processar a imagem",
"required_field": "Este campo é obrigatório",
"displayname_min_length": "O nome de apresentação deve ter pelo menos 3 caracteres",
"displayname_max_length": "O nome de apresentação deve ter no máximo 50 caracteres",
"locked_profile": "Este perfil é privado",
"report_profile": "Denunciar este perfil",
"report_reason": "Por que é que desejas denunciar este perfil?",
"report_description": "Informações adicionais",
"report_description_placeholder": "Insere aqui",
"report": "Denunciar",
"report_reason_hate": "Discurso de ódio",
"report_reason_sexual_content": "Conteúdo sexual",
"report_reason_violence": "Violência",
"report_reason_spam": "Spam",
"report_reason_other": "Outro",
"profile_reported": "Perfil denunciado",
"your_friend_code": "O teu código de amigo:",
"upload_banner": "Fazer upload do banner",
"uploading_banner": "A fazer upload do banner…"
},
"achievement": {
"achievement_unlocked": "Conquista desbloqueada",
"your_achievements": "As tuas Conquistas",
"user_achievements": "Conquistas de {{displayName}}",
"unlocked_at": "Desbloqueada em:",
"subscription_needed": "Precisas de uma subscrição Hydra Cloud para visualizar este conteúdo",
"new_achievements_unlocked": "{{achievementCount}} novas conquistas de {{gameCount}} jogos"
},
"tour": {
"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

@@ -5,10 +5,9 @@
},
"home": {
"featured": "Рекомендованное",
"trending": "В тренде",
"surprise_me": "Удиви меня",
"no_results": "Ничего не найдено",
"hot": "🔥 Сейчас жарко",
"hot": "Сейчас в топе",
"start_typing": "Начинаю вводить текст для поиска...",
"weekly": "📅 Лучшие игры недели"
},
@@ -206,9 +205,6 @@
"found_download_option_other": "Найдено {{countFormatted}} вариантов загрузки",
"import": "Импортировать",
"blocked_users": "Заблокированные пользователи",
"download_options_one": "",
"download_options_other": "",
"download_options_zero": "",
"friends_only": "Только друзья",
"must_be_valid_url": "Источник должен быть действительным URL-адресом.",
"privacy": "Конфиденциальность",
@@ -300,7 +296,6 @@
"image_process_failure": "Сбой при обработке изображения",
"locked_profile": "Этот профиль является частным",
"privacy_hint": "Чтобы указать, кто может это видеть, перейдите в <0>Настройки</0>.",
"profile_locked": "",
"profile_reported": "Профиль сообщил",
"report": "Отчет",
"report_description": "Дополнительная информация",

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": "Посилання на джерело",

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,14 +241,49 @@
"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}} 分钟",
@@ -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": "解锁于:",
"subscription_needed": "需要订阅 Hydra Cloud 才能看到此内容",
"new_achievements_unlocked": "从 {{gameCount}} 游戏中解锁 {{achievementCount}} 新成就"
},
"tour": {
"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,13 +1,28 @@
import { app } from "electron";
import path from "node:path";
export const LUDUSAVI_MANIFEST_URL = "https://cdn.losbroxas.org/manifest.yaml";
export const defaultDownloadsPath = app.getPath("downloads");
export const databaseDirectory = path.join(app.getPath("appData"), "hydra");
export const databasePath = path.join(databaseDirectory, "hydra.db");
export const databasePath = path.join(
databaseDirectory,
import.meta.env.MAIN_VITE_API_URL.includes("staging")
? "hydra_test.db"
: "hydra.db"
);
export const logsPath = path.join(app.getPath("appData"), "hydra", "logs");
export const seedsPath = app.isPackaged
? path.join(process.resourcesPath, "seeds")
: path.join(__dirname, "..", "..", "seeds");
export const achievementSoundPath = app.isPackaged
? path.join(process.resourcesPath, "achievement.wav")
: path.join(__dirname, "..", "..", "resources", "achievement.wav");
export const backupsPath = path.join(app.getPath("userData"), "Backups");
export const appVersion = app.getVersion();

View File

@@ -7,6 +7,9 @@ import {
Repack,
UserPreferences,
UserAuth,
GameAchievement,
UserSubscription,
SeedList,
} from "@main/entity";
import { databasePath } from "./constants";
@@ -16,11 +19,14 @@ export const dataSource = new DataSource({
entities: [
Game,
Repack,
UserAuth,
UserPreferences,
UserSubscription,
GameShopCache,
DownloadSource,
DownloadQueue,
UserAuth,
GameAchievement,
SeedList,
],
synchronize: false,
database: databasePath,

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

@@ -39,6 +39,9 @@ export class Game {
@Column("text", { nullable: true })
executablePath: string | null;
@Column("text", { nullable: true })
winePrefixPath: string | null;
@Column("int", { default: 0 })
playTimeInMilliseconds: number;
@@ -51,6 +54,9 @@ export class Game {
@Column("int", { default: Downloader.Torrent })
downloader: Downloader;
@Column("boolean", { default: false })
shouldSeed: boolean;
/**
* Progress is a float between 0 and 1
*/

View File

@@ -1,7 +1,11 @@
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 "./game.entity";
export * from "./game-achievements.entity";
export * from "./download-source.entity";
export * from "./download-queue.entity";
export * from "./user-auth";
export * from "./seed-list.entity";

View File

@@ -0,0 +1,25 @@
import {
Entity,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
Column,
} from "typeorm";
@Entity("seed_list")
export class SeedList {
@PrimaryGeneratedColumn()
id: number;
@Column("text")
downloadUri: string;
@Column("boolean", { default: false })
shouldSeed: boolean;
@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,21 @@ 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: true })
seedAfterDownloadCompletes: 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,5 +1,4 @@
import { registerEvent } from "../register-event";
import * as Sentry from "@sentry/electron/main";
import {
DownloadManager,
HydraApi,
@@ -7,7 +6,7 @@ import {
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";
const signOut = async (_event: Electron.IpcMainInvokeEvent) => {
const databaseOperations = dataSource
@@ -19,15 +18,16 @@ 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();

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,8 +1,8 @@
import type { GameShop } from "@types";
import { registerEvent } from "../register-event";
import { HydraApi, RepacksManager } from "@main/services";
import { CatalogueCategory, formatName, steamUrlBuilder } from "@shared";
import { HydraApi } from "@main/services";
import { CatalogueCategory, steamUrlBuilder } from "@shared";
import { steamGamesWorker } from "@main/workers";
const getCatalogue = async (
@@ -15,7 +15,7 @@ const getCatalogue = async (
});
const response = await HydraApi.get<{ objectId: string; shop: GameShop }[]>(
`/games/${category}?${params.toString()}`,
`/catalogue/${category}?${params.toString()}`,
{},
{ needsAuth: false }
);
@@ -26,16 +26,11 @@ const getCatalogue = async (
name: "getById",
});
const repacks = RepacksManager.search({
query: formatName(steamGame.name),
});
return {
title: steamGame.name,
shop: game.shop,
repacks,
cover: steamUrlBuilder.library(game.objectId),
objectID: game.objectId,
objectId: game.objectId,
};
})
);

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,26 +34,28 @@ const getLocalizedSteamAppDetails = async (
const getGameShopDetails = async (
_event: Electron.IpcMainInvokeEvent,
objectID: string,
objectId: string,
shop: GameShop,
language: string
): Promise<ShopDetails | null> => {
if (shop === "steam") {
const cachedData = await gameShopCacheRepository.findOne({
where: { objectID, language },
where: { objectID: objectId, language },
});
const appDetails = getLocalizedSteamAppDetails(objectID, language).then(
const appDetails = getLocalizedSteamAppDetails(objectId, language).then(
(result) => {
gameShopCacheRepository.upsert(
{
objectID,
shop: "steam",
language,
serializedData: JSON.stringify(result),
},
["objectID"]
);
if (result) {
gameShopCacheRepository.upsert(
{
objectID: objectId,
shop: "steam",
language,
serializedData: JSON.stringify(result),
},
["objectID"]
);
}
return result;
}
@@ -66,7 +68,7 @@ const getGameShopDetails = async (
if (cachedGame) {
return {
...cachedGame,
objectID,
objectId,
} as ShopDetails;
}

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 +1,29 @@
import type { CatalogueEntry } from "@types";
import { registerEvent } from "../register-event";
import { steamGamesWorker } from "@main/workers";
import { convertSteamGameToCatalogueEntry } from "../helpers/search-games";
import { RepacksManager } from "@main/services";
import { HydraApi } from "@main/services";
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" }
skip = 0
): Promise<CatalogueEntry[]> => {
const searchParams = new URLSearchParams({
take: take.toString(),
skip: skip.toString(),
});
const games = await HydraApi.get<CatalogueEntry[]>(
`/games/catalogue?${searchParams.toString()}`,
undefined,
{ needsAuth: false }
);
const entries = RepacksManager.findRepacksForCatalogueEntries(
steamGames.map((game) => convertSteamGameToCatalogueEntry(game))
);
return {
results: entries,
cursor: cursor + entries.length,
};
return games.map((game) => ({
...game,
cover: steamUrlBuilder.library(game.objectId),
}));
};
registerEvent("getGames", getGames);

View File

@@ -1,45 +1,23 @@
import type { GameShop, HowLongToBeatCategory } from "@types";
import type { HowLongToBeatCategory } from "@types";
import { getHowLongToBeatGame, searchHowLongToBeat } from "@main/services";
import { registerEvent } from "../register-event";
import { gameShopCacheRepository } from "@main/repository";
import { formatName } from "@shared";
const getHowLongToBeat = async (
_event: Electron.IpcMainInvokeEvent,
objectID: string,
shop: GameShop,
title: string
): Promise<HowLongToBeatCategory[] | null> => {
const searchHowLongToBeatPromise = searchHowLongToBeat(title);
const response = await searchHowLongToBeat(title);
const gameShopCache = await gameShopCacheRepository.findOne({
where: { objectID, shop },
const game = response.data.find((game) => {
return formatName(game.game_name) === formatName(title);
});
const howLongToBeatCachedData = gameShopCache?.howLongToBeatSerializedData
? JSON.parse(gameShopCache?.howLongToBeatSerializedData)
: null;
if (howLongToBeatCachedData) return howLongToBeatCachedData;
if (!game) return null;
const howLongToBeat = await getHowLongToBeatGame(String(game.game_id));
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 howLongToBeat;
};
registerEvent("getHowLongToBeat", getHowLongToBeat);

View File

@@ -3,32 +3,15 @@ import { shuffle } from "lodash-es";
import { getSteam250List } from "@main/services";
import { registerEvent } from "../register-event";
import { getSteamGameById } from "../helpers/search-games";
import type { Steam250Game } from "@types";
const state = { games: Array<Steam250Game>(), index: 0 };
const filterGames = async (games: Steam250Game[]) => {
const results: Steam250Game[] = [];
for (const game of games) {
const steamGame = await getSteamGameById(game.objectID);
if (steamGame?.repacks.length) {
results.push(game);
}
}
return results;
};
const getRandomGame = async (_event: Electron.IpcMainInvokeEvent) => {
if (state.games.length == 0) {
const steam250List = await getSteam250List();
const filteredSteam250List = await filterGames(steam250List);
state.games = shuffle(filteredSteam250List);
state.games = shuffle(steam250List);
}
if (state.games.length == 0) {

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,9 +0,0 @@
import { RepacksManager } from "@main/services";
import { registerEvent } from "../register-event";
const searchGameRepacks = (
_event: Electron.IpcMainInvokeEvent,
query: string
) => RepacksManager.search({ query });
registerEvent("searchGameRepacks", searchGameRepacks);

View File

@@ -1,7 +1,7 @@
import { registerEvent } from "../register-event";
import { convertSteamGameToCatalogueEntry } from "../helpers/search-games";
import { CatalogueEntry } from "@types";
import { HydraApi, RepacksManager } from "@main/services";
import type { CatalogueEntry } from "@types";
import { HydraApi } from "@main/services";
const searchGamesEvent = async (
_event: Electron.IpcMainInvokeEvent,
@@ -11,15 +11,13 @@ const searchGamesEvent = async (
{ objectId: string; title: string; shop: string }[]
>("/games/search", { title: query, take: 12, skip: 0 }, { needsAuth: false });
const steamGames = games.map((game) => {
return games.map((game) => {
return convertSteamGameToCatalogueEntry({
id: Number(game.objectId),
name: game.title,
clientIcon: null,
});
});
return RepacksManager.findRepacksForCatalogueEntries(steamGames);
};
registerEvent("searchGames", searchGamesEvent);

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,20 @@
import { HydraApi } from "@main/services";
import { registerEvent } from "../register-event";
import type { GameArtifact, GameShop } from "@types";
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()}`
);
};
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) => {
console.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);

View File

@@ -1,42 +0,0 @@
import { registerEvent } from "../register-event";
import { dataSource } from "@main/data-source";
import { DownloadSource } from "@main/entity";
import axios from "axios";
import { downloadSourceSchema } from "../helpers/validators";
import { insertDownloadsFromSource } from "@main/helpers";
import { RepacksManager } from "@main/services";
const addDownloadSource = async (
_event: Electron.IpcMainInvokeEvent,
url: string
) => {
const response = await axios.get(url);
const source = downloadSourceSchema.parse(response.data);
const downloadSource = await dataSource.transaction(
async (transactionalEntityManager) => {
const downloadSource = await transactionalEntityManager
.getRepository(DownloadSource)
.save({
url,
name: source.name,
downloadCount: source.downloads.length,
});
await insertDownloadsFromSource(
transactionalEntityManager,
downloadSource,
source.downloads
);
return downloadSource;
}
);
await RepacksManager.updateRepacks();
return downloadSource;
};
registerEvent("addDownloadSource", addDownloadSource);

View File

@@ -0,0 +1,9 @@
import { registerEvent } from "../register-event";
import { knexClient } from "@main/knex-client";
const deleteDownloadSource = async (
_event: Electron.IpcMainInvokeEvent,
id: number
) => knexClient("download_source").where({ id }).delete();
registerEvent("deleteDownloadSource", deleteDownloadSource);

View File

@@ -1,11 +1,7 @@
import { downloadSourceRepository } from "@main/repository";
import { registerEvent } from "../register-event";
import { knexClient } from "@main/knex-client";
const getDownloadSources = async (_event: Electron.IpcMainInvokeEvent) =>
downloadSourceRepository.find({
order: {
createdAt: "DESC",
},
});
knexClient.select("*").from("download_source");
registerEvent("getDownloadSources", getDownloadSources);

View File

@@ -1,13 +0,0 @@
import { downloadSourceRepository } from "@main/repository";
import { registerEvent } from "../register-event";
import { RepacksManager } from "@main/services";
const removeDownloadSource = async (
_event: Electron.IpcMainInvokeEvent,
id: number
) => {
await downloadSourceRepository.delete(id);
await RepacksManager.updateRepacks();
};
registerEvent("removeDownloadSource", removeDownloadSource);

View File

@@ -1,7 +0,0 @@
import { registerEvent } from "../register-event";
import { fetchDownloadSourcesAndUpdate } from "@main/helpers";
const syncDownloadSources = async (_event: Electron.IpcMainInvokeEvent) =>
fetchDownloadSourcesAndUpdate();
registerEvent("syncDownloadSources", syncDownloadSources);

View File

@@ -1,27 +0,0 @@
import { registerEvent } from "../register-event";
import { downloadSourceRepository } from "@main/repository";
import { RepacksManager } from "@main/services";
import { downloadSourceWorker } from "@main/workers";
const validateDownloadSource = async (
_event: Electron.IpcMainInvokeEvent,
url: string
) => {
const existingSource = await downloadSourceRepository.findOne({
where: { url },
});
if (existingSource)
throw new Error("Source with the same url already exists");
const repacks = RepacksManager.repacks;
return downloadSourceWorker.run(
{ url, repacks },
{
name: "validateDownloadSource",
}
);
};
registerEvent("validateDownloadSource", validateDownloadSource);

View File

@@ -1,7 +1,6 @@
import type { GameShop, CatalogueEntry, SteamGame } from "@types";
import { steamGamesWorker } from "@main/workers";
import { RepacksManager } from "@main/services";
import { steamUrlBuilder } from "@shared";
export interface SearchGamesArgs {
@@ -13,11 +12,10 @@ export interface SearchGamesArgs {
export const convertSteamGameToCatalogueEntry = (
game: SteamGame
): CatalogueEntry => ({
objectID: String(game.id),
objectId: String(game.id),
title: game.name,
shop: "steam" as GameShop,
cover: steamUrlBuilder.library(String(game.id)),
repacks: [],
});
export const getSteamGameById = async (
@@ -29,9 +27,5 @@ export const getSteamGameById = async (
if (!steamGame) return null;
const catalogueEntry = convertSteamGameToCatalogueEntry(steamGame);
const result = RepacksManager.findRepacksForCatalogueEntry(catalogueEntry);
return result;
return convertSteamGameToCatalogueEntry(steamGame);
};

View File

@@ -1,13 +0,0 @@
import { z } from "zod";
export const downloadSourceSchema = z.object({
name: z.string().max(255),
downloads: z.array(
z.object({
title: z.string().max(255),
uris: z.array(z.string()),
uploadDate: z.string().max(255),
fileSize: z.string().max(255),
})
),
});

View File

@@ -1,5 +1,5 @@
import { defaultDownloadsPath } from "@main/constants";
import { app, ipcMain } from "electron";
import { appVersion, defaultDownloadsPath } from "@main/constants";
import { ipcMain } from "electron";
import "./catalogue/get-catalogue";
import "./catalogue/get-game-shop-details";
@@ -7,7 +7,6 @@ import "./catalogue/get-games";
import "./catalogue/get-how-long-to-beat";
import "./catalogue/get-random-game";
import "./catalogue/search-games";
import "./catalogue/search-game-repacks";
import "./catalogue/get-game-stats";
import "./catalogue/get-trending-games";
import "./hardware/get-disk-free-space";
@@ -25,6 +24,8 @@ import "./library/update-executable-path";
import "./library/verify-executable-path";
import "./library/remove-game";
import "./library/remove-game-from-library";
import "./library/select-game-wine-prefix";
import "./misc/open-checkout";
import "./misc/open-external";
import "./misc/show-open-dialog";
import "./torrenting/cancel-game-download";
@@ -37,11 +38,8 @@ import "./user-preferences/auto-launch";
import "./autoupdater/check-for-updates";
import "./autoupdater/restart-and-install-update";
import "./user-preferences/authenticate-real-debrid";
import "./download-sources/delete-download-source";
import "./download-sources/get-download-sources";
import "./download-sources/validate-download-source";
import "./download-sources/add-download-source";
import "./download-sources/remove-download-source";
import "./download-sources/sync-download-sources";
import "./auth/sign-out";
import "./auth/open-auth-window";
import "./auth/get-session-hash";
@@ -52,6 +50,8 @@ import "./user/unblock-user";
import "./user/get-user-friends";
import "./user/get-user-stats";
import "./user/report-user";
import "./user/get-unlocked-achievements";
import "./user/get-compared-unlocked-achievements";
import "./profile/get-friend-requests";
import "./profile/get-me";
import "./profile/undo-friendship";
@@ -59,9 +59,18 @@ import "./profile/update-friend-request";
import "./profile/update-profile";
import "./profile/process-profile-image";
import "./profile/send-friend-request";
import "./profile/sync-friend-requests";
import "./cloud-save/download-game-artifact";
import "./cloud-save/get-game-artifacts";
import "./cloud-save/get-game-backup-preview";
import "./cloud-save/upload-save-game";
import "./cloud-save/delete-game-artifact";
import "./cloud-save/select-game-backup-path";
import "./notifications/publish-new-repacks-notification";
import { isPortableVersion } from "@main/helpers";
import "./misc/show-item-in-folder";
ipcMain.handle("ping", () => "pong");
ipcMain.handle("getVersion", () => app.getVersion());
ipcMain.handle("getVersion", () => appVersion);
ipcMain.handle("isPortableVersion", () => isPortableVersion());
ipcMain.handle("getDefaultDownloadsPath", () => defaultDownloadsPath);

View File

@@ -3,22 +3,22 @@ import { gameRepository } from "@main/repository";
import { registerEvent } from "../register-event";
import type { GameShop } from "@types";
import { getFileBase64 } from "@main/helpers";
import { steamGamesWorker } from "@main/workers";
import { createGame } from "@main/services/library-sync";
import { steamUrlBuilder } from "@shared";
import { updateLocalUnlockedAchivements } from "@main/services/achievements/update-local-unlocked-achivements";
const addGameToLibrary = async (
_event: Electron.IpcMainInvokeEvent,
objectID: string,
objectId: string,
title: string,
shop: GameShop
) => {
return gameRepository
.update(
{
objectID,
objectID: objectId,
},
{
shop,
@@ -28,31 +28,27 @@ const addGameToLibrary = async (
)
.then(async ({ affected }) => {
if (!affected) {
const steamGame = await steamGamesWorker.run(Number(objectID), {
const steamGame = await steamGamesWorker.run(Number(objectId), {
name: "getById",
});
const iconUrl = steamGame?.clientIcon
? steamUrlBuilder.icon(objectID, steamGame.clientIcon)
? steamUrlBuilder.icon(objectId, steamGame.clientIcon)
: null;
await gameRepository
.insert({
title,
iconUrl,
objectID,
shop,
})
.then(() => {
if (iconUrl) {
getFileBase64(iconUrl).then((base64) =>
gameRepository.update({ objectID }, { iconUrl: base64 })
);
}
});
await gameRepository.insert({
title,
iconUrl,
objectID: objectId,
shop,
});
}
const game = await gameRepository.findOne({ where: { objectID } });
const game = await gameRepository.findOne({
where: { objectID: objectId },
});
updateLocalUnlockedAchivements(game!);
createGame(game!).catch(() => {});
});

View File

@@ -24,6 +24,7 @@ const createGameShortcut = async (
const options = {
filePath,
name: removeSymbolsFromName(game.title),
outputPath: app.getPath("desktop"),
};
return createDesktopShortcut({

View File

@@ -2,15 +2,15 @@ import { gameRepository } from "@main/repository";
import { registerEvent } from "../register-event";
const getGameByObjectID = async (
const getGameByObjectId = async (
_event: Electron.IpcMainInvokeEvent,
objectID: string
objectId: string
) =>
gameRepository.findOne({
where: {
objectID,
objectID: objectId,
isDeleted: false,
},
});
registerEvent("getGameByObjectID", getGameByObjectID);
registerEvent("getGameByObjectId", getGameByObjectId);

View File

@@ -50,7 +50,8 @@ const openGameInstaller = async (
}
if (fs.lstatSync(gamePath).isFile()) {
return executeGameInstaller(gamePath);
shell.showItemInFolder(gamePath);
return true;
}
const setupPath = path.join(gamePath, "setup.exe");

View File

@@ -0,0 +1,13 @@
import { gameRepository } from "@main/repository";
import { registerEvent } from "../register-event";
const selectGameWinePrefix = async (
_event: Electron.IpcMainInvokeEvent,
id: number,
winePrefixPath: string
) => {
return gameRepository.update({ id }, { winePrefixPath });
};
registerEvent("selectGameWinePrefix", selectGameWinePrefix);

View File

@@ -0,0 +1,26 @@
import { shell } from "electron";
import { registerEvent } from "../register-event";
import { userAuthRepository } from "@main/repository";
import { HydraApi } from "@main/services";
const openCheckout = async (_event: Electron.IpcMainInvokeEvent) => {
const userAuth = await userAuthRepository.findOne({ where: { id: 1 } });
if (!userAuth) {
return;
}
const paymentToken = await HydraApi.post("/auth/payment", {
refreshToken: userAuth.refreshToken,
}).then((response) => response.accessToken);
const params = new URLSearchParams({
token: paymentToken,
});
shell.openExternal(
`${import.meta.env.MAIN_VITE_CHECKOUT_URL}?${params.toString()}`
);
};
registerEvent("openCheckout", openCheckout);

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