diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b55b280e..85a7fe1f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,7 +35,10 @@ jobs: - name: Build Linux if: matrix.os == 'ubuntu-latest' - run: yarn build:linux + run: | + sudo apt-get update + 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 }} @@ -65,3 +68,4 @@ jobs: dist/*.tar.gz dist/*.yml dist/*.blockmap + dist/*.pacman diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d1bc8993..e21acfcb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,7 +37,10 @@ jobs: - name: Build Linux if: matrix.os == 'ubuntu-latest' - run: yarn build:linux + run: | + sudo apt-get update + 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 }} @@ -68,5 +71,6 @@ jobs: dist/*.tar.gz dist/*.yml dist/*.blockmap + dist/*.pacman env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.be.md b/README.be.md index 806e45cc..5dfadf5d 100644 --- a/README.be.md +++ b/README.be.md @@ -5,7 +5,7 @@ [](https://hydralauncher.site)
Hydra - гэта гульнявы лаўнчар з уласным убудаваным кліентам BitTorrent і самастойным scraper`ам для рэпакаў.
@@ -20,6 +20,8 @@ [![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) ![Hydra Catalogue](./docs/screenshot.png) @@ -27,11 +29,12 @@ ## Змест +- [Змест](#змест) - [Апісанне](#апісанне) - [Асаблівасці](#асаблівасці) - [Усталёўка](#усталёўка) -- [Уклад](#contributing) - - [Далучайцеся да нашага Telegram](#join-our-telegram) +- [Уклад](#-уклад) + - [Далучайцеся да нашага Telegram](#-далучайцеся-да-нашага-telegram) - [Форк і кланаванне рэпазітара](#форк-і-кланаванне-рэпазітара) - [Спосабы ўнесці свой уклад](#спосабы-ўнесці-свой-уклад) - [Структура праекту](#структура-праекту) @@ -47,6 +50,7 @@ - [Зборка кліента BitTorrent](#зборка-кліента-bittorrent) - [Зборка прыкладання Electron](#зборка-прыкладання-electron) - [Удзельнікі](#удзельнікі) +- [Ліцэнзія](#ліцэнзія) ## Апісанне diff --git a/README.de.md b/README.de.md new file mode 100644 index 00000000..bd8c1b71 --- /dev/null +++ b/README.de.md @@ -0,0 +1,182 @@ ++ Hydra ist ein Launcher für Spiele mit einem eigenen eingebetteten BitTorrent-Client. +
+ +[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions) +[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases) + +[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md) +[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md) +[![pl](https://img.shields.io/badge/lang-pl-white)](README.pl.md) +[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md) +[![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) +[![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) + +![Hydra Katalog](./docs/screenshot.png) + +Hydra es un launcher de juegos con su propio cliente de bittorrent y gestor propio de repacks.
@@ -13,13 +13,15 @@ [![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) -[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md) -[![pl](https://img.shields.io/badge/lang-pl-white)](README.pl.md) [![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md) +[![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) -[![en](https://img.shields.io/badge/lang-en-red.svg)](README.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) ![Hydra Catalogue](./docs/screenshot.png) @@ -27,11 +29,12 @@ ## Tabla de Contenidos +- [Tabla de Contenidos](#tabla-de-contenidos) - [Acerca de](#acerca-de) -- [Características](#caracteristicas) -- [Instalación](#Instalacion) -- [Contribuir](#contribuir) - - [Únete a nuestro Telegram](#unete-a-nuestro-telegram) +- [Caracteristicas](#caracteristicas) +- [Instalacion](#instalacion) +- [Contribuir](#-contribuir) + - [Unete a nuestro Telegram](#-unete-a-nuestro-telegram) - [Haz un fork y clona tu repositorio](#haz-un-fork-y-clona-tu-repositorio) - [Maneras en las que puedes contribuir](#maneras-en-las-que-puedes-contribuir) - [Estructura del proyecto](#estructura-del-proyecto) @@ -40,13 +43,14 @@ - [Instalar Yarn](#instalar-yarn) - [Instalar Dependencias de Node](#instalar-dependencias-de-node) - [Instalar Python 3.9](#instalar-python-39) - - [Instalar Dependencias de Python](#Instalar-dependencias-de-python) + - [Instalar Dependencias de Python](#instalar-dependencias-de-python) - [Variables del Entorno](#variables-del-entorno) -- [Ejecución](#ejecucion) -- [Compilación](#compilacion) +- [Ejecucion](#ejecucion) +- [Compilacion](#compilacion) - [Compilar el cliente de bittorrent](#compilar-el-cliente-de-bittorrent) - - [Compilar la aplicación Electron](#compilar-la-aplicacion-electron) + - [Compilar la aplicacion Electron](#compilar-la-aplicacion-electron) - [Colaboradores](#colaboradores) +- [Licencia](#licencia) ## Acerca de diff --git a/README.fr.md b/README.fr.md index 0e99fb05..0b91962f 100644 --- a/README.fr.md +++ b/README.fr.md @@ -5,7 +5,7 @@ [](https://hydralauncher.site)Hydra est un lanceur de jeux avec son propre client bittorrent intégré et un scraper de repack auto-géré.
@@ -13,13 +13,15 @@ [![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions) [![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases) -[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md) -[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md) -[![pl](https://img.shields.io/badge/lang-pl-white)](README.pl.md) [![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md) +[![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) ![Catalogue Hydra](./docs/screenshot.png) @@ -27,6 +29,7 @@ ## Table des Matières +- [Table des Matières](#table-des-matières) - [À propos](#à-propos) - [Fonctionnalités](#fonctionnalités) - [Installation](#installation) @@ -47,6 +50,7 @@ - [Compiler le client bittorrent](#compiler-le-client-bittorrent) - [Compiler l'application Electron](#compiler-lapplication-electron) - [Contributeurs](#contributeurs) +- [License](#license) ## À propos diff --git a/README.it.md b/README.it.md new file mode 100644 index 00000000..678febac --- /dev/null +++ b/README.it.md @@ -0,0 +1,187 @@ ++ Hydra è un game launcher con il proprio client bittorrent e autogestore di repacks. +
+ +[![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) + +![Hydra Catalogue](./docs/screenshot.png) + +Hydra is a game launcher with its own embedded bittorrent client.
@@ -13,13 +13,15 @@ [![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) -[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md) -[![pl](https://img.shields.io/badge/lang-pl-white)](README.pl.md) [![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md) +[![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) ![Hydra Catalogue](./docs/screenshot.png) @@ -27,11 +29,12 @@ ## Table of Contents +- [Table of Contents](#table-of-contents) - [About](#about) - [Features](#features) - [Installation](#installation) -- [Contributing](#contributing) - - [Join our Telegram](#join-our-telegram) +- [Contributing](#-contributing) + - [Join our Telegram](#-join-our-telegram) - [Fork and clone your repository](#fork-and-clone-your-repository) - [Ways you can contribute](#ways-you-can-contribute) - [Project Structure](#project-structure) @@ -47,6 +50,7 @@ - [Build the bittorrent client](#build-the-bittorrent-client) - [Build the Electron application](#build-the-electron-application) - [Contributors](#contributors) +- [License](#license) ## About diff --git a/README.pl.md b/README.pl.md index 298f82a9..a4a65630 100644 --- a/README.pl.md +++ b/README.pl.md @@ -5,7 +5,7 @@ [](https://hydralauncher.site)Hydra - to program uruchamiający gry z własnym wbudowanym klientem bittorrent i samodzielnie zarządzanym repackagerem..
@@ -13,13 +13,15 @@ [![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) -[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md) -[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md) [![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) ![Hydra Catalogue](./docs/screenshot.png) @@ -27,26 +29,28 @@ ## Zawartość. +- [Zawartość.](#zawartość) - [O nas](#o-nas) -- [Cechy.](#cechy) +- [Cechy](#cechy) - [Instalacja](#instalacja) -- [Dokonaj wpłaty](#dokonaj-wpłaty) - - [Dołącz do naszego kanału Telegram](#dołącz-do-naszego-kanału-telegram) +- [Dokonaj wpłaty](#-dokonaj-wpłaty) + - [Dołącz do naszego kanału Telegram](#-dołącz-do-naszego-kanału-telegram) - [Rozwidlenie i sklonowanie repozytorium](#rozwidlenie-i-sklonowanie-repozytorium) - - [Jak możesz wnieść swój wkład](#jak-możesz-pomóc) + - [Jak możesz pomóc](#jak-możesz-pomóc) - [Struktura projektu](#struktura-projektu) - [Utwórz kompilację z kodu źródłowego](#utwórz-kompilację-z-kodu-źródłowego) - - [Instalacja Node.js](#zainstaluj-nodejs) - - [Instalacja Yarn](#zainstaluj-yarn) - - [Instalacja Node zależności](#zainstaluj-zależności-node) - - [Instalacja Python 3.9](#zainstaluj-python-39) - - [Instalacja Python zależności](#zainstaluj-zależności-pythona) + - [Zainstaluj Node.js](#zainstaluj-nodejs) + - [Zainstaluj Yarn](#zainstaluj-yarn) + - [Zainstaluj zależności Node](#zainstaluj-zależności-node) + - [Zainstaluj Python 3.9](#zainstaluj-python-39) + - [Zainstaluj zależności Pythona](#zainstaluj-zależności-pythona) - [Zmienne środowiskowe](#zmienne-środowiskowe) -- [Uruchomienie](#utwórz-kompilację-z-kodu-źródłowego) +- [Run](#run) - [Tworzenie kompilacji](#tworzenie-kompilacji) - - [Tworzenie klienta bittorrent](#zbuduj-klienta-bittorrent) - - [Tworzenie kompilacji aplikacji Electron](#tworzenie-aplikacji-electron) + - [Zbuduj klienta bittorrent](#zbuduj-klienta-bittorrent) + - [Tworzenie aplikacji Electron](#tworzenie-aplikacji-electron) - [Współtwórcy](#współtwórcy) +- [License](#license) ## O nas diff --git a/README.pt-BR.md b/README.pt-BR.md index 0d76a9fa..3d828dc0 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -5,7 +5,7 @@ [](https://hydralauncher.site)Hydra é um Launcher de Jogos com seu próprio cliente de bittorrent integrado e um wrapper autogerenciado para busca de repacks.
@@ -13,13 +13,15 @@ [![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) -[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md) +[![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) -[![pl](https://img.shields.io/badge/lang-pl-white)](README.pl.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) ![Hydra Catalogue](./docs/screenshot.png) @@ -27,26 +29,28 @@ ## Índice -- [Sobre](#about) -- [Recursos](#features) -- [Instalação](#installation) -- [Contribuindo](#contributing) - - [Junte-se ao nosso Telegram](#join-our-telegram) - - [Fork e clone seu repositorio](#fork-and-clone-your-repository) - - [Como contribuir](#ways-you-can-contribute) - - [Estrutura do projeto](#project-structure) -- [Compile a partir do código-fonte](#build-from-source) - - [Instale Node.js](#install-nodejs) - - [Instale Yarn](#install-yarn) - - [Instale Node Dependencies](#install-node-dependencies) - - [Instale Python 3.9](#install-python-39) - - [Instale Python Dependencies](#install-python-dependencies) -- [variaveis de ambiente](#environment-variables) -- [Rodando o programa](#running) -- [Compilando](#build) - - [Compile o client bittorrent](#build-the-bittorrent-client) - - [Compile a aplicação Electron](#build-the-electron-application) -- [Contribuidores](#contributors) +- [Índice](#índice) +- [Sobre](#-sobre) +- [Recursos](#-recursos) +- [Instalação](#-instalação) +- [Contribuindo](#-contribuindo) + - [Junte-se ao nosso Telegram](#-junte-se-ao-nosso-telegram) + - [Fork e clone o seu repositório](#-fork-e-clone-o-seu-repositório) + - [Formas de contribuir](#-formas-de-contribuir) + - [Estrutura do Projeto](#-estrutura-do-projeto) +- [Compile a partir do código-fonte](#-compile-a-partir-do-código-fonte) + - [Instale Node.js](#-instale-nodejs) + - [Instale Yarn](#-instale-yarn) + - [Instale Dependencias do Node](#-instale-dependencias-do-node) + - [Instale Python 3.9](#-instale-python-39) + - [Instale Python Dependencies](#-instale-python-dependencies) +- [Environment variables](#-environment-variables) +- [Running](#-running) +- [Build](#-build) + - [Build the bittorrent client](#-build-the-bittorrent-client) + - [Build the Electron application](#-build-the-electron-application) +- [Contributors](#-contributors) +- [Licença](#-licença) ## Sobre diff --git a/README.ru.md b/README.ru.md index a1aaf806..409681a0 100644 --- a/README.ru.md +++ b/README.ru.md @@ -5,7 +5,7 @@ [](https://hydralauncher.site)Hydra - это игровой лаунчер с собственным встроенным клиентом BitTorrent и самостоятельным scraper`ом для репаков.
@@ -13,13 +13,15 @@ [![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) -[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md) -[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md) -[![pl](https://img.shields.io/badge/lang-pl-white)](README.pl.md) [![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md) +[![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) ![Hydra Catalogue](./docs/screenshot.png) @@ -27,11 +29,12 @@ ## Содержание +- [Содержание](#содержание) - [Описание](#описание) - [Особенности](#особенности) - [Установка](#установка) -- [Вклад](#contributing) - - [Присоединяйтесь к нашему Telegram](#join-our-telegram) +- [Вклад](#-вклад) + - [Присоединяйтесь к нашему Telegram](#-присоединяйтесь-к-нашему-telegram) - [Форк и клонирование репозитория](#форк-и-клонирование-репозитория) - [Способы внести свой вклад](#способы-внести-свой-вклад) - [Структура проекта](#структура-проекта) @@ -47,6 +50,7 @@ - [Сборка клиента BitTorrent](#сборка-клиента-bittorrent) - [Сборка приложения Electron](#сборка-приложения-electron) - [Участники](#участники) +- [License](#license) ## Описание diff --git a/README.uk-UA.md b/README.uk-UA.md index 2f921499..251f9e11 100644 --- a/README.uk-UA.md +++ b/README.uk-UA.md @@ -5,7 +5,7 @@ [](https://hydralauncher.site)Hydra - це ігровий лаунчер з власним вбудованим bittorrent-клієнтом і самокерованим збирачем репаків.
@@ -13,13 +13,15 @@ [![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) -[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md) -[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md) -[![pl](https://img.shields.io/badge/lang-pl-white)](README.pl.md) [![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md) +[![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) ![Hydra Catalogue](./docs/screenshot.png) @@ -27,11 +29,12 @@ ## Зміст +- [Зміст](#зміст) - [Про нас](#про-нас) - [Функції](#функції) - [Встановлення](#встановлення) -- [Зробити свій внесок](#contributing) - - [Приєднуйтесь до нашого Telegram](#join-our-telegram) +- [Зробити свій внесок](#-зробити-свій-внесок) + - [Приєднуйтесь до нашого Telegram](#-приєднуйтесь-до-нашого-telegram) - [Форк і клонування вашого репозиторію](#форк-і-клонування-вашого-репозиторію) - [Як ви можете зробити свій внесок](#як-ви-можете-зробити-свій-внесок) - [Структура проекту](#структура-проекту) @@ -47,6 +50,7 @@ - [Зробіть білд bittorrent client](#зробіть-білд-bittorrent-client) - [Зробіть білд Electron застосунку](#зробіть-білд-electron-застосунку) - [Контриб'ютори](#контрибютори) +- [License](#license) ## Про нас diff --git a/electron-builder.yml b/electron-builder.yml index cfdafe7d..8d94d3ed 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -44,6 +44,7 @@ linux: - AppImage - snap - deb + - pacman - rpm maintainer: electronjs.org category: Game diff --git a/package.json b/package.json index ff05b2ed..1727e383 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@vanilla-extract/dynamic": "^2.1.1", "@vanilla-extract/recipes": "^0.5.2", "auto-launch": "^5.0.6", - "axios": "^1.6.8", + "axios": "^1.7.7", "better-sqlite3": "^11.2.1", "check-disk-space": "^3.4.0", "classnames": "^2.5.1", @@ -58,7 +58,6 @@ "i18next": "^23.11.2", "i18next-browser-languagedetector": "^7.2.1", "icojs": "^0.19.3", - "iso-639-1": "3.1.2", "jsdom": "^24.0.0", "jsonwebtoken": "^9.0.2", "knex": "^3.1.0", diff --git a/src/locales/ar/translation.json b/src/locales/ar/translation.json index e95db2f1..26f0654d 100644 --- a/src/locales/ar/translation.json +++ b/src/locales/ar/translation.json @@ -1,4 +1,5 @@ { + "language_name": "اَلْعَرَبِيَّةُ", "home": { "featured": "مميّز", "trending": "شائع", diff --git a/src/locales/be/translation.json b/src/locales/be/translation.json index 9e945f8d..b89946e8 100644 --- a/src/locales/be/translation.json +++ b/src/locales/be/translation.json @@ -1,4 +1,5 @@ { + "language_name": "беларуская мова", "home": { "featured": "Рэкамэндаванае", "trending": "Актуальнае", diff --git a/src/locales/ca/translation.json b/src/locales/ca/translation.json index 9124af79..393ea587 100644 --- a/src/locales/ca/translation.json +++ b/src/locales/ca/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Català", "app": { "successfully_signed_in": "Has entrat correctament" }, diff --git a/src/locales/da/translation.json b/src/locales/da/translation.json index d5cac8db..20b2df34 100644 --- a/src/locales/da/translation.json +++ b/src/locales/da/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Dansk", "home": { "featured": "Anbefalet", "trending": "Trender", diff --git a/src/locales/de/translation.json b/src/locales/de/translation.json new file mode 100644 index 00000000..e8361961 --- /dev/null +++ b/src/locales/de/translation.json @@ -0,0 +1,277 @@ +{ + "language_name": "Deutsch", + "app": { + "successfully_signed_in": "Erfolgreich angemeldet" + }, + "home": { + "featured": "Empfohlen", + "trending": "Beliebt", + "surprise_me": "Überrasche mich", + "no_results": "Keine Ergebnisse gefunden" + }, + "sidebar": { + "catalogue": "Katalog", + "downloads": "Downloads", + "settings": "Einstellungen", + "my_library": "Meine Bibliothek", + "downloading_metadata": "{{title}} (Metadaten werden heruntergeladen…)", + "paused": "{{title}} (Pausiert)", + "downloading": "{{title}} ({{percentage}} - Wird heruntergeladen…)", + "filter": "Bibliothek filtern", + "home": "Home", + "queued": "{{title}} (In Warteschlange)", + "game_has_no_executable": "Spiel hat keine ausführbare Datei gewählt", + "sign_in": "Anmelden" + }, + "header": { + "search": "Spiele suchen", + "home": "Home", + "catalogue": "Katalog", + "downloads": "Downloads", + "search_results": "Suchergebnisse", + "settings": "Einstellungen", + "version_available_install": "Version {{version}} verfügbar. Klicke hier, um neuzustarten und sie zu installieren.", + "version_available_download": "Version {{version}} verfügbar. Klicke hier, um sie herunterzuladen." + }, + "bottom_panel": { + "no_downloads_in_progress": "Keine aktive Downloads", + "downloading_metadata": "Metadaten von {{title}} werden heruntergeladen…", + "downloading": "{{title}} wird heruntergeladen… ({{percentage}} abgeschlossen) - Abschluss {{eta}} - {{speed}}", + "calculating_eta": "{{title}} wird heruntergeladen… ({{percentage}} abgeschlossen) - Verbleibende Zeit wird berechnet…", + "checking_files": "Prüfe Dateien von {{title}}… ({{percentage}} abgeschlossen)" + }, + "catalogue": { + "next_page": "Nächste Seite", + "previous_page": "Vorherige Seite" + }, + "game_details": { + "open_download_options": "Download-Optionen öffnen", + "download_options_zero": "Keine Download-Optionen", + "download_options_one": "{{count}} Download-Option", + "download_options_other": "{{count}} Download-Optionen", + "updated_at": "Aktualisiert {{updated_at}}", + "install": "Installieren", + "resume": "Fortfahren", + "pause": "Pausieren", + "cancel": "Abbrechen", + "remove": "Entfernen", + "space_left_on_disk": "{{space}} auf Festplatte verfügbar", + "eta": "Abschluss {{eta}}", + "calculating_eta": "Verbleibende Zeit wird berechnet…", + "downloading_metadata": "Metadaten werden heruntergeladen…", + "filter": "Repacks filtern", + "requirements": "Systemanforderungen", + "minimum": "Minimum", + "recommended": "Empfohlen", + "paused": "Pausiert", + "release_date": "Veröffentlicht am {{date}}", + "publisher": "Veröffentlicht von {{publisher}}", + "hours": "Stunden", + "minutes": "Minuten", + "amount_hours": "{{amount}} Stunden", + "amount_minutes": "{{amount}} Minuten", + "accuracy": "{{accuracy}}% Genauigkeit", + "add_to_library": "Zu Bibliothek hinzufügen", + "remove_from_library": "Von Bibliothek entfernen", + "no_downloads": "Keine Downloads verfügbar", + "play_time": "{{amount}} lang gespielt", + "last_time_played": "Zuletzt gespielt {{period}}", + "not_played_yet": "{{title}} wurde noch nicht gespielt", + "next_suggestion": "Nächste Empfehlung", + "play": "Spielen", + "deleting": "Installer wird gelöscht…", + "close": "Schließen", + "playing_now": "Spielt jetzt", + "change": "Ändern", + "repacks_modal_description": "Wähle das Repack, das du herunterladen möchtest", + "select_folder_hint": "Um das Standardverzeichnis zu ändern, gehe zu den <0>Einstellungen0>", + "download_now": "Jetzt herunterladen", + "no_shop_details": "Shop-Details konnten nicht abgerufen werden.", + "download_options": "Download-Optionen", + "download_path": "Download-Verzeichnis", + "previous_screenshot": "Vorheriger Screenshot", + "next_screenshot": "Nächster Screenshot", + "screenshot": "Screenshot {{number}}", + "open_screenshot": "Screenshot {{number}} öffnen", + "download_settings": "Download-Einstellungen", + "downloader": "Downloader", + "select_executable": "Auswählen", + "no_executable_selected": "Keine ausführbare Datei gewählt", + "open_folder": "Verzeichnis öffnen", + "open_download_location": "Heruntergeladene Dateien anzeigen", + "create_shortcut": "Desktop-Verknüpfung erstellen", + "remove_files": "Dateien entfernen", + "remove_from_library_title": "Bist du dir sicher?", + "remove_from_library_description": "Dies wird {{game}} aus deiner Bibliothek entfernen", + "options": "Optionen", + "executable_section_title": "Ausführbare Datei", + "executable_section_description": "Pfad der Datei, die bei Klick auf \"Play\" ausgeführt wird", + "downloads_secion_title": "Downloads", + "downloads_section_description": "Sieh dir Updates oder andere Versionen dieses Spiels an", + "danger_zone_section_title": "Gefahrenzone", + "danger_zone_section_description": "Entferne dieses Spiel aus deiner Bibliothek oder die von Hydra heruntergeladenen Dateien", + "download_in_progress": "Download erfolgt", + "download_paused": "Download ist pausiert", + "last_downloaded_option": "Letzte Download-Option", + "create_shortcut_success": "Verknüpfung erfolgreich erstellt", + "create_shortcut_error": "Fehler bei Erstellung von Verknüpfung" + }, + "activation": { + "title": "Hydra aktivieren", + "installation_id": "Installations ID:", + "enter_activation_code": "Aktivierungscode eingeben", + "message": "Wenn du nicht weißt wo du fragen musst, solltest du dies nicht haben.", + "activate": "Aktivieren", + "loading": "Lädt…" + }, + "downloads": { + "resume": "Fortfahren", + "pause": "Pause", + "eta": "Abschluss {{eta}}", + "paused": "Pausiert", + "verifying": "Verifiziere…", + "completed": "Abgeschlossen", + "removed": "Nicht heruntergeladen", + "cancel": "Abbrechen", + "filter": "Heruntergeladene Spiele filtern", + "remove": "Entfernen", + "downloading_metadata": "Metadaten werden heruntergeladen…", + "deleting": "Installer wird entfernt…", + "delete": "Installer entfernen", + "delete_modal_title": "Bist du dir sicher?", + "delete_modal_description": "Dies wird alle Installationsdateien von deinem Computer entfernen", + "install": "Installieren", + "download_in_progress": "Läuft", + "queued_downloads": "Downloads in Warteschlange", + "downloads_completed": "Abgeschlossen", + "queued": "In Warteschlange", + "no_downloads_title": "Welch Leere", + "no_downloads_description": "Du hast mit Hydra noch nichts heruntergeladen, aber es ist nie zu spät anzufangen.", + "checking_files": "Dateien werden überprüft…" + }, + "settings": { + "downloads_path": "Download-Pfad", + "change": "Aktualisieren", + "notifications": "Benachrichtigungen", + "enable_download_notifications": "Wenn ein Download abgeschlossen wird", + "enable_repack_list_notifications": "Wenn ein neues Repack hinzugefügt wird", + "real_debrid_api_token_label": "Real-Debrid API Token", + "quit_app_instead_hiding": "Hydra verlassen statt minimieren beim Schließen", + "launch_with_system": "Hydra bei Systemstart starten", + "general": "Allgemein", + "behavior": "Verhalten", + "download_sources": "Download-Quellen", + "language": "Sprache", + "real_debrid_api_token": "API Token", + "enable_real_debrid": "Real-Debrid aktivieren", + "real_debrid_description": "Real-Debrid ist ein unrestriktiver Downloader, der es dir ermöglicht Dateien sofort und mit deiner maximalen Internetgeschwindigkeit herunterzuladen.", + "real_debrid_invalid_token": "API token nicht gültig", + "real_debrid_api_token_hint": "<0>Hier0> kannst du dir deinen API Token holen", + "real_debrid_free_account_error": "Das Konto \"{{username}}\" ist ein gratis account. Bitte abonniere Real-Debrid", + "real_debrid_linked_message": "Konto \"{{username}}\" verknüpft", + "save_changes": "Änderungen speichern", + "changes_saved": "Änderungen erfolgreich gespeichert", + "download_sources_description": "Hydra wird die Download-Links von diesen Quellen abrufen. Die Quell-URL muss ein direkter Link zu einer .json Datei, welche die Download-Links enthält, sein.", + "validate_download_source": "Validieren", + "remove_download_source": "Entfernen", + "add_download_source": "Quelle hinzufügen", + "download_count_zero": "Keine Download-Option", + "download_count_one": "{{countFormatted}} Download-Option", + "download_count_other": "{{countFormatted}} Download-Optionen", + "download_source_url": "Download Quell-URL", + "add_download_source_description": "Füge die URL, welche die .json Datei enthält, ein", + "download_source_up_to_date": "Auf aktuellem Stand", + "download_source_errored": "Fehlgeschlagen", + "sync_download_sources": "Quellen synchronisieren", + "removed_download_source": "Download-Quelle entfernt", + "added_download_source": "Download-Quelle hinzugefügt", + "download_sources_synced": "Alle Download-Quellen sind synchronisiert", + "insert_valid_json_url": "Füge eine gültige JSON URL ein", + "found_download_option_zero": "Keine Download-Option gefunden", + "found_download_option_one": "{{countFormatted}} Download-Option gefunden", + "found_download_option_other": "{{countFormatted}} Download-Optionen gefunden", + "import": "Importieren" + }, + "notifications": { + "download_complete": "Download abgeschlossen", + "game_ready_to_install": "{{title}} ist bereit zur Installation", + "repack_list_updated": "Repack-Liste aktualisiert", + "repack_count_one": "{{count}} Repack hinzugefügt", + "repack_count_other": "{{count}} Repacks hinzugefügt", + "new_update_available": "Version {{version}} verfügbar", + "restart_to_install_update": "Um das Update zu installieren, starte Hydra neu" + }, + "system_tray": { + "open": "Hydra öffnen", + "quit": "Schließen" + }, + "game_card": { + "no_downloads": "Keine Downloads verfügbar" + }, + "binary_not_found_modal": { + "title": "Programme nicht installiert", + "description": "Ausführbare Dateien für Wine oder Lutris wurden auf deinem System nicht gefunden", + "instructions": "Überprüfe die korrekte Installation dieser für deine Linux-Distro, damit das Spiel normal laufen kann" + }, + "modal": { + "close": "Knopf schließen" + }, + "forms": { + "toggle_password_visibility": "Sichtbarkeit des Passworts umschalten" + }, + "user_profile": { + "amount_hours": "{{amount}} Stunden", + "amount_minutes": "{{amount}} Minuten", + "last_time_played": "Zuletzt gespielt {{period}}", + "activity": "Letzte Aktivität", + "library": "Bibliothek", + "total_play_time": "Gesamtspielzeit: {{amount}}", + "no_recent_activity_title": "Hmmm… hier ist nichts", + "no_recent_activity_description": "Du hast in letzter Zeit keine Spiele gespielt. Es wird Zeit das zu ändern!", + "display_name": "Anzeigename", + "saving": "Speichert", + "save": "Speichern", + "edit_profile": "Profil Bearbeiten", + "saved_successfully": "Erfolgreich gespeichert", + "try_again": "Bitte versuche es erneut", + "sign_out_modal_title": "Bist du dir sicher?", + "cancel": "Abbrechen", + "successfully_signed_out": "Erfolgreich abgemeldet", + "sign_out": "Abmelden", + "playing_for": "Spielt {{amount}} lang", + "sign_out_modal_text": "Deine Bibliothek ist mit deinem aktuellen Konto verknüpft. Wenn du dich abmeldest, wird deine Bibliothek nicht mehr sichtbar sein und jeglicher Fortschritt wird nicht gespeichert. Abmelden fortführen?", + "add_friends": "Freunde hinzufügen", + "add": "Hinzufügen", + "friend_code": "Freundescode", + "see_profile": "Profil anzeigen", + "sending": "Sendet", + "friend_request_sent": "Freundschaftsanfrage versendet", + "friends": "Freunde", + "friends_list": "Freundesliste", + "user_not_found": "Nutzer nicht gefunden", + "block_user": "Nutzer blockieren", + "add_friend": "Freund hinzufügen", + "request_sent": "Anfrage versendet", + "request_received": "Anfrage erhalten", + "accept_request": "Anfrage annehmen", + "ignore_request": "Anfrage ignorieren", + "cancel_request": "Anfrage zurückziehen", + "undo_friendship": "Freundschaft kündigen", + "request_accepted": "Anfrage akzeptiert", + "user_blocked_successfully": "Nutzer erfolgreich blockiert", + "user_block_modal_text": "{{displayName}} wird dadurch blockiert", + "settings": "Einstellungen", + "public": "Öffentlich", + "private": "Privat", + "friends_only": "Nur Freunde", + "privacy": "Privatsphäre", + "blocked_users": "Blockierte Nutzer", + "unblock": "Freigeben", + "no_friends_added": "Du hast noch keine Freunde hinzugefügt", + "pending": "Ausstehend", + "no_pending_invites": "Du hast keine ausstehenden Einladungen", + "no_blocked_users": "Du hast keine blockierten Nutzer", + "friend_code_copied": "Freundescode kopiert", + "undo_friendship_modal_text": "Freundschaft mit {{displayName}} wird dadurch gekündigt" + } +} diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index 08c9fda2..ed3ab8db 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -1,4 +1,5 @@ { + "language_name": "English", "app": { "successfully_signed_in": "Successfully signed in" }, @@ -20,7 +21,8 @@ "home": "Home", "queued": "{{title}} (Queued)", "game_has_no_executable": "Game has no executable selected", - "sign_in": "Sign in" + "sign_in": "Sign in", + "friends": "Friends" }, "header": { "search": "Search games", diff --git a/src/locales/es/translation.json b/src/locales/es/translation.json index 9cc7af9d..d215ff71 100644 --- a/src/locales/es/translation.json +++ b/src/locales/es/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Español", "app": { "successfully_signed_in": "Sesión iniciada correctamente" }, @@ -270,6 +271,7 @@ "pending": "Pendiente", "no_pending_invites": "No tienes invitaciones pendientes", "no_blocked_users": "No has bloqueado a ningún usuario", - "friend_code_copied": "Código de amigo copiado" + "friend_code_copied": "Código de amigo copiado", + "undo_friendship_modal_text": "Esto deshará tu amistad con {{displayName}}" } } diff --git a/src/locales/fa/translation.json b/src/locales/fa/translation.json index 8629332f..2b8cd3fb 100644 --- a/src/locales/fa/translation.json +++ b/src/locales/fa/translation.json @@ -1,4 +1,5 @@ { + "language_name": "فارسی", "home": { "featured": "پیشنهادی", "trending": "پرطرفدار", diff --git a/src/locales/fr/translation.json b/src/locales/fr/translation.json index c732b22c..f635f1de 100644 --- a/src/locales/fr/translation.json +++ b/src/locales/fr/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Français", "home": { "featured": "En vedette", "trending": "Tendance", diff --git a/src/locales/hu/translation.json b/src/locales/hu/translation.json index 748ffe28..f68d71bd 100644 --- a/src/locales/hu/translation.json +++ b/src/locales/hu/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Magyar", "home": { "featured": "Featured", "trending": "Népszerű", diff --git a/src/locales/id/translation.json b/src/locales/id/translation.json index 198aa568..3d0f1edf 100644 --- a/src/locales/id/translation.json +++ b/src/locales/id/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Bahasa Indonesia", "app": { "successfully_signed_in": "Berhasil masuk" }, diff --git a/src/locales/index.ts b/src/locales/index.ts index 10f128ae..e8426f01 100644 --- a/src/locales/index.ts +++ b/src/locales/index.ts @@ -1,21 +1,49 @@ -export { default as en } from "./en/translation.json"; -export { default as pt } from "./pt/translation.json"; -export { default as es } from "./es/translation.json"; -export { default as nl } from "./nl/translation.json"; -export { default as fr } from "./fr/translation.json"; -export { default as hu } from "./hu/translation.json"; -export { default as it } from "./it/translation.json"; -export { default as pl } from "./pl/translation.json"; -export { default as ru } from "./ru/translation.json"; -export { default as tr } from "./tr/translation.json"; -export { default as be } from "./be/translation.json"; -export { default as uk } from "./uk/translation.json"; -export { default as zh } from "./zh/translation.json"; -export { default as id } from "./id/translation.json"; -export { default as ko } from "./ko/translation.json"; -export { default as da } from "./da/translation.json"; -export { default as ar } from "./ar/translation.json"; -export { default as fa } from "./fa/translation.json"; -export { default as ro } from "./ro/translation.json"; -export { default as ca } from "./ca/translation.json"; -export { default as kk } from "./kk/translation.json"; +import en from "./en/translation.json"; +import ptPT from "./pt-PT/translation.json"; +import ptBR from "./pt-BR/translation.json"; +import es from "./es/translation.json"; +import nl from "./nl/translation.json"; +import fr from "./fr/translation.json"; +import hu from "./hu/translation.json"; +import it from "./it/translation.json"; +import de from "./de/translation.json"; +import pl from "./pl/translation.json"; +import ru from "./ru/translation.json"; +import tr from "./tr/translation.json"; +import be from "./be/translation.json"; +import uk from "./uk/translation.json"; +import zh from "./zh/translation.json"; +import id from "./id/translation.json"; +import ko from "./ko/translation.json"; +import da from "./da/translation.json"; +import ar from "./ar/translation.json"; +import fa from "./fa/translation.json"; +import ro from "./ro/translation.json"; +import ca from "./ca/translation.json"; +import kk from "./kk/translation.json"; + +export default { + "pt-BR": ptBR, + "pt-PT": ptPT, + en, + de, + es, + nl, + fr, + hu, + it, + pl, + ru, + tr, + be, + uk, + zh, + id, + ko, + da, + ar, + fa, + ro, + ca, + kk, +}; diff --git a/src/locales/it/translation.json b/src/locales/it/translation.json index 55f21310..1d5145f9 100644 --- a/src/locales/it/translation.json +++ b/src/locales/it/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Italiano", "home": { "featured": "In primo piano", "trending": "Di tendenza", diff --git a/src/locales/kk/translation.json b/src/locales/kk/translation.json index d565e3b7..15683eb2 100644 --- a/src/locales/kk/translation.json +++ b/src/locales/kk/translation.json @@ -1,4 +1,5 @@ { + "language_name": "қазақ тілі", "app": { "successfully_signed_in": "Сәтті кіру" }, diff --git a/src/locales/ko/translation.json b/src/locales/ko/translation.json index 3d45bb88..933c7dde 100644 --- a/src/locales/ko/translation.json +++ b/src/locales/ko/translation.json @@ -1,4 +1,5 @@ { + "language_name": "한국어", "home": { "featured": "추천", "trending": "인기", diff --git a/src/locales/nl/translation.json b/src/locales/nl/translation.json index 59cf13e6..6f02c9a3 100644 --- a/src/locales/nl/translation.json +++ b/src/locales/nl/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Nederlands", "home": { "featured": "Uitgelicht", "trending": "Trending", diff --git a/src/locales/pl/translation.json b/src/locales/pl/translation.json index a8e9bdc7..5eb2c242 100644 --- a/src/locales/pl/translation.json +++ b/src/locales/pl/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Polski", "home": { "featured": "Wyróżnione", "trending": "Trendujące", diff --git a/src/locales/pt/translation.json b/src/locales/pt-BR/translation.json similarity index 97% rename from src/locales/pt/translation.json rename to src/locales/pt-BR/translation.json index a97a81cf..fb7a8dd0 100644 --- a/src/locales/pt/translation.json +++ b/src/locales/pt-BR/translation.json @@ -1,10 +1,13 @@ { + "language_name": "Português (Brasil)", "app": { "successfully_signed_in": "Autenticado com sucesso" }, "home": { "featured": "Destaques", "trending": "Populares", + "hot": "🔥 Populares agora", + "weekly": "📅 Mais baixados da semana", "surprise_me": "Surpreenda-me", "no_results": "Nenhum resultado encontrado" }, @@ -20,7 +23,8 @@ "home": "Início", "queued": "{{title}} (Na fila)", "game_has_no_executable": "Jogo não possui executável selecionado", - "sign_in": "Login" + "sign_in": "Login", + "friends": "Amigos" }, "header": { "search": "Buscar jogos", @@ -166,7 +170,7 @@ "real_debrid_linked_message": "Conta \"{{username}}\" vinculada", "save_changes": "Salvar mudanças", "changes_saved": "Ajustes salvos com sucesso", - "download_sources_description": "Hydra vai buscar links de download em todas as fonte habilitadas. A URL da fonte deve ser um link direto para um arquivo .json contendo uma lista de links.", + "download_sources_description": "Hydra vai buscar links de download em todas as fontes habilitadas. A URL da fonte deve ser um link direto para um arquivo .json contendo uma lista de links.", "validate_download_source": "Validar", "remove_download_source": "Remover", "add_download_source": "Adicionar fonte", @@ -239,7 +243,7 @@ "cancel": "Cancelar", "successfully_signed_out": "Deslogado com sucesso", "sign_out": "Sair da conta", - "sign_out_modal_title": "Tem certeza?", + "sign_out_modal_title": "Deseja mesmo sair?", "playing_for": "Jogando por {{amount}}", "sign_out_modal_text": "Sua biblioteca de jogos está associada com a sua conta atual. Ao sair, sua biblioteca não aparecerá mais no Hydra e qualquer progresso não será salvo. Deseja continuar?", "add_friends": "Adicionar Amigos", diff --git a/src/locales/pt-PT/translation.json b/src/locales/pt-PT/translation.json new file mode 100644 index 00000000..67f99921 --- /dev/null +++ b/src/locales/pt-PT/translation.json @@ -0,0 +1,281 @@ +{ + "language_name": "Português (Portugal)", + "app": { + "successfully_signed_in": "Sessão iniciada com sucesso" + }, + "home": { + "featured": "Destaques", + "trending": "Populares", + "surprise_me": "Surpreende-me", + "no_results": "Nenhum resultado encontrado" + }, + "sidebar": { + "catalogue": "Catálogo", + "downloads": "Transferências", + "settings": "Definições", + "my_library": "Biblioteca", + "downloading_metadata": "{{title}} (A transferir metadados…)", + "paused": "{{title}} (Pausado)", + "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" + }, + "header": { + "search": "Procurar jogos", + "catalogue": "Catálogo", + "downloads": "Transferências", + "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." + }, + "bottom_panel": { + "no_downloads_in_progress": "Sem transferências em andamento", + "downloading_metadata": "A transferir metadados de {{title}}…", + "downloading": "A transferir {{title}}… ({{percentage}} concluído) - Conclusão {{eta}} - {{speed}}", + "calculating_eta": "A transferir {{title}}… ({{percentage}} concluído) - A calcular tempo restante…", + "checking_files": "A verificar ficheiros de {{title}}…" + }, + "game_details": { + "open_download_options": "Ver opções de transferência", + "download_options_zero": "Sem opções de transferência", + "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", + "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", + "requirements": "Requisitos do sistema", + "minimum": "Mínimos", + "recommended": "Recomendados", + "paused": "Pausado", + "release_date": "Lançado em {{date}}", + "publisher": "Publicado por {{publisher}}", + "hours": "horas", + "minutes": "minutos", + "amount_hours": "{{amount}} horas", + "amount_minutes": "{{amount}} minutos", + "accuracy": "{{accuracy}}% de precisão", + "add_to_library": "Adicionar à biblioteca", + "remove_from_library": "Remover da biblioteca", + "no_downloads": "Nenhuma transferência disponível", + "play_time": "Jogou 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}}", + "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ções0>", + "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", + "previous_screenshot": "Captura de ecrã anterior", + "next_screenshot": "Próxima captura de ecrã", + "screenshot": "Captura de ecrã {{number}}", + "open_screenshot": "Ver captura de ecrã {{number}}", + "download_settings": "Definições de transferência", + "downloader": "Downloader", + "select_executable": "Explorar", + "no_executable_selected": "Nenhum executável selecionado", + "open_folder": "Abrir pasta", + "open_download_location": "Ver ficheiros transferidos", + "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?", + "executable_section_title": "Executável", + "executable_section_description": "O caminho do ficheiro que 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", + "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", + "download_in_progress": "Transferência em andamento", + "download_paused": "Transferência pausada", + "last_downloaded_option": "Última opção transferida", + "create_shortcut_success": "Atalho criado com sucesso", + "create_shortcut_error": "Erro ao criar atalho" + }, + "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.", + "activate": "Ativar", + "loading": "A carregar…" + }, + "downloads": { + "resume": "Retomar", + "pause": "Pausar", + "eta": "Conclusão {{eta}}", + "paused": "Pausado", + "verifying": "A verificar…", + "completed": "Concluído", + "removed": "Cancelado", + "cancel": "Cancelar", + "filter": "Filtrar jogos transferidos", + "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…", + "install": "Instalar", + "download_in_progress": "A transferir 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.", + "checking_files": "A verificar ficheiros…" + }, + "settings": { + "downloads_path": "Diretório das transferências", + "change": "Explorar...", + "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.", + "launch_with_system": "Iniciar o Hydra com o sistema", + "general": "Geral", + "behavior": "Comportamento", + "download_sources": "Fontes de transferência", + "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>aqui0>", + "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_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", + "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.", + "enable_source": "Ativar", + "disable_source": "Desativar", + "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_source_url": "URL da fonte", + "add_download_source_description": "Insira o URL contendo o arquivo .json", + "download_source_up_to_date": "Sincronizada", + "download_source_errored": "Falhou", + "sync_download_sources": "Sincronizar", + "removed_download_source": "Fonte removida", + "added_download_source": "Fonte adicionada", + "download_sources_synced": "As fontes foram sincronizadas", + "insert_valid_json_url": "Insira 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" + }, + "notifications": { + "download_complete": "Transferência concluída", + "game_ready_to_install": "{{title}} está pronto para ser descarregado", + "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" + }, + "system_tray": { + "open": "Abrir Hydra", + "quit": "Fechar" + }, + "game_card": { + "no_downloads": "Sem transferências 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." + }, + "catalogue": { + "next_page": "Próxima página", + "previous_page": "Página anterior" + }, + "modal": { + "close": "Botão de fechar" + }, + "forms": { + "toggle_password_visibility": "Alternar visibilidade da palavra-passe" + }, + "user_profile": { + "amount_hours": "{{amount}} horas", + "amount_minutes": "{{amount}} minutos", + "last_time_played": "Última sessão {{period}}", + "activity": "Atividades recentes", + "library": "Biblioteca", + "total_play_time": "Tempo total de jogo: {{amount}}", + "no_recent_activity_title": "Hmmm… 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…", + "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", + "sign_out": "Terminar sessão", + "sign_out_modal_title": "Tens a certeza?", + "playing_for": "A jogar há {{amount}}", + "sign_out_modal_text": "A tua biblioteca de jogos está associada com a tua conta atual. Ao sair, a tua biblioteca não aparecerá mais no Hydra e qualquer progresso não será guardado. Desejas continuar?", + "add_friends": "Adicionar Amigos", + "friend_code": "Código de amigo", + "see_profile": "Ver perfil", + "friend_request_sent": "Pedido de amizade enviado", + "friends": "Amigos", + "add": "Adicionar", + "sending": "A enviar", + "friends_list": "Lista de amigos", + "user_not_found": "Utilizador não encontrado", + "block_user": "Bloquear", + "add_friend": "Adicionar amigo", + "request_sent": "Pedido enviado", + "request_received": "Pedido recebido", + "accept_request": "Aceitar pedido", + "ignore_request": "Ignorar pedido", + "cancel_request": "Cancelar pedido", + "undo_friendship": "Desfazer amizade", + "request_accepted": "Pedido de amizade aceito", + "user_blocked_successfully": "Utilizador bloqueado com sucesso", + "user_block_modal_text": "Bloquear {{displayName}}", + "settings": "Definições", + "privacy": "Privacidade", + "private": "Privado", + "friends_only": "Apenas amigos", + "public": "Público", + "blocked_users": "Utilizadores bloqueados", + "unblock": "Desbloquear", + "no_friends_added": "Ainda não adicionaste amigos", + "pending": "Pendentes", + "no_pending_invites": "Não tens convites de amizade pendentes", + "no_blocked_users": "Não tens nenhum utilizador bloqueado", + "friend_code_copied": "Código de amigo copiado" + } +} diff --git a/src/locales/ro/translation.json b/src/locales/ro/translation.json index 2aed7a7f..9fab3119 100644 --- a/src/locales/ro/translation.json +++ b/src/locales/ro/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Română", "home": { "featured": "Recomandate", "trending": "Populare", diff --git a/src/locales/ru/translation.json b/src/locales/ru/translation.json index 89d16b28..be3a000e 100644 --- a/src/locales/ru/translation.json +++ b/src/locales/ru/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Русский", "app": { "successfully_signed_in": "Успешный вход" }, diff --git a/src/locales/tr/translation.json b/src/locales/tr/translation.json index 150eda84..2da9c977 100644 --- a/src/locales/tr/translation.json +++ b/src/locales/tr/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Türkçe", "home": { "featured": "Öne çıkan", "trending": "Popüler", diff --git a/src/locales/uk/translation.json b/src/locales/uk/translation.json index 48dec3e4..bb840bc2 100644 --- a/src/locales/uk/translation.json +++ b/src/locales/uk/translation.json @@ -1,4 +1,5 @@ { + "language_name": "Українська", "app": { "successfully_signed_in": "Успішний вхід в систему" }, diff --git a/src/locales/zh/translation.json b/src/locales/zh/translation.json index e0284b8d..0c793172 100644 --- a/src/locales/zh/translation.json +++ b/src/locales/zh/translation.json @@ -1,4 +1,5 @@ { + "language_name": "中文", "app": { "successfully_signed_in": "已成功登录" }, diff --git a/src/main/events/catalogue/get-catalogue.ts b/src/main/events/catalogue/get-catalogue.ts index a203167d..39fce7f5 100644 --- a/src/main/events/catalogue/get-catalogue.ts +++ b/src/main/events/catalogue/get-catalogue.ts @@ -1,35 +1,42 @@ -import type { CatalogueEntry, GameShop } from "@types"; +import type { GameShop } from "@types"; import { registerEvent } from "../register-event"; -import { RepacksManager, requestSteam250 } from "@main/services"; -import { formatName, steamUrlBuilder } from "@shared"; +import { HydraApi, RepacksManager } from "@main/services"; +import { CatalogueCategory, formatName, steamUrlBuilder } from "@shared"; +import { steamGamesWorker } from "@main/workers"; -const resultSize = 12; +const getCatalogue = async ( + _event: Electron.IpcMainInvokeEvent, + category: CatalogueCategory +) => { + const params = new URLSearchParams({ + take: "12", + skip: "0", + }); -const getCatalogue = async (_event: Electron.IpcMainInvokeEvent) => { - const trendingGames = await requestSteam250("/90day"); - const results: CatalogueEntry[] = []; + const response = await HydraApi.get<{ objectId: string; shop: GameShop }[]>( + `/games/${category}?${params.toString()}` + ); - for (let i = 0; i < resultSize; i++) { - if (!trendingGames[i]) { - i++; - continue; - } + return Promise.all( + response.map(async (game) => { + const steamGame = await steamGamesWorker.run(Number(game.objectId), { + name: "getById", + }); - const { title, objectID } = trendingGames[i]!; - const repacks = RepacksManager.search({ query: formatName(title) }); + const repacks = RepacksManager.search({ + query: formatName(steamGame.name), + }); - const catalogueEntry = { - objectID, - title, - shop: "steam" as GameShop, - cover: steamUrlBuilder.library(objectID), - }; - - results.push({ ...catalogueEntry, repacks }); - } - - return results; + return { + title: steamGame.name, + shop: game.shop, + repacks, + cover: steamUrlBuilder.library(game.objectId), + objectID: game.objectId, + }; + }) + ); }; registerEvent("getCatalogue", getCatalogue); diff --git a/src/main/events/catalogue/get-game-stats.ts b/src/main/events/catalogue/get-game-stats.ts new file mode 100644 index 00000000..87cba054 --- /dev/null +++ b/src/main/events/catalogue/get-game-stats.ts @@ -0,0 +1,23 @@ +import type { GameShop } 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{descriptionText}
+ +