Compare commits

...

47 Commits

Author SHA1 Message Date
kramo
c347d9b0f4 v2.0.6 2023-07-21 09:45:18 +02:00
kramo
9cd4d7048c Don't blacklist Steam mods - #151 2023-07-21 09:39:32 +02:00
kramo
3d17b5a920 Properly capitalize Pylint 2023-07-20 19:15:19 +02:00
kramo
2c67dd23ab Update contributing guidelines 2023-07-20 19:11:24 +02:00
kramo
45d1ddaa7d Add Matrix space to Readme 2023-07-20 11:56:55 +02:00
kramo
be6338cdd4 v2.0.5 2023-07-17 09:59:47 +02:00
kramo
bb7fded0e5 Fix Windows migration 2023-07-17 09:57:09 +02:00
kramo
7d91b84a87 Merge pull request #144 from weblate/weblate-cartridges-cartridges
Translations update from Hosted Weblate
2023-07-17 09:56:09 +02:00
Hosted Weblate
3002cef448 Translated using Weblate (Polish)
Currently translated at 100.0% (121 of 121 strings)

Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/pl/
Translation: Cartridges/Cartridges
2023-07-16 00:51:44 +02:00
Hosted Weblate
89f6dcad19 Translated using Weblate (Portuguese (Brazil))
Currently translated at 91.7% (111 of 121 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Vítor Fernandes Almado <vfalmado@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/pt_BR/
Translation: Cartridges/Cartridges
2023-07-16 00:51:44 +02:00
Hosted Weblate
5c62b7ba02 Translated using Weblate (Turkish)
Currently translated at 100.0% (121 of 121 strings)

Co-authored-by: Sabri Ünal <libreajans@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/tr/
Translation: Cartridges/Cartridges
2023-07-16 00:51:44 +02:00
kramo
a1c5a4bdd8 Mark source names as translatable 2023-07-13 14:51:55 +02:00
kramo
6114f65204 Lowercase itch source name 2023-07-13 14:46:31 +02:00
kramo
5be70bba52 Add extra sources to desktop entry 2023-07-09 14:26:44 +02:00
kramo
99ef85daf3 Update release description 2023-07-09 10:01:45 +02:00
kramo
719cedba67 Merge pull request #142 from weblate/weblate-cartridges-cartridges
Translations update from Hosted Weblate
2023-07-09 10:00:49 +02:00
Hosted Weblate
19432a1fe7 Translated using Weblate (Swedish)
Currently translated at 100.0% (121 of 121 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Luna Jernberg <droidbittin@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/sv/
Translation: Cartridges/Cartridges
2023-07-09 10:00:26 +02:00
Hosted Weblate
220d00141f Translated using Weblate (Tamil)
Currently translated at 100.0% (121 of 121 strings)

Co-authored-by: K.B.Dharun Krishna <kbdharunkrishna@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/ta/
Translation: Cartridges/Cartridges
2023-07-09 10:00:26 +02:00
Hosted Weblate
633e2a6c5d Translated using Weblate (Italian)
Currently translated at 100.0% (121 of 121 strings)

Co-authored-by: Alessandro Iepure <alessandro.iepure@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/it/
Translation: Cartridges/Cartridges
2023-07-09 10:00:26 +02:00
Hosted Weblate
bc25afa494 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (121 of 121 strings)

Co-authored-by: Dan <jonweblin2205@protonmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/uk/
Translation: Cartridges/Cartridges
2023-07-09 10:00:26 +02:00
Hosted Weblate
6bf246a8e6 Translated using Weblate (Dutch)
Currently translated at 100.0% (121 of 121 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Philip Goto <philip.goto@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/nl/
Translation: Cartridges/Cartridges
2023-07-09 10:00:26 +02:00
Hosted Weblate
ac71bc6ecb Translated using Weblate (Russian)
Currently translated at 100.0% (121 of 121 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Сергей <asvmail.as@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/ru/
Translation: Cartridges/Cartridges
2023-07-09 10:00:26 +02:00
Hosted Weblate
d7d6270bbc Translated using Weblate (Spanish)
Currently translated at 100.0% (121 of 121 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Óscar Fernández Díaz <oscfdezdz@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/es/
Translation: Cartridges/Cartridges
2023-07-09 10:00:26 +02:00
Hosted Weblate
cd986c3f5e Translated using Weblate (Arabic)
Currently translated at 100.0% (121 of 121 strings)

Co-authored-by: Ali Aljishi <ahj696@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/ar/
Translation: Cartridges/Cartridges
2023-07-09 10:00:26 +02:00
kramo
c3bd7ee736 v2.0.4 2023-07-09 10:00:10 +02:00
kramo
b4bfe38765 Backport new game fix - closes #143 2023-07-09 09:59:03 +02:00
kramo
a0c46bbc74 v2.0.3 2023-07-08 16:01:32 +02:00
kramo
6a06f7329d Disallow Legendary on Windows to fix Heroic 2023-07-08 16:00:57 +02:00
kramo
16db07511a Merge pull request #141 from kra-mo/fix-windows-data-location
Migrate old windows data location to the current one
2023-07-08 15:52:54 +02:00
GeoffreyCoulaud
34863901fd Various tweaks
- Removed unnecessary comments
- Renamed path variables from file to path
- Don't check for XDG_DATA_HOME
- Move files instead of copying them
- Format json dump
2023-07-08 15:38:38 +02:00
GeoffreyCoulaud
3f5f8b71e8 Manually imported - Migrate covers, log message 2023-07-08 15:25:59 +02:00
GeoffreyCoulaud
618a98ee89 Handle manually added games separately 2023-07-08 15:09:30 +02:00
GeoffreyCoulaud
867e4d3cce Fixes to initial code 2023-07-08 14:35:43 +02:00
GeoffreyCoulaud
3c019796c2 Initial code 2023-07-08 13:54:43 +02:00
kramo
1c8448c1e1 Update docs 2023-07-08 12:36:05 +02:00
kramo
dad3dcafb7 v2.0.2 2023-07-08 12:18:01 +02:00
kramo
c6ef2ea0b4 uuuuuuuuuuuuuughhhhhhhhhhhhhhhhhhhhhhh 2023-07-08 12:14:37 +02:00
kramo
e4d9f8ba45 Merge pull request #140 from kra-mo/store-improvements
Store improvements
2023-07-07 18:30:55 +02:00
GeoffreyCoulaud
87a4319360 Store improvements
- Store games by source
- Added convenience dunder methods (contains, iter, len, getitem)
- Added store.get
- Changed `enable_in_pipeline` for `toggle_in_pipeline`
2023-07-07 18:06:07 +02:00
kramo
dc232e1e43 Fix cache dir, add debug_info_filename to about 2023-07-06 10:25:00 +02:00
kramo
39be891452 v2.0.1 2023-07-06 10:05:29 +02:00
kramo
c3cad7c793 Fix default Steam path because fuck me 2023-07-06 10:02:11 +02:00
kramo
2952322759 Fix Windows artifact path 2023-07-05 22:57:42 +02:00
kramo
653bc8668c Fix Inno Setup paths 2023-07-05 22:53:08 +02:00
kramo
1a23851000 Add endif to meson.build 2023-07-05 22:35:43 +02:00
kramo
560d1cd273 Properly configure Windows with meson 2023-07-05 22:28:02 +02:00
kramo
dc0d7304f1 Don't allow multiple imports at once 2023-07-05 15:54:12 +02:00
38 changed files with 409 additions and 274 deletions

View File

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

View File

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

View File

@@ -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
[![GNOME Circle][circle-image]][circle-url] A GTK4 + Libadwaita game launcher
[![Flathub][flathub-image]][flathub-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 [![GNOME Circle][circle-image]][circle-url]
[circle-image]: https://circle.gnome.org/assets/button/badge.svg [![Translation Status][weblate-image]][weblate-url]
[github-actions-url]: https://github.com/kra-mo/cartridges
[github-actions-image]: https://github.com/kra-mo/cartridges/actions/workflows/ci.yml/badge.svg [![Flathub][flathub-image]][flathub-url]
[code-style-url]: https://github.com/psf/black [![Discord][discord-image]][discord-url]
[code-style-image]: https://img.shields.io/badge/code%20style-black-000000?style=flat [![Matrix][matrix-image]][matrix-url]
[weblate-url]: https://hosted.weblate.org/engage/cartridges/ [![Installs][installs-image]][flathub-url]
[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

View File

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

View File

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

View File

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

View File

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

View File

@@ -28,8 +28,7 @@
"/share/man", "/share/man",
"/share/pkgconfig", "/share/pkgconfig",
"*.la", "*.la",
"*.a", "*.a"
"Cartridges.iss"
], ],
"modules" : [ "modules" : [
{ {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

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

View File

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

View File

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

@@ -0,0 +1,7 @@
configure_file(
input: './Cartridges.iss.in',
output: 'Cartridges.iss',
configuration: conf,
install: true,
install_dir: '.'
)