Compare commits
47 Commits
v2.0
...
dolphin-so
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c347d9b0f4 | ||
|
|
9cd4d7048c | ||
|
|
3d17b5a920 | ||
|
|
2c67dd23ab | ||
|
|
45d1ddaa7d | ||
|
|
be6338cdd4 | ||
|
|
bb7fded0e5 | ||
|
|
7d91b84a87 | ||
|
|
3002cef448 | ||
|
|
89f6dcad19 | ||
|
|
5c62b7ba02 | ||
|
|
a1c5a4bdd8 | ||
|
|
6114f65204 | ||
|
|
5be70bba52 | ||
|
|
99ef85daf3 | ||
|
|
719cedba67 | ||
|
|
19432a1fe7 | ||
|
|
220d00141f | ||
|
|
633e2a6c5d | ||
|
|
bc25afa494 | ||
|
|
6bf246a8e6 | ||
|
|
ac71bc6ecb | ||
|
|
d7d6270bbc | ||
|
|
cd986c3f5e | ||
|
|
c3bd7ee736 | ||
|
|
b4bfe38765 | ||
|
|
a0c46bbc74 | ||
|
|
6a06f7329d | ||
|
|
16db07511a | ||
|
|
34863901fd | ||
|
|
3f5f8b71e8 | ||
|
|
618a98ee89 | ||
|
|
867e4d3cce | ||
|
|
3c019796c2 | ||
|
|
1c8448c1e1 | ||
|
|
dad3dcafb7 | ||
|
|
c6ef2ea0b4 | ||
|
|
e4d9f8ba45 | ||
|
|
87a4319360 | ||
|
|
dc232e1e43 | ||
|
|
39be891452 | ||
|
|
c3cad7c793 | ||
|
|
2952322759 | ||
|
|
653bc8668c | ||
|
|
1a23851000 | ||
|
|
560d1cd273 | ||
|
|
dc0d7304f1 |
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@@ -51,10 +51,10 @@ jobs:
|
|||||||
timeout 2 cartridges; [ "$?" -eq "124" ]
|
timeout 2 cartridges; [ "$?" -eq "124" ]
|
||||||
|
|
||||||
- name: Inno Setup
|
- name: Inno Setup
|
||||||
run: iscc ".\_build\Cartridges.iss"
|
run: iscc ".\_build\windows\Cartridges.iss"
|
||||||
|
|
||||||
- name: Upload Artifact
|
- name: Upload Artifact
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: Windows Installer
|
name: Windows Installer
|
||||||
path: _build/Output/Cartridges Setup.exe
|
path: _build/windows/Output/Cartridges Setup.exe
|
||||||
@@ -1,7 +1,14 @@
|
|||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
## Code
|
## Code
|
||||||
Fork the repository, make your changes, then create a pull request.
|
|
||||||
|
Be sure to follow the [code style](#code-style) of the project.
|
||||||
|
|
||||||
|
### Adding a feature
|
||||||
|
[Create an issue](https://github.com/kra-mo/cartridges/issues/new) or join the [Discord](https://discord.gg/4KSFh3AmQR)/[Matrix](https://matrix.to/#/#cartridges:matrix.org) to discuss it with the maintainers. We will provide additional guidance.
|
||||||
|
|
||||||
|
### Fixing a bug
|
||||||
|
Fork the repository, make your changes, then create a pull request. Be sure to mention the GitHub issue you're fixing if one was already open.
|
||||||
|
|
||||||
## Translations
|
## Translations
|
||||||
### Weblate
|
### Weblate
|
||||||
@@ -17,7 +24,7 @@ The project can be translated on [Weblate](https://hosted.weblate.org/engage/car
|
|||||||
# Building
|
# Building
|
||||||
|
|
||||||
## GNOME Builder
|
## GNOME Builder
|
||||||
1. Install [GNOME Builder](https://flathub.org/apps/details/org.gnome.Builder).
|
1. Install [GNOME Builder](https://flathub.org/apps/org.gnome.Builder).
|
||||||
2. Click "Clone Repository" with `https://github.com/kra-mo/cartridges.git` as the URL.
|
2. Click "Clone Repository" with `https://github.com/kra-mo/cartridges.git` as the URL.
|
||||||
3. Click on the build button (hammer) at the top.
|
3. Click on the build button (hammer) at the top.
|
||||||
|
|
||||||
@@ -33,3 +40,23 @@ cd cartridges
|
|||||||
meson setup build
|
meson setup build
|
||||||
ninja -C build install
|
ninja -C build install
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Code style
|
||||||
|
|
||||||
|
All code is auto-formatted with [Black](https://github.com/psf/black) and linted with [Pylint](https://github.com/pylint-dev/pylint). Imports are sorted by [isort](https://github.com/pycqa/isort).
|
||||||
|
|
||||||
|
VSCode extensions are available for all of these and you can set them up with the following `settings.json` configuration:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"python.formatting.provider": "none",
|
||||||
|
"[python]": {
|
||||||
|
"editor.defaultFormatter": "ms-python.black-formatter",
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.organizeImports": true
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"isort.args":["--profile", "black"],
|
||||||
|
```
|
||||||
|
|
||||||
|
For other code editors, you can install them via `pip` and invoke them via the command line.
|
||||||
|
|||||||
42
README.md
42
README.md
@@ -1,30 +1,30 @@
|
|||||||
|
|
||||||
|
[circle-url]: https://circle.gnome.org
|
||||||
|
[circle-image]: https://circle.gnome.org/assets/button/badge.svg
|
||||||
|
[weblate-url]: https://hosted.weblate.org/engage/cartridges/
|
||||||
|
[weblate-image]: https://hosted.weblate.org/widgets/cartridges/-/cartridges/svg-badge.svg
|
||||||
|
[discord-url]: https://discord.gg/4KSFh3AmQR
|
||||||
|
[discord-image]: https://img.shields.io/discord/1088155799299313754?color=%235865F2&label=discord&logo=discord&logoColor=%23FFFFFF&style=for-the-badge
|
||||||
|
[matrix-url]: https://matrix.to/#/#cartridges:matrix.org
|
||||||
|
[matrix-image]: https://img.shields.io/matrix/cartridges:matrix.org?label=Matrix&logo=matrix&color=%230dbd8b&style=for-the-badge
|
||||||
|
[flathub-url]: https://flathub.org/apps/hu.kramo.Cartridges
|
||||||
|
[flathub-image]: https://img.shields.io/flathub/v/hu.kramo.Cartridges?logo=flathub&style=for-the-badge
|
||||||
|
[installs-image]: https://img.shields.io/flathub/downloads/hu.kramo.Cartridges?style=for-the-badge
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
<img src="data/icons/hicolor/scalable/apps/hu.kramo.Cartridges.svg" width="128" height="128">
|
<img src="data/icons/hicolor/scalable/apps/hu.kramo.Cartridges.svg" width="128" height="128">
|
||||||
|
|
||||||
# Cartridges
|
# Cartridges
|
||||||
|
|
||||||
A GTK4 + Libadwaita game launcher
|
A GTK4 + Libadwaita game launcher
|
||||||
|
|
||||||
[![GNOME Circle][circle-image]][circle-url]
|
[![GNOME Circle][circle-image]][circle-url]
|
||||||
[![Flathub][flathub-image]][flathub-url]
|
[![Translation Status][weblate-image]][weblate-url]
|
||||||
[![Build status][github-actions-image]][github-actions-url]
|
|
||||||
[![Translation Status][weblate-image]][weblate-url]
|
|
||||||
[![Code style][code-style-image]][code-style-url]
|
|
||||||
[![Discord][discord-image]][discord-url]
|
|
||||||
|
|
||||||
[circle-url]: https://circle.gnome.org
|
[![Flathub][flathub-image]][flathub-url]
|
||||||
[circle-image]: https://circle.gnome.org/assets/button/badge.svg
|
[![Discord][discord-image]][discord-url]
|
||||||
[github-actions-url]: https://github.com/kra-mo/cartridges
|
[![Matrix][matrix-image]][matrix-url]
|
||||||
[github-actions-image]: https://github.com/kra-mo/cartridges/actions/workflows/ci.yml/badge.svg
|
[![Installs][installs-image]][flathub-url]
|
||||||
[code-style-url]: https://github.com/psf/black
|
|
||||||
[code-style-image]: https://img.shields.io/badge/code%20style-black-000000?style=flat
|
|
||||||
[weblate-url]: https://hosted.weblate.org/engage/cartridges/
|
|
||||||
[weblate-image]: https://hosted.weblate.org/widgets/cartridges/-/cartridges/svg-badge.svg
|
|
||||||
[discord-url]: https://discord.gg/4KSFh3AmQR
|
|
||||||
[discord-image]: https://img.shields.io/discord/1088155799299313754?color=%235865F2&label=discord&logo=discord&logoColor=%23FFFFFF
|
|
||||||
[flathub-url]: https://flathub.org/apps/hu.kramo.Cartridges
|
|
||||||
[flathub-image]: https://img.shields.io/flathub/v/hu.kramo.Cartridges
|
|
||||||
|
|
||||||
<img src="data/screenshots/1.png">
|
<img src="data/screenshots/1.png">
|
||||||
</div>
|
</div>
|
||||||
@@ -50,7 +50,7 @@ Cartridges is a simple game launcher written in Python using GTK4 and Libadwaita
|
|||||||
- Searching for games on various databases
|
- Searching for games on various databases
|
||||||
- Animated covers
|
- Animated covers
|
||||||
|
|
||||||
For updates and questions, join our [Discord server][discord-url]!
|
For updates and questions, join our [Discord server][discord-url] (bridged to [Matrix](https://matrix.to/#/#cartridges:matrix.org))!
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
|
|||||||
@@ -7,5 +7,5 @@ Icon=@APP_ID@
|
|||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Categories=GNOME;GTK;Game;
|
Categories=GNOME;GTK;Game;
|
||||||
Keywords=gaming;launcher;steam;lutris;heroic;bottles;itch;
|
Keywords=gaming;launcher;steam;lutris;heroic;bottles;itch;flatpak;legendary;
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<default>true</default>
|
<default>true</default>
|
||||||
</key>
|
</key>
|
||||||
<key name="steam-location" type="s">
|
<key name="steam-location" type="s">
|
||||||
<default>"~/.steam/"</default>
|
<default>"~/.steam/steam"</default>
|
||||||
</key>
|
</key>
|
||||||
<key name="lutris" type="b">
|
<key name="lutris" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
|
|||||||
@@ -44,6 +44,13 @@
|
|||||||
</screenshots>
|
</screenshots>
|
||||||
<content_rating type="oars-1.1" />
|
<content_rating type="oars-1.1" />
|
||||||
<releases>
|
<releases>
|
||||||
|
<release version="2.0.6" date="2023-07-21">
|
||||||
|
<description translatable="no">
|
||||||
|
<ul>
|
||||||
|
<li>Fixes an issue with Steam mods not importing properly</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
<release version="2.0" date="2023-07-05">
|
<release version="2.0" date="2023-07-05">
|
||||||
<description translatable="no">
|
<description translatable="no">
|
||||||
<p>After months of work, Cartridges 2.0 is here:</p>
|
<p>After months of work, Cartridges 2.0 is here:</p>
|
||||||
|
|||||||
@@ -49,9 +49,9 @@ Stored as a string.
|
|||||||
|
|
||||||
### source
|
### source
|
||||||
|
|
||||||
A unique ID for the source of the game in lowercase, without spaces.
|
A unique ID for the source of the game in lowercase, without spaces or underscores.
|
||||||
|
|
||||||
If a source provides multiple internal sources, these should be separately labeled, but share a common prefix. eg. `heoic_gog`, `heroic_epic`.
|
If a source provides multiple internal sources, these should be separately labeled, but share a common prefix. eg. `heoic_gog`, `heroic_epic`. This is the only place you should use an underscore.
|
||||||
|
|
||||||
Stored as a string.
|
Stored as a string.
|
||||||
|
|
||||||
|
|||||||
@@ -28,8 +28,7 @@
|
|||||||
"/share/man",
|
"/share/man",
|
||||||
"/share/pkgconfig",
|
"/share/pkgconfig",
|
||||||
"*.la",
|
"*.la",
|
||||||
"*.a",
|
"*.a"
|
||||||
"Cartridges.iss"
|
|
||||||
],
|
],
|
||||||
"modules" : [
|
"modules" : [
|
||||||
{
|
{
|
||||||
|
|||||||
12
meson.build
12
meson.build
@@ -1,5 +1,5 @@
|
|||||||
project('cartridges',
|
project('cartridges',
|
||||||
version: '2.0',
|
version: '2.0.6',
|
||||||
meson_version: '>= 0.59.0',
|
meson_version: '>= 0.59.0',
|
||||||
default_options: [ 'warning_level=2', 'werror=false', ],
|
default_options: [ 'warning_level=2', 'werror=false', ],
|
||||||
)
|
)
|
||||||
@@ -33,13 +33,9 @@ subdir('data')
|
|||||||
subdir('src')
|
subdir('src')
|
||||||
subdir('po')
|
subdir('po')
|
||||||
|
|
||||||
configure_file(
|
if host_machine.system() == 'windows'
|
||||||
input: './windows/Cartridges.iss.in',
|
subdir('windows')
|
||||||
output: 'Cartridges.iss',
|
endif
|
||||||
configuration: conf,
|
|
||||||
install: true,
|
|
||||||
install_dir: '.'
|
|
||||||
)
|
|
||||||
|
|
||||||
gnome.post_install(
|
gnome.post_install(
|
||||||
glib_compile_schemas: true,
|
glib_compile_schemas: true,
|
||||||
|
|||||||
10
po/ar.po
10
po/ar.po
@@ -8,7 +8,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: cartridges\n"
|
"Project-Id-Version: cartridges\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
||||||
"PO-Revision-Date: 2023-07-04 17:29+0000\n"
|
"PO-Revision-Date: 2023-07-09 07:59+0000\n"
|
||||||
"Last-Translator: Ali Aljishi <ahj696@hotmail.com>\n"
|
"Last-Translator: Ali Aljishi <ahj696@hotmail.com>\n"
|
||||||
"Language-Team: Arabic <https://hosted.weblate.org/projects/cartridges/"
|
"Language-Team: Arabic <https://hosted.weblate.org/projects/cartridges/"
|
||||||
"cartridges/ar/>\n"
|
"cartridges/ar/>\n"
|
||||||
@@ -529,17 +529,13 @@ msgstr "حدِّد مجلَّد ذاكرة {} المؤقتة."
|
|||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:355
|
#: src/preferences.py:355
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} installation directory."
|
|
||||||
msgid "Select the {} configuration directory."
|
msgid "Select the {} configuration directory."
|
||||||
msgstr "حدِّد مجلَّد تثبيت {}."
|
msgstr "حدِّد مجلَّد ضبط {}."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:358
|
#: src/preferences.py:358
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} cache directory."
|
|
||||||
msgid "Select the {} data directory."
|
msgid "Select the {} data directory."
|
||||||
msgstr "حدِّد مجلَّد ذاكرة {} المؤقتة."
|
msgstr "حدِّد مجلَّد بيانات {}."
|
||||||
|
|
||||||
#: src/preferences.py:364
|
#: src/preferences.py:364
|
||||||
msgid "Set Location"
|
msgid "Set Location"
|
||||||
|
|||||||
43
po/es.po
43
po/es.po
@@ -9,8 +9,9 @@ msgstr ""
|
|||||||
"Project-Id-Version: cartridges\n"
|
"Project-Id-Version: cartridges\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
||||||
"PO-Revision-Date: 2023-07-04 17:29+0000\n"
|
"PO-Revision-Date: 2023-07-08 14:52+0000\n"
|
||||||
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
|
"Last-Translator: Óscar Fernández Díaz <oscfdezdz@users.noreply.hosted.weblate"
|
||||||
|
".org>\n"
|
||||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/cartridges/"
|
"Language-Team: Spanish <https://hosted.weblate.org/projects/cartridges/"
|
||||||
"cartridges/es/>\n"
|
"cartridges/es/>\n"
|
||||||
"Language: es\n"
|
"Language: es\n"
|
||||||
@@ -46,9 +47,9 @@ msgid ""
|
|||||||
"necessary. You can sort and hide games or download cover art from "
|
"necessary. You can sort and hide games or download cover art from "
|
||||||
"SteamGridDB."
|
"SteamGridDB."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Cartridges es un lanzador simple para todos tus juegos. Admite la "
|
"Cartuchos es un sencillo lanzador de juegos para todos sus juegos. Tiene "
|
||||||
"importación de tus juegos de Steam, Lutris, Heroic y más sin necesidad de "
|
"soporte para importar juegos de Steam, Lutris, Heroic y más sin necesidad de "
|
||||||
"una cuenta. Puedes ordenar y ocultar juegos, o descargar carátulas de "
|
"iniciar sesión. Puede ordenar y ocultar juegos o descargar portadas de "
|
||||||
"SteamGridDB."
|
"SteamGridDB."
|
||||||
|
|
||||||
#: data/hu.kramo.Cartridges.metainfo.xml.in:30
|
#: data/hu.kramo.Cartridges.metainfo.xml.in:30
|
||||||
@@ -74,11 +75,11 @@ msgstr "Cancelar"
|
|||||||
|
|
||||||
#: data/gtk/details-window.blp:57
|
#: data/gtk/details-window.blp:57
|
||||||
msgid "New Cover"
|
msgid "New Cover"
|
||||||
msgstr "Nueva caratula"
|
msgstr "Portada nueva"
|
||||||
|
|
||||||
#: data/gtk/details-window.blp:75
|
#: data/gtk/details-window.blp:75
|
||||||
msgid "Delete Cover"
|
msgid "Delete Cover"
|
||||||
msgstr "Borrar la caratula"
|
msgstr "Borrar portada"
|
||||||
|
|
||||||
#: data/gtk/details-window.blp:101 data/gtk/details-window.blp:106
|
#: data/gtk/details-window.blp:101 data/gtk/details-window.blp:106
|
||||||
#: data/gtk/game.blp:80
|
#: data/gtk/game.blp:80
|
||||||
@@ -124,7 +125,7 @@ msgstr "Eliminar"
|
|||||||
|
|
||||||
#: data/gtk/game.blp:126 src/window.py:173
|
#: data/gtk/game.blp:126 src/window.py:173
|
||||||
msgid "Unhide"
|
msgid "Unhide"
|
||||||
msgstr "Mostrar"
|
msgstr "Desocultar"
|
||||||
|
|
||||||
#: data/gtk/help-overlay.blp:11 data/gtk/preferences.blp:9
|
#: data/gtk/help-overlay.blp:11 data/gtk/preferences.blp:9
|
||||||
msgid "General"
|
msgid "General"
|
||||||
@@ -177,7 +178,7 @@ msgstr "Eliminar juego"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:13 data/gtk/preferences.blp:268
|
#: data/gtk/preferences.blp:13 data/gtk/preferences.blp:268
|
||||||
msgid "Behavior"
|
msgid "Behavior"
|
||||||
msgstr "Conducta"
|
msgstr "Comportamiento"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:16
|
#: data/gtk/preferences.blp:16
|
||||||
msgid "Exit After Launching Games"
|
msgid "Exit After Launching Games"
|
||||||
@@ -206,11 +207,11 @@ msgstr "Guarda las partidas sin pérdidas a costa del almacenamiento"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:50
|
#: data/gtk/preferences.blp:50
|
||||||
msgid "Danger Zone"
|
msgid "Danger Zone"
|
||||||
msgstr "Zona peligrosa"
|
msgstr "Zona de peligro"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:53
|
#: data/gtk/preferences.blp:53
|
||||||
msgid "Remove All Games"
|
msgid "Remove All Games"
|
||||||
msgstr "Quitar todos los juegos"
|
msgstr "Eliminar todos los juegos"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:85 data/gtk/window.blp:27 data/gtk/window.blp:442
|
#: data/gtk/preferences.blp:85 data/gtk/window.blp:27 data/gtk/window.blp:442
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
@@ -229,7 +230,7 @@ msgstr "Steam"
|
|||||||
#: data/gtk/preferences.blp:206 data/gtk/preferences.blp:220
|
#: data/gtk/preferences.blp:206 data/gtk/preferences.blp:220
|
||||||
#: data/gtk/preferences.blp:234
|
#: data/gtk/preferences.blp:234
|
||||||
msgid "Install Location"
|
msgid "Install Location"
|
||||||
msgstr "Lugar de la instalación"
|
msgstr "Ruta de instalación"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:106
|
#: data/gtk/preferences.blp:106
|
||||||
msgid "Lutris"
|
msgid "Lutris"
|
||||||
@@ -237,7 +238,7 @@ msgstr "Lutris"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:119
|
#: data/gtk/preferences.blp:119
|
||||||
msgid "Cache Location"
|
msgid "Cache Location"
|
||||||
msgstr "Localización de la caché"
|
msgstr "Ruta de la caché"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:128
|
#: data/gtk/preferences.blp:128
|
||||||
msgid "Import Steam Games"
|
msgid "Import Steam Games"
|
||||||
@@ -245,7 +246,7 @@ msgstr "Importar juegos de Steam"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:137
|
#: data/gtk/preferences.blp:137
|
||||||
msgid "Import Flatpak Games"
|
msgid "Import Flatpak Games"
|
||||||
msgstr "Importar los juegos Flatpak"
|
msgstr "Importar juegos Flatpak"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:147
|
#: data/gtk/preferences.blp:147
|
||||||
msgid "Heroic"
|
msgid "Heroic"
|
||||||
@@ -289,15 +290,15 @@ msgstr "SteamGridDB"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:260
|
#: data/gtk/preferences.blp:260
|
||||||
msgid "Authentication"
|
msgid "Authentication"
|
||||||
msgstr "Autentificación"
|
msgstr "Autenticación"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:263
|
#: data/gtk/preferences.blp:263
|
||||||
msgid "API Key"
|
msgid "API Key"
|
||||||
msgstr "Código API"
|
msgstr "Clave API"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:271
|
#: data/gtk/preferences.blp:271
|
||||||
msgid "Use SteamGridDB"
|
msgid "Use SteamGridDB"
|
||||||
msgstr "Utiliza SteamGridDB"
|
msgstr "Usar SteamGridDB"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:272
|
#: data/gtk/preferences.blp:272
|
||||||
msgid "Download images when adding or importing games"
|
msgid "Download images when adding or importing games"
|
||||||
@@ -532,17 +533,13 @@ msgstr "Seleccione el directorio de la caché {}."
|
|||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:355
|
#: src/preferences.py:355
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} installation directory."
|
|
||||||
msgid "Select the {} configuration directory."
|
msgid "Select the {} configuration directory."
|
||||||
msgstr "Selecciona el directorio de la instalación {}."
|
msgstr "Seleccione el directorio de configuración {}."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:358
|
#: src/preferences.py:358
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} cache directory."
|
|
||||||
msgid "Select the {} data directory."
|
msgid "Select the {} data directory."
|
||||||
msgstr "Seleccione el directorio de la caché {}."
|
msgstr "Seleccione el directorio de datos {}."
|
||||||
|
|
||||||
#: src/preferences.py:364
|
#: src/preferences.py:364
|
||||||
msgid "Set Location"
|
msgid "Set Location"
|
||||||
|
|||||||
22
po/it.po
22
po/it.po
@@ -9,8 +9,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: cartridges\n"
|
"Project-Id-Version: cartridges\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
||||||
"PO-Revision-Date: 2023-07-01 15:10+0000\n"
|
"PO-Revision-Date: 2023-07-08 14:52+0000\n"
|
||||||
"Last-Translator: albanobattistella <albano_battistella@hotmail.com>\n"
|
"Last-Translator: Alessandro Iepure <alessandro.iepure@gmail.com>\n"
|
||||||
"Language-Team: Italian <https://hosted.weblate.org/projects/cartridges/"
|
"Language-Team: Italian <https://hosted.weblate.org/projects/cartridges/"
|
||||||
"cartridges/it/>\n"
|
"cartridges/it/>\n"
|
||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
@@ -87,7 +87,7 @@ msgstr "Titolo"
|
|||||||
|
|
||||||
#: data/gtk/details-window.blp:102
|
#: data/gtk/details-window.blp:102
|
||||||
msgid "The title of the game"
|
msgid "The title of the game"
|
||||||
msgstr "Titolo del gioco"
|
msgstr "Il titolo del gioco"
|
||||||
|
|
||||||
#: data/gtk/details-window.blp:112 data/gtk/details-window.blp:117
|
#: data/gtk/details-window.blp:112 data/gtk/details-window.blp:117
|
||||||
msgid "Developer"
|
msgid "Developer"
|
||||||
@@ -273,7 +273,7 @@ msgstr "itch"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:216
|
#: data/gtk/preferences.blp:216
|
||||||
msgid "Legendary"
|
msgid "Legendary"
|
||||||
msgstr "Leggendari"
|
msgstr "Leggendario"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:230
|
#: data/gtk/preferences.blp:230
|
||||||
msgid "Flatpak"
|
msgid "Flatpak"
|
||||||
@@ -281,7 +281,7 @@ msgstr "Flatpak"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:243
|
#: data/gtk/preferences.blp:243
|
||||||
msgid "Import Game Launchers"
|
msgid "Import Game Launchers"
|
||||||
msgstr "Importa lanciatori di giochi"
|
msgstr "Importa launcher di giochi"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:256
|
#: data/gtk/preferences.blp:256
|
||||||
msgid "SteamGridDB"
|
msgid "SteamGridDB"
|
||||||
@@ -528,21 +528,17 @@ msgstr "Directory non valida"
|
|||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:352
|
#: src/preferences.py:352
|
||||||
msgid "Select the {} cache directory."
|
msgid "Select the {} cache directory."
|
||||||
msgstr "Seleziona la directory della cache {}."
|
msgstr "Seleziona la directory della cache per {}."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:355
|
#: src/preferences.py:355
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} installation directory."
|
|
||||||
msgid "Select the {} configuration directory."
|
msgid "Select the {} configuration directory."
|
||||||
msgstr "Selezionare la directory di installazione {}."
|
msgstr "Selezionare la directory di configurazione per {}."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:358
|
#: src/preferences.py:358
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} cache directory."
|
|
||||||
msgid "Select the {} data directory."
|
msgid "Select the {} data directory."
|
||||||
msgstr "Seleziona la directory della cache {}."
|
msgstr "Seleziona la directory dati per {}."
|
||||||
|
|
||||||
#: src/preferences.py:364
|
#: src/preferences.py:364
|
||||||
msgid "Set Location"
|
msgid "Set Location"
|
||||||
@@ -554,7 +550,7 @@ msgstr "Chiudi"
|
|||||||
|
|
||||||
#: src/store/managers/sgdb_manager.py:47
|
#: src/store/managers/sgdb_manager.py:47
|
||||||
msgid "Couldn't Authenticate SteamGridDB"
|
msgid "Couldn't Authenticate SteamGridDB"
|
||||||
msgstr "Impossibile eseguire l'autenticazione su SteamGridDB"
|
msgstr "Impossibile autenticare SteamGridDB"
|
||||||
|
|
||||||
#: src/store/managers/sgdb_manager.py:48
|
#: src/store/managers/sgdb_manager.py:48
|
||||||
msgid "Verify your API key in preferences"
|
msgid "Verify your API key in preferences"
|
||||||
|
|||||||
26
po/nl.po
26
po/nl.po
@@ -8,7 +8,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: cartridges\n"
|
"Project-Id-Version: cartridges\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
||||||
"PO-Revision-Date: 2023-07-04 17:29+0000\n"
|
"PO-Revision-Date: 2023-07-08 14:52+0000\n"
|
||||||
"Last-Translator: Philip Goto <philip.goto@gmail.com>\n"
|
"Last-Translator: Philip Goto <philip.goto@gmail.com>\n"
|
||||||
"Language-Team: Dutch <https://hosted.weblate.org/projects/cartridges/"
|
"Language-Team: Dutch <https://hosted.weblate.org/projects/cartridges/"
|
||||||
"cartridges/nl/>\n"
|
"cartridges/nl/>\n"
|
||||||
@@ -134,7 +134,7 @@ msgstr "Algemeen"
|
|||||||
|
|
||||||
#: data/gtk/help-overlay.blp:14
|
#: data/gtk/help-overlay.blp:14
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Sluiten"
|
msgstr "Afsluiten"
|
||||||
|
|
||||||
#: data/gtk/help-overlay.blp:19 data/gtk/window.blp:217 data/gtk/window.blp:257
|
#: data/gtk/help-overlay.blp:19 data/gtk/window.blp:217 data/gtk/window.blp:257
|
||||||
#: data/gtk/window.blp:323
|
#: data/gtk/window.blp:323
|
||||||
@@ -319,7 +319,7 @@ msgstr "Geen games gevonden"
|
|||||||
|
|
||||||
#: data/gtk/window.blp:7 data/gtk/window.blp:15
|
#: data/gtk/window.blp:7 data/gtk/window.blp:15
|
||||||
msgid "Try a different search."
|
msgid "Try a different search."
|
||||||
msgstr "Probeer een andere zoekopdracht"
|
msgstr "Probeer een andere zoekopdracht."
|
||||||
|
|
||||||
#: data/gtk/window.blp:21
|
#: data/gtk/window.blp:21
|
||||||
msgid "No Games"
|
msgid "No Games"
|
||||||
@@ -327,7 +327,7 @@ msgstr "Geen games"
|
|||||||
|
|
||||||
#: data/gtk/window.blp:22
|
#: data/gtk/window.blp:22
|
||||||
msgid "Use the + button to add games."
|
msgid "Use the + button to add games."
|
||||||
msgstr "Gebruik de plusknop om games toe te voegen"
|
msgstr "Gebruik de plusknop om games toe te voegen."
|
||||||
|
|
||||||
#: data/gtk/window.blp:40
|
#: data/gtk/window.blp:40
|
||||||
msgid "No Hidden Games"
|
msgid "No Hidden Games"
|
||||||
@@ -335,7 +335,7 @@ msgstr "Geen verborgen games"
|
|||||||
|
|
||||||
#: data/gtk/window.blp:41
|
#: data/gtk/window.blp:41
|
||||||
msgid "Games you hide will appear here."
|
msgid "Games you hide will appear here."
|
||||||
msgstr "Games die u verbergt zullen hier verschijnen"
|
msgstr "Games die u verbergt zullen hier verschijnen."
|
||||||
|
|
||||||
#: data/gtk/window.blp:64 data/gtk/window.blp:304
|
#: data/gtk/window.blp:64 data/gtk/window.blp:304
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@@ -478,11 +478,11 @@ msgstr "Kon game niet toevoegen"
|
|||||||
|
|
||||||
#: src/details_window.py:147 src/details_window.py:181
|
#: src/details_window.py:147 src/details_window.py:181
|
||||||
msgid "Game title cannot be empty."
|
msgid "Game title cannot be empty."
|
||||||
msgstr "Game-titel mag niet leeg zijn"
|
msgstr "Game-titel mag niet leeg zijn."
|
||||||
|
|
||||||
#: src/details_window.py:153 src/details_window.py:189
|
#: src/details_window.py:153 src/details_window.py:189
|
||||||
msgid "Executable cannot be empty."
|
msgid "Executable cannot be empty."
|
||||||
msgstr "Programmabestand mag niet leeg zijn"
|
msgstr "Programmabestand mag niet leeg zijn."
|
||||||
|
|
||||||
#: src/details_window.py:180 src/details_window.py:188
|
#: src/details_window.py:180 src/details_window.py:188
|
||||||
msgid "Couldn't Apply Preferences"
|
msgid "Couldn't Apply Preferences"
|
||||||
@@ -523,7 +523,7 @@ msgstr "Installatie niet gevonden"
|
|||||||
|
|
||||||
#: src/preferences.py:286
|
#: src/preferences.py:286
|
||||||
msgid "Select a valid directory."
|
msgid "Select a valid directory."
|
||||||
msgstr "Selecteer een geldige map"
|
msgstr "Selecteer een geldige map."
|
||||||
|
|
||||||
#: src/preferences.py:348
|
#: src/preferences.py:348
|
||||||
msgid "Invalid Directory"
|
msgid "Invalid Directory"
|
||||||
@@ -532,21 +532,17 @@ msgstr "Ongeldige map"
|
|||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:352
|
#: src/preferences.py:352
|
||||||
msgid "Select the {} cache directory."
|
msgid "Select the {} cache directory."
|
||||||
msgstr "Selecteer de cache-map van {}"
|
msgstr "Selecteer de cache-map van {}."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:355
|
#: src/preferences.py:355
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} installation directory."
|
|
||||||
msgid "Select the {} configuration directory."
|
msgid "Select the {} configuration directory."
|
||||||
msgstr "Selecteer de installatiemap van {}"
|
msgstr "Selecteer de configuratiemap van {}."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:358
|
#: src/preferences.py:358
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} cache directory."
|
|
||||||
msgid "Select the {} data directory."
|
msgid "Select the {} data directory."
|
||||||
msgstr "Selecteer de cache-map van {}"
|
msgstr "Selecteer de gegevensmap van {}."
|
||||||
|
|
||||||
#: src/preferences.py:364
|
#: src/preferences.py:364
|
||||||
msgid "Set Location"
|
msgid "Set Location"
|
||||||
|
|||||||
57
po/pl.po
57
po/pl.po
@@ -3,13 +3,14 @@
|
|||||||
# This file is distributed under the same license as the Cartridges package.
|
# This file is distributed under the same license as the Cartridges package.
|
||||||
# Artur Wróblewski <krypalkora1984@gmail.com>, 2023.
|
# Artur Wróblewski <krypalkora1984@gmail.com>, 2023.
|
||||||
# Kshyso <Kshysio@protonmail.com>, 2023.
|
# Kshyso <Kshysio@protonmail.com>, 2023.
|
||||||
|
# Eryk Michalak <gnu.ewm@protonmail.com>, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Cartridges\n"
|
"Project-Id-Version: Cartridges\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
||||||
"PO-Revision-Date: 2023-06-10 16:48+0000\n"
|
"PO-Revision-Date: 2023-07-14 15:51+0000\n"
|
||||||
"Last-Translator: Kshyso <Kshysio@protonmail.com>\n"
|
"Last-Translator: Eryk Michalak <gnu.ewm@protonmail.com>\n"
|
||||||
"Language-Team: Polish <https://hosted.weblate.org/projects/cartridges/"
|
"Language-Team: Polish <https://hosted.weblate.org/projects/cartridges/"
|
||||||
"cartridges/pl/>\n"
|
"cartridges/pl/>\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
@@ -18,7 +19,7 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||||
"|| n%100>=20) ? 1 : 2;\n"
|
"|| n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Generator: Weblate 4.18-dev\n"
|
"X-Generator: Weblate 5.0-dev\n"
|
||||||
|
|
||||||
#: data/hu.kramo.Cartridges.desktop.in:3
|
#: data/hu.kramo.Cartridges.desktop.in:3
|
||||||
#: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:47
|
#: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:47
|
||||||
@@ -37,7 +38,7 @@ msgstr "Uruchom wszystkie swoje gry"
|
|||||||
|
|
||||||
#: data/hu.kramo.Cartridges.desktop.in:11
|
#: data/hu.kramo.Cartridges.desktop.in:11
|
||||||
msgid "gaming;launcher;steam;lutris;heroic;bottles;itch;"
|
msgid "gaming;launcher;steam;lutris;heroic;bottles;itch;"
|
||||||
msgstr ""
|
msgstr "gry;gaming;launcher;steam;lutris;heroic;bottles;itch;"
|
||||||
|
|
||||||
#: data/hu.kramo.Cartridges.metainfo.xml.in:9
|
#: data/hu.kramo.Cartridges.metainfo.xml.in:9
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -107,7 +108,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: data/gtk/details-window.blp:130
|
#: data/gtk/details-window.blp:130
|
||||||
msgid "More Info"
|
msgid "More Info"
|
||||||
msgstr ""
|
msgstr "Więcej informacji"
|
||||||
|
|
||||||
#: data/gtk/game.blp:102 data/gtk/game.blp:121 data/gtk/window.blp:195
|
#: data/gtk/game.blp:102 data/gtk/game.blp:121 data/gtk/window.blp:195
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
@@ -227,30 +228,24 @@ msgstr "Steam"
|
|||||||
#: data/gtk/preferences.blp:151 data/gtk/preferences.blp:192
|
#: data/gtk/preferences.blp:151 data/gtk/preferences.blp:192
|
||||||
#: data/gtk/preferences.blp:206 data/gtk/preferences.blp:220
|
#: data/gtk/preferences.blp:206 data/gtk/preferences.blp:220
|
||||||
#: data/gtk/preferences.blp:234
|
#: data/gtk/preferences.blp:234
|
||||||
#, fuzzy
|
|
||||||
#| msgid "itch Install Location"
|
|
||||||
msgid "Install Location"
|
msgid "Install Location"
|
||||||
msgstr "Położenie instalacji itch"
|
msgstr "Lokalizacja instalacji"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:106
|
#: data/gtk/preferences.blp:106
|
||||||
msgid "Lutris"
|
msgid "Lutris"
|
||||||
msgstr "Lutris"
|
msgstr "Lutris"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:119
|
#: data/gtk/preferences.blp:119
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Lutris Cache Location"
|
|
||||||
msgid "Cache Location"
|
msgid "Cache Location"
|
||||||
msgstr "Lokalizacja Lutris Cache"
|
msgstr "Lokalizacja pamięci podręcznej"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:128
|
#: data/gtk/preferences.blp:128
|
||||||
msgid "Import Steam Games"
|
msgid "Import Steam Games"
|
||||||
msgstr "Importuj gry Steam"
|
msgstr "Importuj gry Steam"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:137
|
#: data/gtk/preferences.blp:137
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Import Steam Games"
|
|
||||||
msgid "Import Flatpak Games"
|
msgid "Import Flatpak Games"
|
||||||
msgstr "Importuj gry Steam"
|
msgstr "Importuj gry Flatpak"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:147
|
#: data/gtk/preferences.blp:147
|
||||||
msgid "Heroic"
|
msgid "Heroic"
|
||||||
@@ -278,17 +273,15 @@ msgstr "itch"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:216
|
#: data/gtk/preferences.blp:216
|
||||||
msgid "Legendary"
|
msgid "Legendary"
|
||||||
msgstr ""
|
msgstr "Legendarne"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:230
|
#: data/gtk/preferences.blp:230
|
||||||
msgid "Flatpak"
|
msgid "Flatpak"
|
||||||
msgstr ""
|
msgstr "Flatpak"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:243
|
#: data/gtk/preferences.blp:243
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Game Launcher"
|
|
||||||
msgid "Import Game Launchers"
|
msgid "Import Game Launchers"
|
||||||
msgstr "Launcher Gier"
|
msgstr "Importuj programy uruchamiające gry"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:256
|
#: data/gtk/preferences.blp:256
|
||||||
msgid "SteamGridDB"
|
msgid "SteamGridDB"
|
||||||
@@ -521,41 +514,31 @@ msgstr ""
|
|||||||
"{} tutaj{}."
|
"{} tutaj{}."
|
||||||
|
|
||||||
#: src/preferences.py:284
|
#: src/preferences.py:284
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Installation Not Found"
|
|
||||||
msgid "Installation Not Found"
|
msgid "Installation Not Found"
|
||||||
msgstr "Nie znaleziono instalacji"
|
msgstr "Nie znaleziono instalacji"
|
||||||
|
|
||||||
#: src/preferences.py:286
|
#: src/preferences.py:286
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} data directory."
|
|
||||||
msgid "Select a valid directory."
|
msgid "Select a valid directory."
|
||||||
msgstr "Wybierz {} katalog danych."
|
msgstr "Wybierz prawidłowy katalog."
|
||||||
|
|
||||||
#: src/preferences.py:348
|
#: src/preferences.py:348
|
||||||
msgid "Invalid Directory"
|
msgid "Invalid Directory"
|
||||||
msgstr ""
|
msgstr "Nieprawidłowy katalog"
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:352
|
#: src/preferences.py:352
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} data directory."
|
|
||||||
msgid "Select the {} cache directory."
|
msgid "Select the {} cache directory."
|
||||||
msgstr "Wybierz {} katalog danych."
|
msgstr "Wybierz katalog pamięci podręcznej {}."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:355
|
#: src/preferences.py:355
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} configuration directory."
|
|
||||||
msgid "Select the {} configuration directory."
|
msgid "Select the {} configuration directory."
|
||||||
msgstr "Wybierz {} katalog konfiguracyjny."
|
msgstr "Wybierz katalog konfiguracyjny {}."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:358
|
#: src/preferences.py:358
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} data directory."
|
|
||||||
msgid "Select the {} data directory."
|
msgid "Select the {} data directory."
|
||||||
msgstr "Wybierz {} katalog danych."
|
msgstr "Wybierz katalog z danymi {}."
|
||||||
|
|
||||||
#: src/preferences.py:364
|
#: src/preferences.py:364
|
||||||
msgid "Set Location"
|
msgid "Set Location"
|
||||||
@@ -566,14 +549,12 @@ msgid "Dismiss"
|
|||||||
msgstr "Odrzucić"
|
msgstr "Odrzucić"
|
||||||
|
|
||||||
#: src/store/managers/sgdb_manager.py:47
|
#: src/store/managers/sgdb_manager.py:47
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Couldn't Connect to SteamGridDB"
|
|
||||||
msgid "Couldn't Authenticate SteamGridDB"
|
msgid "Couldn't Authenticate SteamGridDB"
|
||||||
msgstr "Nie można połączyć się z SteamGridDB"
|
msgstr "Nie można uwierzytelnić SteamGridDB"
|
||||||
|
|
||||||
#: src/store/managers/sgdb_manager.py:48
|
#: src/store/managers/sgdb_manager.py:48
|
||||||
msgid "Verify your API key in preferences"
|
msgid "Verify your API key in preferences"
|
||||||
msgstr ""
|
msgstr "Zweryfikuj swój klucz API w preferencjach"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#~| msgid "Cache Not Found"
|
#~| msgid "Cache Not Found"
|
||||||
|
|||||||
15
po/pt_BR.po
15
po/pt_BR.po
@@ -3,13 +3,14 @@
|
|||||||
# This file is distributed under the same license as the Cartridges package.
|
# This file is distributed under the same license as the Cartridges package.
|
||||||
# Henrique Machado <henriquecamposrj@gmail.com>, 2023.
|
# Henrique Machado <henriquecamposrj@gmail.com>, 2023.
|
||||||
# Vinícius Gama Santos <vinny.stalck@protonmail.com>, 2023.
|
# Vinícius Gama Santos <vinny.stalck@protonmail.com>, 2023.
|
||||||
|
# Vítor Fernandes Almado <vfalmado@gmail.com>, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Cartridges\n"
|
"Project-Id-Version: Cartridges\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
||||||
"PO-Revision-Date: 2023-06-02 15:40+0000\n"
|
"PO-Revision-Date: 2023-07-11 15:52+0000\n"
|
||||||
"Last-Translator: Vinícius Gama Santos <vinny.stalck@protonmail.com>\n"
|
"Last-Translator: Vítor Fernandes Almado <vfalmado@gmail.com>\n"
|
||||||
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
|
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
|
||||||
"cartridges/cartridges/pt_BR/>\n"
|
"cartridges/cartridges/pt_BR/>\n"
|
||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
@@ -17,7 +18,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 4.18-dev\n"
|
"X-Generator: Weblate 5.0-dev\n"
|
||||||
|
|
||||||
#: data/hu.kramo.Cartridges.desktop.in:3
|
#: data/hu.kramo.Cartridges.desktop.in:3
|
||||||
#: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:47
|
#: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:47
|
||||||
@@ -277,11 +278,11 @@ msgstr "itch"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:216
|
#: data/gtk/preferences.blp:216
|
||||||
msgid "Legendary"
|
msgid "Legendary"
|
||||||
msgstr ""
|
msgstr "Lendário"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:230
|
#: data/gtk/preferences.blp:230
|
||||||
msgid "Flatpak"
|
msgid "Flatpak"
|
||||||
msgstr ""
|
msgstr "Flatpak"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:243
|
#: data/gtk/preferences.blp:243
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -533,7 +534,7 @@ msgstr "Selecione o diretório de dados do(a) {}."
|
|||||||
|
|
||||||
#: src/preferences.py:348
|
#: src/preferences.py:348
|
||||||
msgid "Invalid Directory"
|
msgid "Invalid Directory"
|
||||||
msgstr ""
|
msgstr "Diretório inválido"
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:352
|
#: src/preferences.py:352
|
||||||
@@ -572,7 +573,7 @@ msgstr "Não foi possível conectar-se ao SteamGridDB"
|
|||||||
|
|
||||||
#: src/store/managers/sgdb_manager.py:48
|
#: src/store/managers/sgdb_manager.py:48
|
||||||
msgid "Verify your API key in preferences"
|
msgid "Verify your API key in preferences"
|
||||||
msgstr ""
|
msgstr "Verifique sua chave API nas preferências"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#~| msgid "Cache Not Found"
|
#~| msgid "Cache Not Found"
|
||||||
|
|||||||
14
po/ru.po
14
po/ru.po
@@ -8,7 +8,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: cartridges\n"
|
"Project-Id-Version: cartridges\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
||||||
"PO-Revision-Date: 2023-07-01 15:10+0000\n"
|
"PO-Revision-Date: 2023-07-08 14:52+0000\n"
|
||||||
"Last-Translator: Сергей <asvmail.as@gmail.com>\n"
|
"Last-Translator: Сергей <asvmail.as@gmail.com>\n"
|
||||||
"Language-Team: Russian <https://hosted.weblate.org/projects/cartridges/"
|
"Language-Team: Russian <https://hosted.weblate.org/projects/cartridges/"
|
||||||
"cartridges/ru/>\n"
|
"cartridges/ru/>\n"
|
||||||
@@ -16,8 +16,8 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Generator: Weblate 5.0-dev\n"
|
"X-Generator: Weblate 5.0-dev\n"
|
||||||
|
|
||||||
#: data/hu.kramo.Cartridges.desktop.in:3
|
#: data/hu.kramo.Cartridges.desktop.in:3
|
||||||
@@ -531,17 +531,13 @@ msgstr "Выберите каталог кэша {}."
|
|||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:355
|
#: src/preferences.py:355
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} installation directory."
|
|
||||||
msgid "Select the {} configuration directory."
|
msgid "Select the {} configuration directory."
|
||||||
msgstr "Выберите каталог установки {}."
|
msgstr "Выберите каталог конфигурации {}."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:358
|
#: src/preferences.py:358
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} cache directory."
|
|
||||||
msgid "Select the {} data directory."
|
msgid "Select the {} data directory."
|
||||||
msgstr "Выберите каталог кэша {}."
|
msgstr "Выберите каталог данных {}."
|
||||||
|
|
||||||
#: src/preferences.py:364
|
#: src/preferences.py:364
|
||||||
msgid "Set Location"
|
msgid "Set Location"
|
||||||
|
|||||||
10
po/sv.po
10
po/sv.po
@@ -9,7 +9,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: Cartridges\n"
|
"Project-Id-Version: Cartridges\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
||||||
"PO-Revision-Date: 2023-07-01 22:51+0000\n"
|
"PO-Revision-Date: 2023-07-08 14:52+0000\n"
|
||||||
"Last-Translator: Luna Jernberg <droidbittin@gmail.com>\n"
|
"Last-Translator: Luna Jernberg <droidbittin@gmail.com>\n"
|
||||||
"Language-Team: Swedish <https://hosted.weblate.org/projects/cartridges/"
|
"Language-Team: Swedish <https://hosted.weblate.org/projects/cartridges/"
|
||||||
"cartridges/sv/>\n"
|
"cartridges/sv/>\n"
|
||||||
@@ -531,17 +531,13 @@ msgstr "Välj {} cachekatalog."
|
|||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:355
|
#: src/preferences.py:355
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} installation directory."
|
|
||||||
msgid "Select the {} configuration directory."
|
msgid "Select the {} configuration directory."
|
||||||
msgstr "Välj {} installationskatalog."
|
msgstr "Välj {} konfigurationskatalog."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:358
|
#: src/preferences.py:358
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} cache directory."
|
|
||||||
msgid "Select the {} data directory."
|
msgid "Select the {} data directory."
|
||||||
msgstr "Välj {} cachekatalog."
|
msgstr "Välj {} datakatalog."
|
||||||
|
|
||||||
#: src/preferences.py:364
|
#: src/preferences.py:364
|
||||||
msgid "Set Location"
|
msgid "Set Location"
|
||||||
|
|||||||
62
po/ta.po
62
po/ta.po
@@ -9,7 +9,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: Cartridges\n"
|
"Project-Id-Version: Cartridges\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
||||||
"PO-Revision-Date: 2023-06-28 20:19+0000\n"
|
"PO-Revision-Date: 2023-07-09 07:59+0000\n"
|
||||||
"Last-Translator: \"K.B.Dharun Krishna\" <kbdharunkrishna@gmail.com>\n"
|
"Last-Translator: \"K.B.Dharun Krishna\" <kbdharunkrishna@gmail.com>\n"
|
||||||
"Language-Team: Tamil <https://hosted.weblate.org/projects/cartridges/"
|
"Language-Team: Tamil <https://hosted.weblate.org/projects/cartridges/"
|
||||||
"cartridges/ta/>\n"
|
"cartridges/ta/>\n"
|
||||||
@@ -18,7 +18,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 4.18.1\n"
|
"X-Generator: Weblate 5.0-dev\n"
|
||||||
|
|
||||||
#: data/hu.kramo.Cartridges.desktop.in:3
|
#: data/hu.kramo.Cartridges.desktop.in:3
|
||||||
#: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:47
|
#: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:47
|
||||||
@@ -46,10 +46,10 @@ msgid ""
|
|||||||
"necessary. You can sort and hide games or download cover art from "
|
"necessary. You can sort and hide games or download cover art from "
|
||||||
"SteamGridDB."
|
"SteamGridDB."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"உங்கள் எல்லா விளையாட்டுகளுக்கும் கேட்ரிட்ஜ்கள் ஒரு எளிய விளையாட்டு துவக்கி ஆகும். ஸ்டீம் "
|
"உங்கள் எல்லா விளையாட்டுகளுக்கும் கேட்ரிட்ஜ்கள் ஒரு எளிய விளையாட்டு துவக்கி "
|
||||||
"(Steam), லுட்ரிஸ் (Lutris), வீரம் (Heroic) மற்றும் பலவற்றிலிருந்து விளையாட்டுகளை "
|
"ஆகும். Steam, Lutris, Heroic மற்றும் பலவற்றிலிருந்து விளையாட்டுகளை இறக்குமதி "
|
||||||
"இறக்குமதி செய்வதற்கான ஆதரவை இது கொண்டுள்ளது. நீங்கள் விளையாட்டுகளை வரிசைப்படுத்தலாம் "
|
"செய்வதற்கான ஆதரவை இது கொண்டுள்ளது. நீங்கள் விளையாட்டுகளை வரிசைப்படுத்தலாம் "
|
||||||
"மற்றும் மறைக்கலாம் அல்லது ஸ்டீம்கிரிட் டிபி (SteamGridDB) இலிருந்து அட்டைப்பட கலையைப் "
|
"மற்றும் மறைக்கலாம் அல்லது SteamGridDB இலிருந்து அட்டைப்பட கலையைப் "
|
||||||
"பதிவிறக்கலாம்."
|
"பதிவிறக்கலாம்."
|
||||||
|
|
||||||
#: data/hu.kramo.Cartridges.metainfo.xml.in:30
|
#: data/hu.kramo.Cartridges.metainfo.xml.in:30
|
||||||
@@ -222,7 +222,7 @@ msgstr "மூலங்கள்"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:92
|
#: data/gtk/preferences.blp:92
|
||||||
msgid "Steam"
|
msgid "Steam"
|
||||||
msgstr "Steam (ஸ்டீம்)"
|
msgstr "Steam"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:96 data/gtk/preferences.blp:110
|
#: data/gtk/preferences.blp:96 data/gtk/preferences.blp:110
|
||||||
#: data/gtk/preferences.blp:151 data/gtk/preferences.blp:192
|
#: data/gtk/preferences.blp:151 data/gtk/preferences.blp:192
|
||||||
@@ -233,7 +233,7 @@ msgstr "நிறுவல் இடம்"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:106
|
#: data/gtk/preferences.blp:106
|
||||||
msgid "Lutris"
|
msgid "Lutris"
|
||||||
msgstr "லூட்ரிஸ்"
|
msgstr "Lutris"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:119
|
#: data/gtk/preferences.blp:119
|
||||||
msgid "Cache Location"
|
msgid "Cache Location"
|
||||||
@@ -241,17 +241,15 @@ msgstr "தற்காலிக சேமிப்பு இடம்"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:128
|
#: data/gtk/preferences.blp:128
|
||||||
msgid "Import Steam Games"
|
msgid "Import Steam Games"
|
||||||
msgstr "ஸ்டீம் (Steam) விளையாட்டுகளை இறக்குமதி செய்யவும்"
|
msgstr "Steam விளையாட்டுகளை இறக்குமதி செய்யவும்"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:137
|
#: data/gtk/preferences.blp:137
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Import Steam Games"
|
|
||||||
msgid "Import Flatpak Games"
|
msgid "Import Flatpak Games"
|
||||||
msgstr "ஸ்டீம் (Steam) விளையாட்டுகளை இறக்குமதி செய்யவும்"
|
msgstr "Flatpak கேம்களை இறக்குமதி செய்யவும்"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:147
|
#: data/gtk/preferences.blp:147
|
||||||
msgid "Heroic"
|
msgid "Heroic"
|
||||||
msgstr "Heroic (ஹீரோயிக்)"
|
msgstr "Heroic"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:160
|
#: data/gtk/preferences.blp:160
|
||||||
msgid "Import Epic Games"
|
msgid "Import Epic Games"
|
||||||
@@ -267,29 +265,27 @@ msgstr "பக்க ஏற்றப்பட்ட விளையாட்ட
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:188
|
#: data/gtk/preferences.blp:188
|
||||||
msgid "Bottles"
|
msgid "Bottles"
|
||||||
msgstr "Bottles (பாட்டில்கள்)"
|
msgstr "பாட்டில்கள்"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:202
|
#: data/gtk/preferences.blp:202
|
||||||
msgid "itch"
|
msgid "itch"
|
||||||
msgstr "அரிப்பு (itch)"
|
msgstr "itch"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:216
|
#: data/gtk/preferences.blp:216
|
||||||
msgid "Legendary"
|
msgid "Legendary"
|
||||||
msgstr "பழம்பெரும்"
|
msgstr "Legendary"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:230
|
#: data/gtk/preferences.blp:230
|
||||||
msgid "Flatpak"
|
msgid "Flatpak"
|
||||||
msgstr ""
|
msgstr "Flatpak"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:243
|
#: data/gtk/preferences.blp:243
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Game Launcher"
|
|
||||||
msgid "Import Game Launchers"
|
msgid "Import Game Launchers"
|
||||||
msgstr "விளையாட்டு துவக்கி"
|
msgstr "விளையாட்டு துவக்கிகளை இறக்குமதி செய்"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:256
|
#: data/gtk/preferences.blp:256
|
||||||
msgid "SteamGridDB"
|
msgid "SteamGridDB"
|
||||||
msgstr "ஸ்டீம்கிரிட் டிபி (SteamGridDB)"
|
msgstr "SteamGridDB"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:260
|
#: data/gtk/preferences.blp:260
|
||||||
msgid "Authentication"
|
msgid "Authentication"
|
||||||
@@ -301,7 +297,7 @@ msgstr "API விசை"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:271
|
#: data/gtk/preferences.blp:271
|
||||||
msgid "Use SteamGridDB"
|
msgid "Use SteamGridDB"
|
||||||
msgstr "ஸ்டீம்கிரிட் டிபி (SteamGridDB) ஐப் பயன்படுத்தவும்"
|
msgstr "SteamGridDB ஐப் பயன்படுத்தவும்"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:272
|
#: data/gtk/preferences.blp:272
|
||||||
msgid "Download images when adding or importing games"
|
msgid "Download images when adding or importing games"
|
||||||
@@ -515,43 +511,33 @@ msgstr "அனைத்து விளையாட்டுகளும் அ
|
|||||||
msgid ""
|
msgid ""
|
||||||
"An API key is required to use SteamGridDB. You can generate one {}here{}."
|
"An API key is required to use SteamGridDB. You can generate one {}here{}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ஸ்டீம்கிரிட் டிபி (SteamGridDB) ஐப் பயன்படுத்த API விசை தேவை. நீங்கள் ஒன்றை {}இங்கே{} "
|
"SteamGridDB ஐப் பயன்படுத்த API விசை தேவை. நீங்கள் ஒன்றை {}இங்கே{} "
|
||||||
"உருவாக்கலாம்."
|
"உருவாக்கலாம்."
|
||||||
|
|
||||||
#: src/preferences.py:284
|
#: src/preferences.py:284
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Installation Not Found"
|
|
||||||
msgid "Installation Not Found"
|
msgid "Installation Not Found"
|
||||||
msgstr "நிறுவல் கிடைக்கவில்லை"
|
msgstr "நிறுவல் கிடைக்கவில்லை"
|
||||||
|
|
||||||
#: src/preferences.py:286
|
#: src/preferences.py:286
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} data directory."
|
|
||||||
msgid "Select a valid directory."
|
msgid "Select a valid directory."
|
||||||
msgstr "{} தரவு கோப்பகத்தைத் தேர்ந்தெடுக்கவும்."
|
msgstr "சரியான கோப்பகத்தைத் தேர்ந்தெடுக்கவும்."
|
||||||
|
|
||||||
#: src/preferences.py:348
|
#: src/preferences.py:348
|
||||||
msgid "Invalid Directory"
|
msgid "Invalid Directory"
|
||||||
msgstr ""
|
msgstr "தவறான கோப்பகம்"
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:352
|
#: src/preferences.py:352
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} data directory."
|
|
||||||
msgid "Select the {} cache directory."
|
msgid "Select the {} cache directory."
|
||||||
msgstr "{} தரவு கோப்பகத்தைத் தேர்ந்தெடுக்கவும்."
|
msgstr "{} கேச் கோப்பகத்தைத் தேர்ந்தெடுக்கவும்."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:355
|
#: src/preferences.py:355
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} configuration directory."
|
|
||||||
msgid "Select the {} configuration directory."
|
msgid "Select the {} configuration directory."
|
||||||
msgstr "{} உள்ளமைவு கோப்பகத்தைத் தேர்ந்தெடுக்கவும்."
|
msgstr "{} கட்டமைப்பு கோப்பகத்தைத் தேர்ந்தெடுக்கவும்."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:358
|
#: src/preferences.py:358
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} data directory."
|
|
||||||
msgid "Select the {} data directory."
|
msgid "Select the {} data directory."
|
||||||
msgstr "{} தரவு கோப்பகத்தைத் தேர்ந்தெடுக்கவும்."
|
msgstr "{} தரவு கோப்பகத்தைத் தேர்ந்தெடுக்கவும்."
|
||||||
|
|
||||||
@@ -565,7 +551,7 @@ msgstr "நிராகரி"
|
|||||||
|
|
||||||
#: src/store/managers/sgdb_manager.py:47
|
#: src/store/managers/sgdb_manager.py:47
|
||||||
msgid "Couldn't Authenticate SteamGridDB"
|
msgid "Couldn't Authenticate SteamGridDB"
|
||||||
msgstr "ஸ்டீம்கிரிட் டிபி (SteamGridDB) ஐ அங்கீகரிக்க முடியவில்லை"
|
msgstr "SteamGridDB ஐ அங்கீகரிக்க முடியவில்லை"
|
||||||
|
|
||||||
#: src/store/managers/sgdb_manager.py:48
|
#: src/store/managers/sgdb_manager.py:48
|
||||||
msgid "Verify your API key in preferences"
|
msgid "Verify your API key in preferences"
|
||||||
|
|||||||
46
po/tr.po
46
po/tr.po
@@ -7,7 +7,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: Cartridges\n"
|
"Project-Id-Version: Cartridges\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
||||||
"PO-Revision-Date: 2023-05-26 18:10+0000\n"
|
"PO-Revision-Date: 2023-07-15 22:51+0000\n"
|
||||||
"Last-Translator: Sabri Ünal <libreajans@gmail.com>\n"
|
"Last-Translator: Sabri Ünal <libreajans@gmail.com>\n"
|
||||||
"Language-Team: Turkish <https://hosted.weblate.org/projects/cartridges/"
|
"Language-Team: Turkish <https://hosted.weblate.org/projects/cartridges/"
|
||||||
"cartridges/tr/>\n"
|
"cartridges/tr/>\n"
|
||||||
@@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 4.18-dev\n"
|
"X-Generator: Weblate 5.0-dev\n"
|
||||||
|
|
||||||
#: data/hu.kramo.Cartridges.desktop.in:3
|
#: data/hu.kramo.Cartridges.desktop.in:3
|
||||||
#: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:47
|
#: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:47
|
||||||
@@ -227,30 +227,24 @@ msgstr "Steam"
|
|||||||
#: data/gtk/preferences.blp:151 data/gtk/preferences.blp:192
|
#: data/gtk/preferences.blp:151 data/gtk/preferences.blp:192
|
||||||
#: data/gtk/preferences.blp:206 data/gtk/preferences.blp:220
|
#: data/gtk/preferences.blp:206 data/gtk/preferences.blp:220
|
||||||
#: data/gtk/preferences.blp:234
|
#: data/gtk/preferences.blp:234
|
||||||
#, fuzzy
|
|
||||||
#| msgid "itch Install Location"
|
|
||||||
msgid "Install Location"
|
msgid "Install Location"
|
||||||
msgstr "itch Kurulu Konumu"
|
msgstr "Kurulu Konumu"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:106
|
#: data/gtk/preferences.blp:106
|
||||||
msgid "Lutris"
|
msgid "Lutris"
|
||||||
msgstr "Lutris"
|
msgstr "Lutris"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:119
|
#: data/gtk/preferences.blp:119
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Lutris Cache Location"
|
|
||||||
msgid "Cache Location"
|
msgid "Cache Location"
|
||||||
msgstr "Lutris Önbellek Konumu"
|
msgstr "Önbellek Konumu"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:128
|
#: data/gtk/preferences.blp:128
|
||||||
msgid "Import Steam Games"
|
msgid "Import Steam Games"
|
||||||
msgstr "Steam Oyunlarını İçe Aktar"
|
msgstr "Steam Oyunlarını İçe Aktar"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:137
|
#: data/gtk/preferences.blp:137
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Import Steam Games"
|
|
||||||
msgid "Import Flatpak Games"
|
msgid "Import Flatpak Games"
|
||||||
msgstr "Steam Oyunlarını İçe Aktar"
|
msgstr "Flatpak Oyunlarını İçe Aktarın"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:147
|
#: data/gtk/preferences.blp:147
|
||||||
msgid "Heroic"
|
msgid "Heroic"
|
||||||
@@ -278,17 +272,15 @@ msgstr "itch"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:216
|
#: data/gtk/preferences.blp:216
|
||||||
msgid "Legendary"
|
msgid "Legendary"
|
||||||
msgstr ""
|
msgstr "Efsanevi"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:230
|
#: data/gtk/preferences.blp:230
|
||||||
msgid "Flatpak"
|
msgid "Flatpak"
|
||||||
msgstr ""
|
msgstr "Flatpak"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:243
|
#: data/gtk/preferences.blp:243
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Game Launcher"
|
|
||||||
msgid "Import Game Launchers"
|
msgid "Import Game Launchers"
|
||||||
msgstr "Oyun Başlatıcı"
|
msgstr "Oyun Başlatıcıları İçe Aktar"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:256
|
#: data/gtk/preferences.blp:256
|
||||||
msgid "SteamGridDB"
|
msgid "SteamGridDB"
|
||||||
@@ -521,39 +513,29 @@ msgstr ""
|
|||||||
"oluşturabilirsiniz."
|
"oluşturabilirsiniz."
|
||||||
|
|
||||||
#: src/preferences.py:284
|
#: src/preferences.py:284
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Installation Not Found"
|
|
||||||
msgid "Installation Not Found"
|
msgid "Installation Not Found"
|
||||||
msgstr "Kurulum Bulunamadı"
|
msgstr "Kurulum Bulunamadı"
|
||||||
|
|
||||||
#: src/preferences.py:286
|
#: src/preferences.py:286
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} data directory."
|
|
||||||
msgid "Select a valid directory."
|
msgid "Select a valid directory."
|
||||||
msgstr "{} veri dizinini seç."
|
msgstr "Geçerli bir dizin seçin."
|
||||||
|
|
||||||
#: src/preferences.py:348
|
#: src/preferences.py:348
|
||||||
msgid "Invalid Directory"
|
msgid "Invalid Directory"
|
||||||
msgstr ""
|
msgstr "Geçersiz Dizin"
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:352
|
#: src/preferences.py:352
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} data directory."
|
|
||||||
msgid "Select the {} cache directory."
|
msgid "Select the {} cache directory."
|
||||||
msgstr "{} veri dizinini seç."
|
msgstr "{} önbellek dizinini seç."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:355
|
#: src/preferences.py:355
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} configuration directory."
|
|
||||||
msgid "Select the {} configuration directory."
|
msgid "Select the {} configuration directory."
|
||||||
msgstr "{} yapılandırma dizinini seç."
|
msgstr "{} yapılandırma dizinini seç."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:358
|
#: src/preferences.py:358
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} data directory."
|
|
||||||
msgid "Select the {} data directory."
|
msgid "Select the {} data directory."
|
||||||
msgstr "{} veri dizinini seç."
|
msgstr "{} veri dizinini seç."
|
||||||
|
|
||||||
@@ -566,14 +548,12 @@ msgid "Dismiss"
|
|||||||
msgstr "Vazgeç"
|
msgstr "Vazgeç"
|
||||||
|
|
||||||
#: src/store/managers/sgdb_manager.py:47
|
#: src/store/managers/sgdb_manager.py:47
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Couldn't Connect to SteamGridDB"
|
|
||||||
msgid "Couldn't Authenticate SteamGridDB"
|
msgid "Couldn't Authenticate SteamGridDB"
|
||||||
msgstr "SteamGridDBʼye bağlanılamadı"
|
msgstr "SteamGridDB Kimlik Doğrulaması Yapılamadı"
|
||||||
|
|
||||||
#: src/store/managers/sgdb_manager.py:48
|
#: src/store/managers/sgdb_manager.py:48
|
||||||
msgid "Verify your API key in preferences"
|
msgid "Verify your API key in preferences"
|
||||||
msgstr ""
|
msgstr "Tercihlerde API anahtarınızı doğrulayın"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#~| msgid "Cache Not Found"
|
#~| msgid "Cache Not Found"
|
||||||
|
|||||||
14
po/uk.po
14
po/uk.po
@@ -10,7 +10,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: cartridges\n"
|
"Project-Id-Version: cartridges\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
"POT-Creation-Date: 2023-07-05 14:36+0200\n"
|
||||||
"PO-Revision-Date: 2023-07-01 22:51+0000\n"
|
"PO-Revision-Date: 2023-07-08 14:52+0000\n"
|
||||||
"Last-Translator: Dan <jonweblin2205@protonmail.com>\n"
|
"Last-Translator: Dan <jonweblin2205@protonmail.com>\n"
|
||||||
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/cartridges/"
|
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/cartridges/"
|
||||||
"cartridges/uk/>\n"
|
"cartridges/uk/>\n"
|
||||||
@@ -18,8 +18,8 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Generator: Weblate 5.0-dev\n"
|
"X-Generator: Weblate 5.0-dev\n"
|
||||||
|
|
||||||
#: data/hu.kramo.Cartridges.desktop.in:3
|
#: data/hu.kramo.Cartridges.desktop.in:3
|
||||||
@@ -534,17 +534,13 @@ msgstr "Виберіть каталог кешу {}."
|
|||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:355
|
#: src/preferences.py:355
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} installation directory."
|
|
||||||
msgid "Select the {} configuration directory."
|
msgid "Select the {} configuration directory."
|
||||||
msgstr "Виберіть каталог встановлення {}."
|
msgstr "Виберіть каталог конфігурації {}."
|
||||||
|
|
||||||
#. The variable is the name of the source
|
#. The variable is the name of the source
|
||||||
#: src/preferences.py:358
|
#: src/preferences.py:358
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Select the {} cache directory."
|
|
||||||
msgid "Select the {} data directory."
|
msgid "Select the {} data directory."
|
||||||
msgstr "Виберіть каталог кешу {}."
|
msgstr "Виберіть каталог даних {}."
|
||||||
|
|
||||||
#: src/preferences.py:364
|
#: src/preferences.py:364
|
||||||
msgid "Set Location"
|
msgid "Set Location"
|
||||||
|
|||||||
@@ -155,20 +155,22 @@ class DetailsWindow(Adw.Window):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Increment the number after the game id (eg. imported_1, imported_2)
|
# Increment the number after the game id (eg. imported_1, imported_2)
|
||||||
|
source_id = "imported"
|
||||||
numbers = [0]
|
numbers = [0]
|
||||||
game_id: str
|
game_id: str
|
||||||
for game_id in shared.store.games:
|
for game_id in shared.store.source_games.get(source_id, set()):
|
||||||
prefix = "imported_"
|
prefix = "imported_"
|
||||||
if not game_id.startswith(prefix):
|
if not game_id.startswith(prefix):
|
||||||
continue
|
continue
|
||||||
numbers.append(int(game_id.replace(prefix, "", 1)))
|
numbers.append(int(game_id.replace(prefix, "", 1)))
|
||||||
|
|
||||||
game_number = max(numbers) + 1
|
game_number = max(numbers) + 1
|
||||||
|
|
||||||
self.game = Game(
|
self.game = Game(
|
||||||
{
|
{
|
||||||
"game_id": f"imported_{game_number}",
|
"game_id": f"imported_{game_number}",
|
||||||
"hidden": False,
|
"hidden": False,
|
||||||
"source": "imported",
|
"source": source_id,
|
||||||
"added": int(time()),
|
"added": int(time()),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -91,6 +91,8 @@ class Importer(ErrorProducer):
|
|||||||
def run(self):
|
def run(self):
|
||||||
"""Use several Gio.Task to import games from added sources"""
|
"""Use several Gio.Task to import games from added sources"""
|
||||||
|
|
||||||
|
shared.win.get_application().lookup_action("import").set_enabled(False)
|
||||||
|
|
||||||
self.create_dialog()
|
self.create_dialog()
|
||||||
|
|
||||||
# Collect all errors and reset the cancellables for the managers
|
# Collect all errors and reset the cancellables for the managers
|
||||||
@@ -221,6 +223,7 @@ class Importer(ErrorProducer):
|
|||||||
self.import_dialog.close()
|
self.import_dialog.close()
|
||||||
self.summary_toast = self.create_summary_toast()
|
self.summary_toast = self.create_summary_toast()
|
||||||
self.create_error_dialog()
|
self.create_error_dialog()
|
||||||
|
shared.win.get_application().lookup_action("import").set_enabled(True)
|
||||||
|
|
||||||
def create_error_dialog(self):
|
def create_error_dialog(self):
|
||||||
"""Dialog containing all errors raised by importers"""
|
"""Dialog containing all errors raised by importers"""
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ class BottlesSourceIterator(SourceIterator):
|
|||||||
class BottlesSource(URLExecutableSource):
|
class BottlesSource(URLExecutableSource):
|
||||||
"""Generic Bottles source"""
|
"""Generic Bottles source"""
|
||||||
|
|
||||||
name = "Bottles"
|
name = _("Bottles")
|
||||||
iterator_class = BottlesSourceIterator
|
iterator_class = BottlesSourceIterator
|
||||||
url_format = 'bottles:run/"{bottle_name}"/"{game_name}"'
|
url_format = 'bottles:run/"{bottle_name}"/"{game_name}"'
|
||||||
available_on = {"linux"}
|
available_on = {"linux"}
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ class FlatpakSourceIterator(SourceIterator):
|
|||||||
class FlatpakSource(Source):
|
class FlatpakSource(Source):
|
||||||
"""Generic Flatpak source"""
|
"""Generic Flatpak source"""
|
||||||
|
|
||||||
name = "Flatpak"
|
name = _("Flatpak")
|
||||||
iterator_class = FlatpakSourceIterator
|
iterator_class = FlatpakSourceIterator
|
||||||
executable_format = "flatpak run {flatpak_id}"
|
executable_format = "flatpak run {flatpak_id}"
|
||||||
available_on = {"linux"}
|
available_on = {"linux"}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ class HeroicSourceIterator(SourceIterator):
|
|||||||
runner = entry["runner"]
|
runner = entry["runner"]
|
||||||
service = self.sub_sources[runner]["service"]
|
service = self.sub_sources[runner]["service"]
|
||||||
values = {
|
values = {
|
||||||
"source": self.source.id,
|
"source": f"{self.source.id}_{service}",
|
||||||
"added": added_time,
|
"added": added_time,
|
||||||
"name": entry["title"],
|
"name": entry["title"],
|
||||||
"developer": entry.get("developer", None),
|
"developer": entry.get("developer", None),
|
||||||
@@ -138,7 +138,7 @@ class HeroicSourceIterator(SourceIterator):
|
|||||||
class HeroicSource(URLExecutableSource):
|
class HeroicSource(URLExecutableSource):
|
||||||
"""Generic Heroic Games Launcher source"""
|
"""Generic Heroic Games Launcher source"""
|
||||||
|
|
||||||
name = "Heroic"
|
name = _("Heroic")
|
||||||
iterator_class = HeroicSourceIterator
|
iterator_class = HeroicSourceIterator
|
||||||
url_format = "heroic://launch/{app_name}"
|
url_format = "heroic://launch/{app_name}"
|
||||||
available_on = {"linux", "win32"}
|
available_on = {"linux", "win32"}
|
||||||
@@ -159,4 +159,4 @@ class HeroicSource(URLExecutableSource):
|
|||||||
@property
|
@property
|
||||||
def game_id_format(self) -> str:
|
def game_id_format(self) -> str:
|
||||||
"""The string format used to construct game IDs"""
|
"""The string format used to construct game IDs"""
|
||||||
return self.name.lower() + "_{service}_{game_id}"
|
return self.id + "_{service}_{game_id}"
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ class ItchSourceIterator(SourceIterator):
|
|||||||
|
|
||||||
|
|
||||||
class ItchSource(URLExecutableSource):
|
class ItchSource(URLExecutableSource):
|
||||||
name = "Itch"
|
name = _("itch")
|
||||||
iterator_class = ItchSourceIterator
|
iterator_class = ItchSourceIterator
|
||||||
url_format = "itch://caves/{cave_id}/launch"
|
url_format = "itch://caves/{cave_id}/launch"
|
||||||
available_on = {"linux", "win32"}
|
available_on = {"linux", "win32"}
|
||||||
|
|||||||
@@ -90,9 +90,9 @@ class LegendarySourceIterator(SourceIterator):
|
|||||||
|
|
||||||
|
|
||||||
class LegendarySource(Source):
|
class LegendarySource(Source):
|
||||||
name = "Legendary"
|
name = _("Legendary")
|
||||||
executable_format = "legendary launch {app_name}"
|
executable_format = "legendary launch {app_name}"
|
||||||
available_on = {"linux", "win32"}
|
available_on = {"linux"}
|
||||||
|
|
||||||
iterator_class = LegendarySourceIterator
|
iterator_class = LegendarySourceIterator
|
||||||
config_location: Location = Location(
|
config_location: Location = Location(
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ class LutrisSourceIterator(SourceIterator):
|
|||||||
class LutrisSource(URLExecutableSource):
|
class LutrisSource(URLExecutableSource):
|
||||||
"""Generic Lutris source"""
|
"""Generic Lutris source"""
|
||||||
|
|
||||||
name = "Lutris"
|
name = _("Lutris")
|
||||||
iterator_class = LutrisSourceIterator
|
iterator_class = LutrisSourceIterator
|
||||||
url_format = "lutris:rungameid/{game_id}"
|
url_format = "lutris:rungameid/{game_id}"
|
||||||
available_on = {"linux"}
|
available_on = {"linux"}
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ class SteamSourceIterator(SourceIterator):
|
|||||||
|
|
||||||
|
|
||||||
class SteamSource(URLExecutableSource):
|
class SteamSource(URLExecutableSource):
|
||||||
name = "Steam"
|
name = _("Steam")
|
||||||
available_on = {"linux", "win32"}
|
available_on = {"linux", "win32"}
|
||||||
iterator_class = SteamSourceIterator
|
iterator_class = SteamSourceIterator
|
||||||
url_format = "steam://rungameid/{game_id}"
|
url_format = "steam://rungameid/{game_id}"
|
||||||
@@ -118,9 +118,9 @@ class SteamSource(URLExecutableSource):
|
|||||||
data_location = Location(
|
data_location = Location(
|
||||||
schema_key="steam-location",
|
schema_key="steam-location",
|
||||||
candidates=(
|
candidates=(
|
||||||
shared.flatpak_dir / "com.valvesoftware.Steam" / "data" / "Steam",
|
shared.home / ".steam" / "steam",
|
||||||
shared.data_dir / "Steam",
|
shared.data_dir / "Steam",
|
||||||
shared.home / ".steam",
|
shared.flatpak_dir / "com.valvesoftware.Steam" / "data" / "Steam",
|
||||||
shared.programfiles32_dir / "Steam",
|
shared.programfiles32_dir / "Steam",
|
||||||
),
|
),
|
||||||
paths={
|
paths={
|
||||||
|
|||||||
13
src/main.py
13
src/main.py
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
import json
|
import json
|
||||||
import lzma
|
import lzma
|
||||||
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import gi
|
import gi
|
||||||
@@ -49,6 +50,7 @@ from src.store.managers.online_cover_manager import OnlineCoverManager
|
|||||||
from src.store.managers.sgdb_manager import SGDBManager
|
from src.store.managers.sgdb_manager import SGDBManager
|
||||||
from src.store.managers.steam_api_manager import SteamAPIManager
|
from src.store.managers.steam_api_manager import SteamAPIManager
|
||||||
from src.store.store import Store
|
from src.store.store import Store
|
||||||
|
from src.utils.migrate_files_v1_to_v2 import migrate_files_v1_to_v2
|
||||||
from src.window import CartridgesWindow
|
from src.window import CartridgesWindow
|
||||||
|
|
||||||
|
|
||||||
@@ -64,6 +66,12 @@ class CartridgesApplication(Adw.Application):
|
|||||||
def do_activate(self): # pylint: disable=arguments-differ
|
def do_activate(self): # pylint: disable=arguments-differ
|
||||||
"""Called on app creation"""
|
"""Called on app creation"""
|
||||||
|
|
||||||
|
setup_logging()
|
||||||
|
log_system_info()
|
||||||
|
|
||||||
|
if os.name == "nt":
|
||||||
|
migrate_files_v1_to_v2()
|
||||||
|
|
||||||
# Set fallback icon-name
|
# Set fallback icon-name
|
||||||
Gtk.Window.set_default_icon_name(shared.APP_ID)
|
Gtk.Window.set_default_icon_name(shared.APP_ID)
|
||||||
|
|
||||||
@@ -93,7 +101,7 @@ class CartridgesApplication(Adw.Application):
|
|||||||
shared.store.add_manager(SteamAPIManager())
|
shared.store.add_manager(SteamAPIManager())
|
||||||
shared.store.add_manager(OnlineCoverManager())
|
shared.store.add_manager(OnlineCoverManager())
|
||||||
shared.store.add_manager(SGDBManager())
|
shared.store.add_manager(SGDBManager())
|
||||||
shared.store.enable_manager_in_pipelines(FileManager)
|
shared.store.toggle_manager_in_pipelines(FileManager, True)
|
||||||
|
|
||||||
# Create actions
|
# Create actions
|
||||||
self.create_actions(
|
self.create_actions(
|
||||||
@@ -179,6 +187,7 @@ class CartridgesApplication(Adw.Application):
|
|||||||
# Translators: Replace this with your name for it to show up in the about window
|
# Translators: Replace this with your name for it to show up in the about window
|
||||||
translator_credits=_("translator_credits"),
|
translator_credits=_("translator_credits"),
|
||||||
debug_info=debug_str,
|
debug_info=debug_str,
|
||||||
|
debug_info_filename="cartridges.log",
|
||||||
)
|
)
|
||||||
about.present()
|
about.present()
|
||||||
|
|
||||||
@@ -278,7 +287,5 @@ class CartridgesApplication(Adw.Application):
|
|||||||
|
|
||||||
def main(_version):
|
def main(_version):
|
||||||
"""App entry point"""
|
"""App entry point"""
|
||||||
setup_logging()
|
|
||||||
log_system_info()
|
|
||||||
app = CartridgesApplication()
|
app = CartridgesApplication()
|
||||||
return app.run(sys.argv)
|
return app.run(sys.argv)
|
||||||
|
|||||||
@@ -214,10 +214,9 @@ class PreferencesWindow(Adw.PreferencesWindow):
|
|||||||
self.toast.dismiss()
|
self.toast.dismiss()
|
||||||
|
|
||||||
def remove_all_games(self, *_args):
|
def remove_all_games(self, *_args):
|
||||||
for game in shared.store.games.values():
|
for game in shared.store:
|
||||||
if not game.removed:
|
if not game.removed:
|
||||||
self.removed_games.add(game)
|
self.removed_games.add(game)
|
||||||
|
|
||||||
game.removed = True
|
game.removed = True
|
||||||
game.save()
|
game.save()
|
||||||
game.update()
|
game.update()
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ state_schema = Gio.Settings.new(APP_ID + ".State")
|
|||||||
home = Path.home()
|
home = Path.home()
|
||||||
data_dir = Path(GLib.get_user_data_dir())
|
data_dir = Path(GLib.get_user_data_dir())
|
||||||
config_dir = Path(GLib.get_user_config_dir())
|
config_dir = Path(GLib.get_user_config_dir())
|
||||||
cache_dir = Path(GLib.get_user_config_dir())
|
cache_dir = Path(GLib.get_user_cache_dir())
|
||||||
flatpak_dir = home / ".var" / "app"
|
flatpak_dir = home / ".var" / "app"
|
||||||
|
|
||||||
games_dir = data_dir / "cartridges" / "games"
|
games_dir = data_dir / "cartridges" / "games"
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
from typing import MutableMapping, Generator, Any
|
||||||
|
|
||||||
from src import shared
|
from src import shared
|
||||||
from src.game import Game
|
from src.game import Game
|
||||||
@@ -31,24 +32,59 @@ class Store:
|
|||||||
managers: dict[type[Manager], Manager]
|
managers: dict[type[Manager], Manager]
|
||||||
pipeline_managers: set[Manager]
|
pipeline_managers: set[Manager]
|
||||||
pipelines: dict[str, Pipeline]
|
pipelines: dict[str, Pipeline]
|
||||||
games: dict[str, Game]
|
source_games: MutableMapping[str, MutableMapping[str, Game]]
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.managers = {}
|
self.managers = {}
|
||||||
self.pipeline_managers = set()
|
self.pipeline_managers = set()
|
||||||
self.pipelines = {}
|
self.pipelines = {}
|
||||||
self.games = {}
|
self.source_games = {}
|
||||||
|
|
||||||
|
def __contains__(self, obj: object) -> bool:
|
||||||
|
"""Check if the game is present in the store with the `in` keyword"""
|
||||||
|
if not isinstance(obj, Game):
|
||||||
|
return False
|
||||||
|
if not (source_mapping := self.source_games.get(obj.source)):
|
||||||
|
return False
|
||||||
|
return obj.game_id in source_mapping
|
||||||
|
|
||||||
|
def __iter__(self) -> Generator[Game, None, None]:
|
||||||
|
"""Iterate through the games in the store with `for ... in`"""
|
||||||
|
for _source_id, games_mapping in self.source_games.items():
|
||||||
|
for _game_id, game in games_mapping.items():
|
||||||
|
yield game
|
||||||
|
|
||||||
|
def __len__(self) -> int:
|
||||||
|
"""Get the number of games in the store with the `len` builtin"""
|
||||||
|
return sum(len(source_mapping) for source_mapping in self.source_games)
|
||||||
|
|
||||||
|
def __getitem__(self, game_id: str) -> Game:
|
||||||
|
"""Get a game by its id with `store["game_id_goes_here"]`"""
|
||||||
|
for game in iter(self):
|
||||||
|
if game.game_id == game_id:
|
||||||
|
return game
|
||||||
|
raise KeyError("Game not found in store")
|
||||||
|
|
||||||
|
def get(self, game_id: str, default: Any = None) -> Game | Any:
|
||||||
|
"""Get a game by its ID, with a fallback if not found"""
|
||||||
|
try:
|
||||||
|
game = self[game_id]
|
||||||
|
return game
|
||||||
|
except KeyError:
|
||||||
|
return default
|
||||||
|
|
||||||
def add_manager(self, manager: Manager, in_pipeline=True):
|
def add_manager(self, manager: Manager, in_pipeline=True):
|
||||||
"""Add a manager to the store"""
|
"""Add a manager to the store"""
|
||||||
manager_type = type(manager)
|
manager_type = type(manager)
|
||||||
self.managers[manager_type] = manager
|
self.managers[manager_type] = manager
|
||||||
if in_pipeline:
|
self.toggle_manager_in_pipelines(manager_type, in_pipeline)
|
||||||
self.enable_manager_in_pipelines(manager_type)
|
|
||||||
|
|
||||||
def enable_manager_in_pipelines(self, manager_type: type[Manager]):
|
def toggle_manager_in_pipelines(self, manager_type: type[Manager], enable: bool):
|
||||||
"""Make a manager run in new pipelines"""
|
"""Change if a manager should run in new pipelines"""
|
||||||
self.pipeline_managers.add(self.managers[manager_type])
|
if enable:
|
||||||
|
self.pipeline_managers.add(self.managers[manager_type])
|
||||||
|
else:
|
||||||
|
self.pipeline_managers.discard(self.managers[manager_type])
|
||||||
|
|
||||||
def cleanup_game(self, game: Game) -> None:
|
def cleanup_game(self, game: Game) -> None:
|
||||||
"""Remove a game's files"""
|
"""Remove a game's files"""
|
||||||
@@ -74,7 +110,7 @@ class Store:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
# Handle game duplicates
|
# Handle game duplicates
|
||||||
stored_game = self.games.get(game.game_id)
|
stored_game = self.get(game.game_id)
|
||||||
if not stored_game:
|
if not stored_game:
|
||||||
# New game, do as normal
|
# New game, do as normal
|
||||||
logging.debug("New store game %s (%s)", game.name, game.game_id)
|
logging.debug("New store game %s (%s)", game.name, game.game_id)
|
||||||
@@ -96,11 +132,15 @@ class Store:
|
|||||||
for signal in manager.signals:
|
for signal in manager.signals:
|
||||||
game.connect(signal, manager.execute_resilient_manager_logic)
|
game.connect(signal, manager.execute_resilient_manager_logic)
|
||||||
|
|
||||||
|
# Add the game to the store
|
||||||
|
if not game.source in self.source_games:
|
||||||
|
self.source_games[game.source] = {}
|
||||||
|
self.source_games[game.source][game.game_id] = game
|
||||||
|
|
||||||
# Run the pipeline for the game
|
# Run the pipeline for the game
|
||||||
if not run_pipeline:
|
if not run_pipeline:
|
||||||
return None
|
return None
|
||||||
pipeline = Pipeline(game, additional_data, self.pipeline_managers)
|
pipeline = Pipeline(game, additional_data, self.pipeline_managers)
|
||||||
self.games[game.game_id] = game
|
|
||||||
self.pipelines[game.game_id] = pipeline
|
self.pipelines[game.game_id] = pipeline
|
||||||
pipeline.advance()
|
pipeline.advance()
|
||||||
return pipeline
|
return pipeline
|
||||||
|
|||||||
128
src/utils/migrate_files_v1_to_v2.py
Normal file
128
src/utils/migrate_files_v1_to_v2.py
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
# migrate_files_v1_to_v2.py
|
||||||
|
#
|
||||||
|
# Copyright 2023 Geoffrey Coulaud
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
import json
|
||||||
|
import logging
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from src import shared
|
||||||
|
|
||||||
|
old_data_dir = Path.home() / ".local" / "share"
|
||||||
|
old_cartridges_data_dir = old_data_dir / "cartridges"
|
||||||
|
migrated_file_path = old_cartridges_data_dir / ".migrated"
|
||||||
|
old_games_dir = old_cartridges_data_dir / "games"
|
||||||
|
old_covers_dir = old_cartridges_data_dir / "covers"
|
||||||
|
|
||||||
|
|
||||||
|
def migrate_game_covers(game_path: Path):
|
||||||
|
"""Migrate a game covers from a source game path to the current dir"""
|
||||||
|
for suffix in (".tiff", ".gif"):
|
||||||
|
cover_path = old_covers_dir / game_path.with_suffix(suffix).name
|
||||||
|
if not cover_path.is_file():
|
||||||
|
continue
|
||||||
|
destination_cover_path = shared.covers_dir / cover_path.name
|
||||||
|
logging.info("Moving %s -> %s", str(cover_path), str(destination_cover_path))
|
||||||
|
cover_path.rename(destination_cover_path)
|
||||||
|
|
||||||
|
|
||||||
|
def migrate_files_v1_to_v2():
|
||||||
|
"""
|
||||||
|
Migrate user data from the v1.X locations to the latest location.
|
||||||
|
|
||||||
|
Fix for commit 4a204442b5d8ba2e918f8c2605d72e483bf35efd
|
||||||
|
where the windows directories for data, config and cache changed.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Skip if there is no old dir
|
||||||
|
# Skip if old == current
|
||||||
|
# Skip if already migrated
|
||||||
|
if (
|
||||||
|
not old_data_dir.is_dir()
|
||||||
|
or str(old_data_dir) == str(shared.data_dir)
|
||||||
|
or migrated_file_path.is_file()
|
||||||
|
):
|
||||||
|
return
|
||||||
|
|
||||||
|
logging.info("Migrating data dir %s", str(old_data_dir))
|
||||||
|
|
||||||
|
# Create new directories
|
||||||
|
shared.games_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
shared.covers_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
old_game_paths = set(old_games_dir.glob("*.json"))
|
||||||
|
old_imported_game_paths = set(
|
||||||
|
filter(lambda path: path.name.startswith("imported_"), old_game_paths)
|
||||||
|
)
|
||||||
|
old_other_game_paths = old_game_paths - old_imported_game_paths
|
||||||
|
|
||||||
|
# Discover current imported games
|
||||||
|
imported_game_number = 0
|
||||||
|
imported_execs = set()
|
||||||
|
for game_path in shared.games_dir.glob("imported_*.json"):
|
||||||
|
try:
|
||||||
|
game_data = json.load(game_path.open("r"))
|
||||||
|
except (OSError, json.JSONDecodeError):
|
||||||
|
continue
|
||||||
|
number = int(game_data["game_id"].replace("imported_", ""))
|
||||||
|
imported_game_number = max(number, imported_game_number)
|
||||||
|
imported_execs.add(game_data["executable"])
|
||||||
|
|
||||||
|
# Migrate imported game files
|
||||||
|
for game_path in old_imported_game_paths:
|
||||||
|
try:
|
||||||
|
game_data = json.load(game_path.open("r"))
|
||||||
|
except (OSError, json.JSONDecodeError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Don't migrate if there's a game with the same exec
|
||||||
|
if game_data["executable"] in imported_execs:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Migrate with updated index
|
||||||
|
imported_game_number += 1
|
||||||
|
game_id = f"imported_{imported_game_number}"
|
||||||
|
game_data["game_id"] = game_id
|
||||||
|
destination_game_path = shared.games_dir / f"{game_id}.json"
|
||||||
|
logging.info(
|
||||||
|
"Moving (updated id) %s -> %s", str(game_path), str(destination_game_path)
|
||||||
|
)
|
||||||
|
json.dump(
|
||||||
|
game_data,
|
||||||
|
destination_game_path.open("w"),
|
||||||
|
indent=4,
|
||||||
|
sort_keys=True,
|
||||||
|
)
|
||||||
|
game_path.unlink()
|
||||||
|
migrate_game_covers(game_path)
|
||||||
|
|
||||||
|
# Migrate all other games
|
||||||
|
for game_path in old_other_game_paths:
|
||||||
|
# Do nothing if already in games dir
|
||||||
|
destination_game_path = shared.games_dir / game_path.name
|
||||||
|
if destination_game_path.exists():
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Else, migrate the game
|
||||||
|
logging.info("Moving %s -> %s", str(game_path), str(destination_game_path))
|
||||||
|
game_path.rename(destination_game_path)
|
||||||
|
migrate_game_covers(game_path)
|
||||||
|
|
||||||
|
# Signal that this dir is migrated
|
||||||
|
migrated_file_path.touch()
|
||||||
|
logging.info("Migration done")
|
||||||
@@ -142,8 +142,7 @@ class SteamAPIHelper:
|
|||||||
raise SteamGameNotFoundError()
|
raise SteamGameNotFoundError()
|
||||||
|
|
||||||
# Handle appid is not a game
|
# Handle appid is not a game
|
||||||
game_types = ("game", "demo")
|
if data["data"]["type"] not in {"game", "demo", "mod"}:
|
||||||
if data["data"]["type"] not in game_types:
|
|
||||||
logging.debug("Appid %s is not a game", appid)
|
logging.debug("Appid %s is not a game", appid)
|
||||||
raise SteamNotAGameError()
|
raise SteamNotAGameError()
|
||||||
|
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ class CartridgesWindow(Adw.ApplicationWindow):
|
|||||||
def set_library_child(self):
|
def set_library_child(self):
|
||||||
child, hidden_child = self.notice_empty, self.hidden_notice_empty
|
child, hidden_child = self.notice_empty, self.hidden_notice_empty
|
||||||
|
|
||||||
for game in shared.store.games.values():
|
for game in shared.store:
|
||||||
if game.removed or game.blacklisted:
|
if game.removed or game.blacklisted:
|
||||||
continue
|
continue
|
||||||
if game.hidden:
|
if game.hidden:
|
||||||
|
|||||||
@@ -15,10 +15,10 @@ AppSupportURL=https://github.com/kra-mo/cartridges/issues
|
|||||||
AppUpdatesURL={#MyAppURL}
|
AppUpdatesURL={#MyAppURL}
|
||||||
DefaultDirName={autopf64}\{#MyAppName}
|
DefaultDirName={autopf64}\{#MyAppName}
|
||||||
DisableProgramGroupPage=yes
|
DisableProgramGroupPage=yes
|
||||||
LicenseFile=..\LICENSE
|
LicenseFile=..\..\LICENSE
|
||||||
PrivilegesRequiredOverridesAllowed=dialog
|
PrivilegesRequiredOverridesAllowed=dialog
|
||||||
OutputBaseFilename=Cartridges Setup
|
OutputBaseFilename=Cartridges Setup
|
||||||
SetupIconFile=..\windows\icon.ico
|
SetupIconFile=..\..\windows\icon.ico
|
||||||
Compression=lzma
|
Compression=lzma
|
||||||
SolidCompression=yes
|
SolidCompression=yes
|
||||||
WizardStyle=modern
|
WizardStyle=modern
|
||||||
@@ -50,7 +50,7 @@ Source: "D:\a\_temp\msys64\ucrt64\share\glib-2.0\*"; DestDir: "{app}\share\glib-
|
|||||||
Source: "D:\a\_temp\msys64\ucrt64\share\gtk-4.0\*"; DestDir: "{app}\share\gtk-4.0"; Flags: recursesubdirs ignoreversion
|
Source: "D:\a\_temp\msys64\ucrt64\share\gtk-4.0\*"; DestDir: "{app}\share\gtk-4.0"; Flags: recursesubdirs ignoreversion
|
||||||
Source: "D:\a\_temp\msys64\ucrt64\share\locale\*"; DestDir: "{app}\share\locale"; Flags: recursesubdirs ignoreversion
|
Source: "D:\a\_temp\msys64\ucrt64\share\locale\*"; DestDir: "{app}\share\locale"; Flags: recursesubdirs ignoreversion
|
||||||
|
|
||||||
Source: "..\windows\icon.ico"; DestDir: "{app}"; Flags: recursesubdirs ignoreversion
|
Source: "..\..\windows\icon.ico"; DestDir: "{app}"; Flags: recursesubdirs ignoreversion
|
||||||
|
|
||||||
[Icons]
|
[Icons]
|
||||||
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\bin\{#MyAppExeName}"; Parameters: """{app}\bin\cartridges"""; IconFilename: "{app}\icon.ico"
|
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\bin\{#MyAppExeName}"; Parameters: """{app}\bin\cartridges"""; IconFilename: "{app}\icon.ico"
|
||||||
|
|||||||
7
windows/meson.build
Normal file
7
windows/meson.build
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
configure_file(
|
||||||
|
input: './Cartridges.iss.in',
|
||||||
|
output: 'Cartridges.iss',
|
||||||
|
configuration: conf,
|
||||||
|
install: true,
|
||||||
|
install_dir: '.'
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user