Compare commits

...

16 Commits
v2.6 ... v2.6.2

Author SHA1 Message Date
kramo
9b24f7c473 v2.6.2 2023-11-03 17:15:06 +01:00
Weblate (bot)
644bf10713 Translations update from Hosted Weblate (#208)
* Translated using Weblate (Belarusian)

Currently translated at 100.0% (136 of 136 strings)

Co-authored-by: Yahor <k1llo2810@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/be/
Translation: Cartridges/Cartridges

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (136 of 136 strings)

Co-authored-by: Andrii Murha <flat.assembly@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/uk/
Translation: Cartridges/Cartridges

---------

Co-authored-by: Yahor <k1llo2810@protonmail.com>
Co-authored-by: Andrii Murha <flat.assembly@gmail.com>
2023-11-03 17:14:15 +01:00
kramo
2962988727 Fix old games not showing up in search provider 2023-11-03 17:11:25 +01:00
kramo
6d3d6e6a8f Use local options for command line 2023-10-27 14:54:59 +02:00
kramo
9557caecbc Use Blueprint menu item shorthands 2023-10-22 22:36:14 +02:00
kramo
a48841e5cb v2.6.1 2023-10-21 13:55:57 +02:00
Weblate (bot)
59966e9198 Translations update from Hosted Weblate (#203)
* Translated using Weblate (Russian)

Currently translated at 100.0% (136 of 136 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

* Translated using Weblate (Belarusian)

Currently translated at 100.0% (136 of 136 strings)

Added translation using Weblate (Belarusian)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Yahor <g_egor98@tut.by>
Co-authored-by: Yahor <k1llo2810@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/be/
Translation: Cartridges/Cartridges

* Translated using Weblate (French)

Currently translated at 100.0% (136 of 136 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: rene-coty <irenee.thirion@e.email>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/fr/
Translation: Cartridges/Cartridges

* Translated using Weblate (Swedish)

Currently translated at 100.0% (136 of 136 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/sv/
Translation: Cartridges/Cartridges

* Translated using Weblate (Chinese (Simplified))

Currently translated at 24.2% (33 of 136 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 24.2% (33 of 136 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 24.2% (33 of 136 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 6.6% (9 of 136 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 6.6% (9 of 136 strings)

Added translation using Weblate (Chinese (Simplified))

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: 刘韬 <lyuutau@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/zh_Hans/
Translation: Cartridges/Cartridges

* Update translation files

Updated by "Squash Git commits" hook in Weblate.

Translation: Cartridges/Cartridges
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/

---------

Co-authored-by: Сергей <asvmail.as@gmail.com>
Co-authored-by: Yahor <g_egor98@tut.by>
Co-authored-by: Yahor <k1llo2810@gmail.com>
Co-authored-by: rene-coty <irenee.thirion@e.email>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: 刘韬 <lyuutau@outlook.com>
2023-10-21 13:55:01 +02:00
kramo
69394d01ec Add spinner for fetching SGDB covers 2023-10-21 13:46:29 +02:00
kramo
684f457713 Add extra args to po/meson.build 2023-10-21 10:37:40 +02:00
kramo
baa4d6f0c4 Merge pull request #205 from sabriunal/fix-purism 2023-10-20 21:33:00 +02:00
Sabri Ünal
2662d66058 appdata: Remove Purism metadata
This metadata is invalid: custom data is a dictionary and using the same
key multiple times in a dictionary does not work

More information: https://github.com/ximion/appstream/issues/476
2023-10-20 22:27:35 +03:00
kramo
2cd670fcfe Ignore 'the' prefix when sorting - fixes #204 2023-10-20 15:28:41 +02:00
kramo
38bed27c61 oops 2023-10-15 21:57:17 +02:00
kramo
815c1ec088 Explicit is better than implicit 🐍🤓 2023-10-14 20:32:22 +02:00
kramo
89ba4aecaa Set last_played if launching from the command line 2023-10-14 20:27:56 +02:00
kramo
82ff5b3b46 Add tiff_compression build option 2023-10-13 16:58:08 +02:00
23 changed files with 1392 additions and 175 deletions

View File

@@ -22,6 +22,7 @@ import lzma
import os import os
import shlex import shlex
import sys import sys
from time import time
from typing import Any, Optional from typing import Any, Optional
import gi import gi
@@ -65,10 +66,27 @@ class CartridgesApplication(Adw.Application):
def __init__(self) -> None: def __init__(self) -> None:
shared.store = Store() shared.store = Store()
super().__init__( super().__init__(application_id=shared.APP_ID)
application_id=shared.APP_ID,
flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE, search = GLib.OptionEntry()
) search.long_name = "search"
search.short_name = ord("s")
search.flags = 0
search.arg = int(GLib.OptionArg.STRING)
search.arg_data = None
search.description = "Open the app with this term in the search entry"
search.arg_description = "TERM"
launch = GLib.OptionEntry()
launch.long_name = "launch"
launch.short_name = ord("l")
launch.flags = 0
launch.arg = int(GLib.OptionArg.STRING)
launch.arg_data = None
launch.description = "Run a game with the given game_id"
launch.arg_description = "GAME_ID"
self.add_main_option_entries((search, launch))
def do_activate(self) -> None: # pylint: disable=arguments-differ def do_activate(self) -> None: # pylint: disable=arguments-differ
"""Called on app creation""" """Called on app creation"""
@@ -158,39 +176,40 @@ class CartridgesApplication(Adw.Application):
shared.win.present() shared.win.present()
def do_command_line(self, command_line) -> int: def do_handle_local_options(self, options: GLib.VariantDict) -> int:
for index, arg in enumerate(args := command_line.get_arguments()): if search := options.lookup_value("search"):
if arg == "--search": self.init_search_term = search.get_string()
try: elif game_id := options.lookup_value("launch"):
self.init_search_term = args[index + 1] try:
except IndexError: data = json.load(
pass (path := shared.games_dir / (game_id.get_string() + ".json")).open(
break "r", encoding="utf-8"
if arg == "--launch":
try:
game_id = args[index + 1]
data = json.load((shared.games_dir / (game_id + ".json")).open("r"))
executable = (
shlex.join(data["executable"])
if isinstance(data["executable"], list)
else data["executable"]
) )
name = data["name"]
run_executable(executable)
except (IndexError, KeyError, OSError, json.decoder.JSONDecodeError):
return 1
notification = Gio.Notification.new(_("Cartridges"))
notification.set_body(_("{} launched").format(name))
self.send_notification(
"launch",
notification,
) )
return 0 executable = (
self.activate() shlex.join(data["executable"])
return 0 if isinstance(data["executable"], list)
else data["executable"]
)
name = data["name"]
run_executable(executable)
data["last_played"] = int(time())
json.dump(data, path.open("w", encoding="utf-8"))
except (IndexError, KeyError, OSError, json.decoder.JSONDecodeError):
return 1
self.register()
notification = Gio.Notification.new(_("Cartridges"))
notification.set_body(_("{} launched").format(name))
self.send_notification(
"launch",
notification,
)
return 0
return -1
def load_games_from_disk(self) -> None: def load_games_from_disk(self) -> None:
if shared.games_dir.is_dir(): if shared.games_dir.is_dir():
@@ -241,6 +260,7 @@ class CartridgesApplication(Adw.Application):
"Domenico https://github.com/Domefemia", "Domenico https://github.com/Domefemia",
"Rafael Mardojai CM https://mardojai.com", "Rafael Mardojai CM https://mardojai.com",
"Clara Hobbs https://github.com/Ratfink", "Clara Hobbs https://github.com/Ratfink",
"Sabri Ünal https://github.com/sabriunal",
) )
) )
about.set_designers(("kramo https://kramo.hu",)) about.set_designers(("kramo https://kramo.hu",))

View File

@@ -107,6 +107,8 @@ class PreferencesWindow(Adw.PreferencesWindow):
sgdb_prefer_switch = Gtk.Template.Child() sgdb_prefer_switch = Gtk.Template.Child()
sgdb_animated_switch = Gtk.Template.Child() sgdb_animated_switch = Gtk.Template.Child()
sgdb_fetch_button = Gtk.Template.Child() sgdb_fetch_button = Gtk.Template.Child()
sgdb_stack = Gtk.Template.Child()
sgdb_spinner = Gtk.Template.Child()
danger_zone_group = Gtk.Template.Child() danger_zone_group = Gtk.Template.Child()
reset_action_row = Gtk.Template.Child() reset_action_row = Gtk.Template.Child()
@@ -181,6 +183,9 @@ class PreferencesWindow(Adw.PreferencesWindow):
sgdb_manager = shared.store.managers[SgdbManager] sgdb_manager = shared.store.managers[SgdbManager]
sgdb_manager.reset_cancellable() sgdb_manager.reset_cancellable()
self.sgdb_spinner.set_spinning(True)
self.sgdb_stack.set_visible_child(self.sgdb_spinner)
self.add_toast(download_toast := Adw.Toast.new(_("Downloading covers…"))) self.add_toast(download_toast := Adw.Toast.new(_("Downloading covers…")))
def update_cover_callback(manager: SgdbManager) -> None: def update_cover_callback(manager: SgdbManager) -> None:
@@ -205,6 +210,9 @@ class PreferencesWindow(Adw.PreferencesWindow):
download_toast.dismiss() download_toast.dismiss()
self.add_toast(toast) self.add_toast(toast)
self.sgdb_spinner.set_spinning(False)
self.sgdb_stack.set_visible_child(self.sgdb_fetch_button)
for game in shared.store: for game in shared.store:
sgdb_manager.process_game(game, {}, update_cover_callback) sgdb_manager.process_game(game, {}, update_cover_callback)

View File

@@ -36,6 +36,7 @@ APP_ID = "@APP_ID@"
VERSION = "@VERSION@" VERSION = "@VERSION@"
PREFIX = "@PREFIX@" PREFIX = "@PREFIX@"
PROFILE = "@PROFILE@" PROFILE = "@PROFILE@"
TIFF_COMPRESSION = "@TIFF_COMPRESSION@"
SPEC_VERSION = 1.5 # The version of the game_id.json spec SPEC_VERSION = 1.5 # The version of the game_id.json spec
schema = Gio.Settings.new(APP_ID) schema = Gio.Settings.new(APP_ID)

View File

@@ -53,7 +53,7 @@ class FileManager(AsyncManager):
json.dump( json.dump(
{attr: getattr(game, attr) for attr in attrs if attr}, {attr: getattr(game, attr) for attr in attrs if attr},
(shared.games_dir / f"{game.game_id}.json").open("w"), (shared.games_dir / f"{game.game_id}.json").open("w", encoding="utf-8"),
indent=4, indent=4,
sort_keys=True, sort_keys=True,
) )

View File

@@ -76,7 +76,7 @@ def migrate_files_v1_to_v2() -> None:
imported_execs = set() imported_execs = set()
for game_path in shared.games_dir.glob("imported_*.json"): for game_path in shared.games_dir.glob("imported_*.json"):
try: try:
game_data = json.load(game_path.open("r")) game_data = json.load(game_path.open("r", encoding="utf-8"))
except (OSError, json.JSONDecodeError): except (OSError, json.JSONDecodeError):
continue continue
number = int(game_data["game_id"].replace("imported_", "")) number = int(game_data["game_id"].replace("imported_", ""))
@@ -86,7 +86,7 @@ def migrate_files_v1_to_v2() -> None:
# Migrate imported game files # Migrate imported game files
for game_path in old_imported_game_paths: for game_path in old_imported_game_paths:
try: try:
game_data = json.load(game_path.open("r")) game_data = json.load(game_path.open("r", encoding="utf-8"))
except (OSError, json.JSONDecodeError): except (OSError, json.JSONDecodeError):
continue continue
@@ -104,7 +104,7 @@ def migrate_files_v1_to_v2() -> None:
) )
json.dump( json.dump(
game_data, game_data,
destination_game_path.open("w"), destination_game_path.open("w", encoding="utf-8"),
indent=4, indent=4,
sort_keys=True, sort_keys=True,
) )

View File

@@ -1,4 +1,4 @@
# save_cover.py # run_executable.py
# #
# Copyright 2023 kramo # Copyright 2023 kramo
# #

View File

@@ -74,7 +74,7 @@ def convert_cover(
tmp_path, tmp_path,
compression="tiff_adobe_deflate" compression="tiff_adobe_deflate"
if shared.schema.get_boolean("high-quality-images") if shared.schema.get_boolean("high-quality-images")
else "webp", else shared.TIFF_COMPRESSION,
) )
except UnidentifiedImageError: except UnidentifiedImageError:
try: try:

View File

@@ -413,9 +413,11 @@ class CartridgesWindow(Adw.ApplicationWindow):
order = False order = False
def get_value(index: int) -> str: def get_value(index: int) -> str:
return str( return (
getattr((child1.get_child(), child2.get_child())[index], var) str(getattr((child1.get_child(), child2.get_child())[index], var))
).lower() .lower()
.removeprefix("the ")
)
if var != "name" and get_value(0) == get_value(1): if var != "name" and get_value(0) == get_value(1):
var, order = "name", False var, order = "name", False

View File

@@ -99,38 +99,16 @@ template $Game : Box {
menu game_options { menu game_options {
section { section {
item { item (_("Edit"), "app.edit_game")
label: _("Edit"); item (_("Hide"), "app.hide_game")
action: "app.edit_game"; item (_("Remove"), "app.remove_game")
}
item {
label: _("Hide");
action: "app.hide_game";
}
item {
label: _("Remove");
action: "app.remove_game";
}
} }
} }
menu hidden_game_options { menu hidden_game_options {
section { section {
item { item (_("Edit"), "app.edit_game")
label: _("Edit"); item (_("Unhide"), "app.hide_game")
action: "app.edit_game"; item (_("Remove"), "app.remove_game")
}
item {
label: _("Unhide");
action: "app.hide_game";
}
item {
label: _("Remove");
action: "app.remove_game";
}
} }
} }

View File

@@ -297,9 +297,14 @@ template $PreferencesWindow : Adw.PreferencesWindow {
subtitle: _("Fetch covers for games already in your library"); subtitle: _("Fetch covers for games already in your library");
sensitive: bind sgdb_switch.active; sensitive: bind sgdb_switch.active;
Button sgdb_fetch_button { Stack sgdb_stack {
label: _("Update"); Button sgdb_fetch_button {
valign: center; label: _("Update");
valign: center;
}
Spinner sgdb_spinner {
valign: center;
}
} }
} }
} }

View File

@@ -511,36 +511,19 @@ menu primary_menu {
} }
section { section {
item { item (_("Preferences"), "app.preferences")
label: _("Preferences"); item (_("Keyboard Shortcuts"), "win.show-help-overlay")
action: "app.preferences"; item (_("About Cartridges"), "app.about")
}
item {
label: _("Keyboard Shortcuts");
action: "win.show-help-overlay";
}
item {
label: _("About Cartridges");
action: "app.about";
}
} }
} }
menu add_games { menu add_games {
section { section {
item { item (_("Add Game"), "app.add_game")
label: _("Add Game");
action: "app.add_game";
}
} }
section { section {
item { item (_("Import"), "app.import")
label: _("Import");
action: "app.import";
}
} }
} }
@@ -548,29 +531,10 @@ menu search {
section { section {
label: "Search on…"; label: "Search on…";
item { item (_("IGDB"), "app.igdb_search")
label: "IGDB"; item (_("SteamGridDB"), "app.sgdb_search")
action: "app.igdb_search"; item (_("ProtonDB"), "app.protondb_search")
} item (_("Lutris"), "app.lutris_search")
item (_("HowLongToBeat"), "app.hltb_search")
item {
label: "SteamGridDB";
action: "app.sgdb_search";
}
item {
label: "ProtonDB";
action: "app.protondb_search";
}
item {
label: "Lutris";
action: "app.lutris_search";
}
item {
label: "HowLongToBeat";
action: "app.hltb_search";
}
} }
} }

View File

@@ -24,10 +24,6 @@
<recommends> <recommends>
<display_length compare="gt">280</display_length> <display_length compare="gt">280</display_length>
</recommends> </recommends>
<custom>
<value key="Purism::form_factor">workstation</value>
<value key="Purism::form_factor">mobile</value>
</custom>
<screenshots> <screenshots>
<screenshot type="default"> <screenshot type="default">
<image>https://raw.githubusercontent.com/kra-mo/cartridges/main/data/screenshots/1.png</image> <image>https://raw.githubusercontent.com/kra-mo/cartridges/main/data/screenshots/1.png</image>
@@ -48,6 +44,14 @@
</screenshots> </screenshots>
<content_rating type="oars-1.1" /> <content_rating type="oars-1.1" />
<releases> <releases>
<release version="2.6.2" date="2023-11-03">
<description translatable="no">
<ul>
<li>Fixed an issue with some games not showing up in GNOME search</li>
<li>Command line options are now properly supported</li>
</ul>
</description>
</release>
<release version="2.6" date="2023-10-11"> <release version="2.6" date="2023-10-11">
<description translatable="no"> <description translatable="no">
<p>You can now search your Cartridges library from GNOME!</p> <p>You can now search your Cartridges library from GNOME!</p>

View File

@@ -1,5 +1,5 @@
project('cartridges', project('cartridges',
version: '2.6', version: '2.6.2',
meson_version: '>= 0.59.0', meson_version: '>= 0.59.0',
default_options: [ 'warning_level=2', 'werror=false', ], default_options: [ 'warning_level=2', 'werror=false', ],
) )
@@ -31,6 +31,7 @@ conf.set('APP_ID', app_id)
conf.set('PREFIX', prefix) conf.set('PREFIX', prefix)
conf.set('VERSION', meson.project_version()) conf.set('VERSION', meson.project_version())
conf.set('PROFILE', profile) conf.set('PROFILE', profile)
conf.set('TIFF_COMPRESSION', get_option('tiff_compression'))
conf.set('localedir', join_paths(get_option('prefix'), get_option('localedir'))) conf.set('localedir', join_paths(get_option('prefix'), get_option('localedir')))
conf.set('pkgdatadir', pkgdatadir) conf.set('pkgdatadir', pkgdatadir)
conf.set('libexecdir', libexecdir) conf.set('libexecdir', libexecdir)

View File

@@ -7,3 +7,12 @@ option(
], ],
value: 'release' value: 'release'
) )
option(
'tiff_compression',
type: 'combo',
choices: [
'webp',
'jpeg',
],
value: 'webp'
)

View File

@@ -20,3 +20,5 @@ sv
tr tr
el el
cs cs
zh_Hans
be

630
po/be.po Normal file
View File

@@ -0,0 +1,630 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR kramo
# This file is distributed under the same license as the Cartridges package.
# Yahor <k1llo2810@gmail.com>, 2023.
# Yahor <g_egor98@tut.by>, 2023.
# Yahor <k1llo2810@protonmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Cartridges\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-10 22:22+0200\n"
"PO-Revision-Date: 2023-11-01 17:02+0000\n"
"Last-Translator: Yahor <k1llo2810@protonmail.com>\n"
"Language-Team: Belarusian <https://hosted.weblate.org/projects/cartridges/"
"cartridges/be/>\n"
"Language: be\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.2-dev\n"
#: data/hu.kramo.Cartridges.desktop.in:3
#: data/hu.kramo.Cartridges.metainfo.xml.in:6
#: data/hu.kramo.Cartridges.metainfo.xml.in:30 data/gtk/window.blp:47
#: data/gtk/window.blp:80 cartridges/main.py:185
msgid "Cartridges"
msgstr "Картрыджы"
#: data/hu.kramo.Cartridges.desktop.in:4
msgid "Game Launcher"
msgstr "Праграма запуску гульняў"
#: data/hu.kramo.Cartridges.desktop.in:5
#: data/hu.kramo.Cartridges.metainfo.xml.in:7
msgid "Launch all your games"
msgstr "Запускайце ўсе свае гульні"
#: data/hu.kramo.Cartridges.desktop.in:11
msgid ""
"gaming;launcher;steam;lutris;heroic;bottles;itch;flatpak;legendary;retroarch;"
msgstr ""
"гульні;праграма "
"запуску;steam;lutris;heroic;bottles;itch;flatpak;legendary;retroarch;"
#: data/hu.kramo.Cartridges.metainfo.xml.in:9
msgid ""
"Cartridges is a simple game launcher for all of your games. It has support "
"for importing games from Steam, Lutris, Heroic and more with no login "
"necessary. You can sort and hide games or download cover art from "
"SteamGridDB."
msgstr ""
"Картрыджы - гэта простая праграма для запуску ўсіх вашых гульняў. Яна "
"падтрымлівае імпарт гульняў з Steam, Lutris, Heroic і іншых без неабходнасці "
"ўваходу ў сістэму. Вы можаце сартаваць і хаваць гульні або спампоўваць "
"вокладку з SteamGridDB."
#: data/hu.kramo.Cartridges.metainfo.xml.in:34 data/gtk/window.blp:288
#: cartridges/details_window.py:71
msgid "Game Details"
msgstr "Падрабязнасці аб гульні"
#: data/hu.kramo.Cartridges.metainfo.xml.in:38
msgid "Edit Game Details"
msgstr "Рэдагаваць падрабязнасці аб гульні"
#: data/hu.kramo.Cartridges.metainfo.xml.in:42 data/gtk/help-overlay.blp:19
#: data/gtk/window.blp:515 cartridges/details_window.py:271
#: cartridges/importer/importer.py:319 cartridges/importer/importer.py:370
msgid "Preferences"
msgstr "Параметры"
#: data/gtk/details-window.blp:25
msgid "Cancel"
msgstr "Скасаваць"
#: data/gtk/details-window.blp:55
msgid "New Cover"
msgstr "Новая вокладка"
#: data/gtk/details-window.blp:73
msgid "Delete Cover"
msgstr "Выдалиць вокладку"
#: data/gtk/details-window.blp:100 data/gtk/game.blp:81
msgid "Title"
msgstr "Назва"
#: data/gtk/details-window.blp:103
msgid "Developer (optional)"
msgstr "Распрацоўшчык (неабавязкова)"
#: data/gtk/details-window.blp:108
msgid "Executable"
msgstr "Выконваны"
#: data/gtk/details-window.blp:114
msgid "Select File"
msgstr "Выбраць файл"
#: data/gtk/details-window.blp:125
msgid "More Info"
msgstr "Больш інфармацыі"
#: data/gtk/game.blp:103 data/gtk/game.blp:122 data/gtk/window.blp:415
msgid "Edit"
msgstr "Рэдагаваць"
#: data/gtk/game.blp:108 cartridges/window.py:350
msgid "Hide"
msgstr "Схаваць"
#: data/gtk/game.blp:113 data/gtk/game.blp:132 data/gtk/preferences.blp:40
#: data/gtk/window.blp:435
msgid "Remove"
msgstr "Выдаліць"
#: data/gtk/game.blp:127 cartridges/window.py:352
msgid "Unhide"
msgstr "Паказаць"
#: data/gtk/help-overlay.blp:11 data/gtk/preferences.blp:8
msgid "General"
msgstr "Агульнае"
#: data/gtk/help-overlay.blp:14 data/gtk/window.blp:184 data/gtk/window.blp:243
#: data/gtk/window.blp:446
msgid "Search"
msgstr "Пошук"
#: data/gtk/help-overlay.blp:24 data/gtk/window.blp:520
msgid "Keyboard Shortcuts"
msgstr "Спалучэнні клавіш"
#: data/gtk/help-overlay.blp:29 cartridges/game.py:103
#: cartridges/preferences.py:125 cartridges/importer/importer.py:394
msgid "Undo"
msgstr "Адмяніць"
#: data/gtk/help-overlay.blp:34
msgid "Quit"
msgstr "Выйсці"
#: data/gtk/help-overlay.blp:39 data/gtk/window.blp:88 data/gtk/window.blp:164
msgid "Toggle Sidebar"
msgstr "Пераключыць бакавую панэль"
#: data/gtk/help-overlay.blp:44 data/gtk/window.blp:177 data/gtk/window.blp:236
msgid "Main Menu"
msgstr "Галоўнае меню"
#: data/gtk/help-overlay.blp:50
msgid "Games"
msgstr "Гульні"
#: data/gtk/help-overlay.blp:53 data/gtk/window.blp:170 data/gtk/window.blp:534
msgid "Add Game"
msgstr "Дадаць гульню"
#: data/gtk/help-overlay.blp:58 data/gtk/preferences.blp:68
#: data/gtk/window.blp:27 data/gtk/window.blp:541
msgid "Import"
msgstr "Імпарт"
#: data/gtk/help-overlay.blp:63
msgid "Show Hidden Games"
msgstr "Паказаць схаваныя гульні"
#: data/gtk/help-overlay.blp:68
msgid "Remove Game"
msgstr "Выдаліць гульню"
#: data/gtk/preferences.blp:12 data/gtk/preferences.blp:72
#: data/gtk/preferences.blp:278
msgid "Behavior"
msgstr "Паводзіны"
#: data/gtk/preferences.blp:15
msgid "Exit After Launching Games"
msgstr "Выхад пасля запуску гульняў"
#: data/gtk/preferences.blp:19
msgid "Cover Image Launches Game"
msgstr "Выява вокладкі запускае гульню"
#: data/gtk/preferences.blp:20
msgid "Swaps the behavior of the cover image and the play button"
msgstr "Мяняе паводзіны вокладкі і кнопкі запуску"
#: data/gtk/preferences.blp:25 cartridges/details_window.py:85
msgid "Images"
msgstr "Відарысы"
#: data/gtk/preferences.blp:28
msgid "High Quality Images"
msgstr "Відарысы высокай якасці"
#: data/gtk/preferences.blp:29
msgid "Save game covers losslessly at the cost of storage"
msgstr "Захаванне вокладак гульняў без страт за кошт сховішча"
#: data/gtk/preferences.blp:34
msgid "Danger Zone"
msgstr "Небяспечная зона"
#: data/gtk/preferences.blp:37
msgid "Remove All Games"
msgstr "Выдаліць усе гульні"
#: data/gtk/preferences.blp:75
msgid "Remove Uninstalled Games"
msgstr "Выдаляць дэінсталяваныя гульні"
#: data/gtk/preferences.blp:80
msgid "Sources"
msgstr "Крыніцы"
#: data/gtk/preferences.blp:83 cartridges/importer/steam_source.py:114
msgid "Steam"
msgstr "Steam"
#: data/gtk/preferences.blp:87 data/gtk/preferences.blp:104
#: data/gtk/preferences.blp:141 data/gtk/preferences.blp:174
#: data/gtk/preferences.blp:191 data/gtk/preferences.blp:208
#: data/gtk/preferences.blp:225 data/gtk/preferences.blp:242
msgid "Install Location"
msgstr "Месца ўсталёўкі"
#: data/gtk/preferences.blp:100 cartridges/importer/lutris_source.py:92
msgid "Lutris"
msgstr "Lutris"
#: data/gtk/preferences.blp:116
msgid "Cache Location"
msgstr "Размяшчэнне кэша"
#: data/gtk/preferences.blp:128
msgid "Import Steam Games"
msgstr "Імпарт гульняў Steam"
#: data/gtk/preferences.blp:132
msgid "Import Flatpak Games"
msgstr "Імпарт гульняў Flatpak"
#: data/gtk/preferences.blp:137 cartridges/importer/heroic_source.py:355
msgid "Heroic"
msgstr "Heroic"
#: data/gtk/preferences.blp:153
msgid "Import Epic Games"
msgstr "Імпарт Epic Games"
#: data/gtk/preferences.blp:157
msgid "Import GOG Games"
msgstr "Імпарт гульняў GOG"
#: data/gtk/preferences.blp:161
msgid "Import Amazon Games"
msgstr "Імпарт гульняў Amazon"
#: data/gtk/preferences.blp:165
msgid "Import Sideloaded Games"
msgstr "Імпарт іншых гульняў"
#: data/gtk/preferences.blp:170 cartridges/importer/bottles_source.py:86
msgid "Bottles"
msgstr "Bottles"
#: data/gtk/preferences.blp:187 cartridges/importer/itch_source.py:81
msgid "itch"
msgstr "itch"
#: data/gtk/preferences.blp:204 cartridges/importer/legendary_source.py:97
msgid "Legendary"
msgstr "Legendary"
#: data/gtk/preferences.blp:221 cartridges/importer/retroarch_source.py:142
msgid "RetroArch"
msgstr "RetroArch"
#: data/gtk/preferences.blp:238 cartridges/importer/flatpak_source.py:118
msgid "Flatpak"
msgstr "Flatpak"
#: data/gtk/preferences.blp:254
msgid "Import Game Launchers"
msgstr "Імпарт сродкаў запуску гульняў"
#: data/gtk/preferences.blp:259 cartridges/importer/desktop_source.py:215
msgid "Desktop Entries"
msgstr "Запісы працоўнага стала"
#: data/gtk/preferences.blp:266
msgid "SteamGridDB"
msgstr "SteamGridDB"
#: data/gtk/preferences.blp:270
msgid "Authentication"
msgstr "Аўтэнтыфікацыя"
#: data/gtk/preferences.blp:273
msgid "API Key"
msgstr "Ключ API"
#: data/gtk/preferences.blp:281
msgid "Use SteamGridDB"
msgstr "Выкарыстоўвайць SteamGridDB"
#: data/gtk/preferences.blp:282
msgid "Download images when adding or importing games"
msgstr "Спампоўка відарысаў пры даданні ці імпарце гульняў"
#: data/gtk/preferences.blp:286
msgid "Prefer Over Official Images"
msgstr "Аддавайце перавагу афіцыйным відарысам"
#: data/gtk/preferences.blp:290
msgid "Prefer Animated Images"
msgstr "Аддавайце перавагу аніміраваным відарысам"
#: data/gtk/preferences.blp:296
msgid "Update Covers"
msgstr "Абнавіць вокладкі"
#: data/gtk/preferences.blp:297
msgid "Fetch covers for games already in your library"
msgstr "Атрымаць вокладкі для гульняў, якія ўжо ёсць у вашай бібліятэцы"
#: data/gtk/preferences.blp:301
msgid "Update"
msgstr "Абнавіць"
#: data/gtk/window.blp:6 data/gtk/window.blp:14
msgid "No Games Found"
msgstr "Гульні не знойдзены"
#: data/gtk/window.blp:7 data/gtk/window.blp:15
msgid "Try a different search."
msgstr "Паспрабуйце іншы пошук."
#: data/gtk/window.blp:21
msgid "No Games"
msgstr "Няма гульняў"
#: data/gtk/window.blp:22
msgid "Use the + button to add games."
msgstr "Выкарыстоўвайце кнопку +, каб дадаць гульні."
#: data/gtk/window.blp:40
msgid "No Hidden Games"
msgstr "Няма схаваных гульняў"
#: data/gtk/window.blp:41
msgid "Games you hide will appear here."
msgstr "Гульні, якія вы схаваеце, з'явяцца тут."
#: data/gtk/window.blp:75 data/gtk/window.blp:106 cartridges/main.py:207
msgid "All Games"
msgstr "Усе гульні"
#: data/gtk/window.blp:126 cartridges/main.py:209
msgid "Added"
msgstr "Дададзена"
#: data/gtk/window.blp:141
msgid "Imported"
msgstr "Імпартавана"
#: data/gtk/window.blp:229
msgid "Hidden Games"
msgstr "Схаваныя гульні"
#: data/gtk/window.blp:339
msgid "Game Title"
msgstr "Назва гульні"
#: data/gtk/window.blp:396
msgid "Play"
msgstr "Гуляць"
#: data/gtk/window.blp:473
msgid "Sort"
msgstr "Сартаваць"
#: data/gtk/window.blp:476
msgid "A-Z"
msgstr "А-Я"
#: data/gtk/window.blp:482
msgid "Z-A"
msgstr "Я-А"
#: data/gtk/window.blp:488
msgid "Newest"
msgstr "Найноўшыя"
#: data/gtk/window.blp:494
msgid "Oldest"
msgstr "Старэйшыя"
#: data/gtk/window.blp:500
msgid "Last Played"
msgstr "Апошняя гульня"
#: data/gtk/window.blp:507
msgid "Show Hidden"
msgstr "Паказаць схаваныя"
#: data/gtk/window.blp:525
msgid "About Cartridges"
msgstr "Аб картрыджах"
#. The variable is the title of the game
#: cartridges/main.py:186 cartridges/game.py:125
msgid "{} launched"
msgstr "{} запушчана"
#. Translators: Replace this with your name for it to show up in the about window
#: cartridges/main.py:249
msgid "translator_credits"
msgstr "Yahor Haurylenka https://github.com/k1llo"
#. The variable is the date when the game was added
#: cartridges/window.py:373
msgid "Added: {}"
msgstr "Дададзена: {}"
#: cartridges/window.py:376
msgid "Never"
msgstr "Ніколі"
#. The variable is the date when the game was last played
#: cartridges/window.py:380
msgid "Last played: {}"
msgstr "Гулялі апошні раз: {}"
#: cartridges/details_window.py:76
msgid "Apply"
msgstr "Ужыць"
#: cartridges/details_window.py:82
msgid "Add New Game"
msgstr "Дадаць новую гульню"
#: cartridges/details_window.py:83
msgid "Add"
msgstr "Дадаць"
#: cartridges/details_window.py:93
msgid "Executables"
msgstr "Выконваныя"
#. Translate this string as you would translate "file"
#: cartridges/details_window.py:108
msgid "file.txt"
msgstr "file.txt"
#. As in software
#: cartridges/details_window.py:110
msgid "program"
msgstr "праграма"
#. Translate this string as you would translate "path to {}"
#: cartridges/details_window.py:115 cartridges/details_window.py:117
msgid "C:\\path\\to\\{}"
msgstr "C:\\шлях\\да\\{}"
#. Translate this string as you would translate "path to {}"
#: cartridges/details_window.py:121 cartridges/details_window.py:123
msgid "/path/to/{}"
msgstr "/шлях/да/{}"
#: cartridges/details_window.py:128
msgid ""
"To launch the executable \"{}\", use the command:\n"
"\n"
"<tt>\"{}\"</tt>\n"
"\n"
"To open the file \"{}\" with the default application, use:\n"
"\n"
"<tt>{} \"{}\"</tt>\n"
"\n"
"If the path contains spaces, make sure to wrap it in double quotes!"
msgstr ""
"Каб запусціць выкананы файл \"{}\", выканайце каманду:\n"
"\n"
"<tt>\"{}\"</tt>\n"
"\n"
"Каб адкрыць файл \"{}\" з дапамогай праграмы па змаўчанні, выкарыстоўвайце:\n"
"\n"
"<tt>{} \"{}\"</tt>\n"
"\n"
"Калі шлях змяшчае прабелы, абавязкова заключыце яго ў падвойныя двукоссі!"
#: cartridges/details_window.py:171 cartridges/details_window.py:177
msgid "Couldn't Add Game"
msgstr "Не ўдалося дадаць гульню"
#: cartridges/details_window.py:171 cartridges/details_window.py:213
msgid "Game title cannot be empty."
msgstr "Назва гульні не можа быць пустой."
#: cartridges/details_window.py:177 cartridges/details_window.py:221
msgid "Executable cannot be empty."
msgstr "Выканальны файл не можа быць пустым."
#: cartridges/details_window.py:212 cartridges/details_window.py:220
msgid "Couldn't Apply Preferences"
msgstr "Не ўдалося прымяніць параметры"
#. The variable is the title of the game
#: cartridges/game.py:139
msgid "{} hidden"
msgstr "{} схаваная"
#: cartridges/game.py:139
msgid "{} unhidden"
msgstr "{} непрыхавана"
#. The variable is the title of the game
#. The variable is the number of games removed
#: cartridges/game.py:153 cartridges/importer/importer.py:391
msgid "{} removed"
msgstr "{} выдалена"
#: cartridges/preferences.py:124
msgid "All games removed"
msgstr "Усе гульні выдалены"
#: cartridges/preferences.py:172
msgid ""
"An API key is required to use SteamGridDB. You can generate one {}here{}."
msgstr ""
"Для выкарыстання SteamGridDB патрабуецца ключ API. Вы можаце стварыць яго "
"{}тут{}."
#: cartridges/preferences.py:184
msgid "Downloading covers…"
msgstr "Спампоўка вокладак…"
#: cartridges/preferences.py:203
msgid "Covers updated"
msgstr "Вокладкі абноўлены"
#: cartridges/preferences.py:335
msgid "Installation Not Found"
msgstr "Усталяванне не знойдзена"
#: cartridges/preferences.py:336
msgid "Select a valid directory."
msgstr "Выберыце сапраўдны каталог."
#: cartridges/preferences.py:372 cartridges/importer/importer.py:317
msgid "Warning"
msgstr "Увага"
#: cartridges/preferences.py:406
msgid "Invalid Directory"
msgstr "Няправільны каталог"
#: cartridges/preferences.py:412
msgid "Set Location"
msgstr "Задаць размяшчэнне"
#: cartridges/utils/create_dialog.py:33 cartridges/importer/importer.py:318
msgid "Dismiss"
msgstr "Адхіліць"
#: cartridges/importer/importer.py:145
msgid "Importing Games…"
msgstr "Імпарт гульняў…"
#: cartridges/importer/importer.py:338
msgid "The following errors occured during import:"
msgstr "Падчас імпарту адбыліся наступныя памылкі:"
#: cartridges/importer/importer.py:367
msgid "No new games found"
msgstr "Новыя гульні не знойдзены"
#: cartridges/importer/importer.py:379
msgid "1 game imported"
msgstr "Імпартавана 1 гульня"
#. The variable is the number of games
#: cartridges/importer/importer.py:383
msgid "{} games imported"
msgstr "{} гульняў імпартавана"
#. A single game removed
#: cartridges/importer/importer.py:387
msgid "1 removed"
msgstr "1 выдалена"
#. The variable is the name of the source
#: cartridges/importer/location.py:33
msgid "Select the {} cache directory."
msgstr "Выберыце каталог кэша {}."
#. The variable is the name of the source
#: cartridges/importer/location.py:35
msgid "Select the {} configuration directory."
msgstr "Выберыце каталог канфігурацыі {}."
#. The variable is the name of the source
#: cartridges/importer/location.py:37
msgid "Select the {} data directory."
msgstr "Выберыце каталог даных {}."
#: cartridges/importer/retroarch_source.py:129
msgid "No RetroArch Core Selected"
msgstr "Ядро RetroArch не выбрана"
#. The variable is a newline separated list of playlists
#: cartridges/importer/retroarch_source.py:131
msgid "The following playlists have no default core:"
msgstr "Наступныя плэйлісты не маюць ядра па змаўчанні:"
#: cartridges/importer/retroarch_source.py:133
msgid "Games with no core selected were not imported"
msgstr "Гульні без выбранага ядра не былі імпартаваныя"
#: cartridges/store/managers/sgdb_manager.py:46
msgid "Couldn't Authenticate SteamGridDB"
msgstr "Немагчыма аўтэнтыфікаваць SteamGridDB"
#: cartridges/store/managers/sgdb_manager.py:47
msgid "Verify your API key in preferences"
msgstr "Праверце свой ключ API ў наладах"

View File

@@ -12,8 +12,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-10-10 22:22+0200\n" "POT-Creation-Date: 2023-10-10 22:22+0200\n"
"PO-Revision-Date: 2023-09-21 14:55+0000\n" "PO-Revision-Date: 2023-10-14 05:01+0000\n"
"Last-Translator: Geoffrey Coulaud <geoffrey.coulaud+github@gmail.com>\n" "Last-Translator: rene-coty <irenee.thirion@e.email>\n"
"Language-Team: French <https://hosted.weblate.org/projects/cartridges/" "Language-Team: French <https://hosted.weblate.org/projects/cartridges/"
"cartridges/fr/>\n" "cartridges/fr/>\n"
"Language: fr\n" "Language: fr\n"
@@ -164,14 +164,10 @@ msgid "Import"
msgstr "Importer" msgstr "Importer"
#: data/gtk/help-overlay.blp:63 #: data/gtk/help-overlay.blp:63
#, fuzzy
#| msgid "Show hidden games"
msgid "Show Hidden Games" msgid "Show Hidden Games"
msgstr "Afficher les jeux masqués" msgstr "Afficher les jeux masqués"
#: data/gtk/help-overlay.blp:68 #: data/gtk/help-overlay.blp:68
#, fuzzy
#| msgid "Remove game"
msgid "Remove Game" msgid "Remove Game"
msgstr "Supprimer le jeu" msgstr "Supprimer le jeu"
@@ -327,18 +323,16 @@ msgid "Prefer Animated Images"
msgstr "Préférer les images animées" msgstr "Préférer les images animées"
#: data/gtk/preferences.blp:296 #: data/gtk/preferences.blp:296
#, fuzzy
#| msgid "Delete Cover"
msgid "Update Covers" msgid "Update Covers"
msgstr "Supprimer la couverture" msgstr "Mettre à jour les pochettes des jeux"
#: data/gtk/preferences.blp:297 #: data/gtk/preferences.blp:297
msgid "Fetch covers for games already in your library" msgid "Fetch covers for games already in your library"
msgstr "" msgstr "Récupérer les pochettes des jeux déjà présents dans votre bibliothèque"
#: data/gtk/preferences.blp:301 #: data/gtk/preferences.blp:301
msgid "Update" msgid "Update"
msgstr "" msgstr "Mise à jour"
#: data/gtk/window.blp:6 data/gtk/window.blp:14 #: data/gtk/window.blp:6 data/gtk/window.blp:14
msgid "No Games Found" msgid "No Games Found"
@@ -546,14 +540,12 @@ msgstr ""
"une {}ici{}." "une {}ici{}."
#: cartridges/preferences.py:184 #: cartridges/preferences.py:184
#, fuzzy
#| msgid "Importing Covers…"
msgid "Downloading covers…" msgid "Downloading covers…"
msgstr "Importation des pochettes des jeux…" msgstr "Téléchargement des pochettes des jeux…"
#: cartridges/preferences.py:203 #: cartridges/preferences.py:203
msgid "Covers updated" msgid "Covers updated"
msgstr "" msgstr "Pochettes mises à jour"
#: cartridges/preferences.py:335 #: cartridges/preferences.py:335
msgid "Installation Not Found" msgid "Installation Not Found"

View File

@@ -1 +1 @@
i18n.gettext('cartridges', preset: 'glib') i18n.gettext('cartridges', preset: 'glib', args: ['--copyright-holder=kramo', '--package-name=Cartridges'])

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-10-10 22:22+0200\n" "POT-Creation-Date: 2023-10-10 22:22+0200\n"
"PO-Revision-Date: 2023-09-26 15:28+0000\n" "PO-Revision-Date: 2023-10-14 05:01+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"
@@ -35,7 +35,7 @@ msgstr "Средство запуска игр"
#: data/hu.kramo.Cartridges.desktop.in:5 #: data/hu.kramo.Cartridges.desktop.in:5
#: data/hu.kramo.Cartridges.metainfo.xml.in:7 #: data/hu.kramo.Cartridges.metainfo.xml.in:7
msgid "Launch all your games" msgid "Launch all your games"
msgstr "Запустите все свои игры" msgstr "Запускайте все свои игры"
#: data/hu.kramo.Cartridges.desktop.in:11 #: data/hu.kramo.Cartridges.desktop.in:11
msgid "" msgid ""

View File

@@ -4,13 +4,14 @@
# micke <mikanybe@gmail.com>, 2023. # micke <mikanybe@gmail.com>, 2023.
# micke <micke@users.noreply.hosted.weblate.org>, 2023. # micke <micke@users.noreply.hosted.weblate.org>, 2023.
# Luna Jernberg <droidbittin@gmail.com>, 2023. # Luna Jernberg <droidbittin@gmail.com>, 2023.
# bittin1ddc447d824349b2 <bittin@reimu.nl>, 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-10-10 22:22+0200\n" "POT-Creation-Date: 2023-10-10 22:22+0200\n"
"PO-Revision-Date: 2023-09-06 03:24+0000\n" "PO-Revision-Date: 2023-10-20 04:03+0000\n"
"Last-Translator: Luna Jernberg <droidbittin@gmail.com>\n" "Last-Translator: bittin1ddc447d824349b2 <bittin@reimu.nl>\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"
"Language: sv\n" "Language: sv\n"
@@ -18,7 +19,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 5.0.1-dev\n" "X-Generator: Weblate 5.1\n"
#: data/hu.kramo.Cartridges.desktop.in:3 #: data/hu.kramo.Cartridges.desktop.in:3
#: data/hu.kramo.Cartridges.metainfo.xml.in:6 #: data/hu.kramo.Cartridges.metainfo.xml.in:6
@@ -142,7 +143,7 @@ msgstr "Avsluta"
#: data/gtk/help-overlay.blp:39 data/gtk/window.blp:88 data/gtk/window.blp:164 #: data/gtk/help-overlay.blp:39 data/gtk/window.blp:88 data/gtk/window.blp:164
msgid "Toggle Sidebar" msgid "Toggle Sidebar"
msgstr "" msgstr "Växla sidofält"
#: data/gtk/help-overlay.blp:44 data/gtk/window.blp:177 data/gtk/window.blp:236 #: data/gtk/help-overlay.blp:44 data/gtk/window.blp:177 data/gtk/window.blp:236
msgid "Main Menu" msgid "Main Menu"
@@ -162,14 +163,10 @@ msgid "Import"
msgstr "Importera" msgstr "Importera"
#: data/gtk/help-overlay.blp:63 #: data/gtk/help-overlay.blp:63
#, fuzzy
#| msgid "Show hidden games"
msgid "Show Hidden Games" msgid "Show Hidden Games"
msgstr "Visa dolda spel" msgstr "Visa dolda spel"
#: data/gtk/help-overlay.blp:68 #: data/gtk/help-overlay.blp:68
#, fuzzy
#| msgid "Remove game"
msgid "Remove Game" msgid "Remove Game"
msgstr "Ta bort spel" msgstr "Ta bort spel"
@@ -323,18 +320,16 @@ msgid "Prefer Animated Images"
msgstr "Föredra animerade bilder" msgstr "Föredra animerade bilder"
#: data/gtk/preferences.blp:296 #: data/gtk/preferences.blp:296
#, fuzzy
#| msgid "Delete Cover"
msgid "Update Covers" msgid "Update Covers"
msgstr "Ta bort omslag" msgstr "Uppdatera omslag"
#: data/gtk/preferences.blp:297 #: data/gtk/preferences.blp:297
msgid "Fetch covers for games already in your library" msgid "Fetch covers for games already in your library"
msgstr "" msgstr "Hämta omslag till spel som redan finns i ditt bibliotek"
#: data/gtk/preferences.blp:301 #: data/gtk/preferences.blp:301
msgid "Update" msgid "Update"
msgstr "" msgstr "Uppdatera"
#: data/gtk/window.blp:6 data/gtk/window.blp:14 #: data/gtk/window.blp:6 data/gtk/window.blp:14
msgid "No Games Found" msgid "No Games Found"
@@ -361,22 +356,16 @@ msgid "Games you hide will appear here."
msgstr "Spel som du döljer kommer visas här." msgstr "Spel som du döljer kommer visas här."
#: data/gtk/window.blp:75 data/gtk/window.blp:106 cartridges/main.py:207 #: data/gtk/window.blp:75 data/gtk/window.blp:106 cartridges/main.py:207
#, fuzzy
#| msgid "Remove All Games"
msgid "All Games" msgid "All Games"
msgstr "Ta bort alla spel" msgstr "Alla spel"
#: data/gtk/window.blp:126 cartridges/main.py:209 #: data/gtk/window.blp:126 cartridges/main.py:209
#, fuzzy
#| msgid "Added: {}"
msgid "Added" msgid "Added"
msgstr "Tillagt: {}" msgstr "Tillagt"
#: data/gtk/window.blp:141 #: data/gtk/window.blp:141
#, fuzzy
#| msgid "Import"
msgid "Imported" msgid "Imported"
msgstr "Importera" msgstr "Importerad"
#: data/gtk/window.blp:229 #: data/gtk/window.blp:229
msgid "Hidden Games" msgid "Hidden Games"
@@ -547,14 +536,12 @@ msgstr ""
"En API-nyckel krävs för att använda SteamGridDB. Du kan generera en {}här{}." "En API-nyckel krävs för att använda SteamGridDB. Du kan generera en {}här{}."
#: cartridges/preferences.py:184 #: cartridges/preferences.py:184
#, fuzzy
#| msgid "Importing Covers…"
msgid "Downloading covers…" msgid "Downloading covers…"
msgstr "Importerar omslagsbilder…" msgstr "Laddar ner omslagsbilder…"
#: cartridges/preferences.py:203 #: cartridges/preferences.py:203
msgid "Covers updated" msgid "Covers updated"
msgstr "" msgstr "Omslagsbilder uppdaterade"
#: cartridges/preferences.py:335 #: cartridges/preferences.py:335
msgid "Installation Not Found" msgid "Installation Not Found"

View File

@@ -11,7 +11,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-10-10 22:22+0200\n" "POT-Creation-Date: 2023-10-10 22:22+0200\n"
"PO-Revision-Date: 2023-10-05 19:10+0000\n" "PO-Revision-Date: 2023-10-24 17:02+0000\n"
"Last-Translator: Andrii Murha <flat.assembly@gmail.com>\n" "Last-Translator: Andrii Murha <flat.assembly@gmail.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"
@@ -21,7 +21,7 @@ msgstr ""
"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 && " "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%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.1-dev\n" "X-Generator: Weblate 5.1.1-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/hu.kramo.Cartridges.metainfo.xml.in:6
@@ -145,7 +145,7 @@ msgstr "Вийти"
#: data/gtk/help-overlay.blp:39 data/gtk/window.blp:88 data/gtk/window.blp:164 #: data/gtk/help-overlay.blp:39 data/gtk/window.blp:88 data/gtk/window.blp:164
msgid "Toggle Sidebar" msgid "Toggle Sidebar"
msgstr "Перкключити бічну панель" msgstr "Переключити бічну панель"
#: data/gtk/help-overlay.blp:44 data/gtk/window.blp:177 data/gtk/window.blp:236 #: data/gtk/help-overlay.blp:44 data/gtk/window.blp:177 data/gtk/window.blp:236
msgid "Main Menu" msgid "Main Menu"

611
po/zh_Hans.po Normal file
View File

@@ -0,0 +1,611 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR kramo
# This file is distributed under the same license as the Cartridges package.
# 刘韬 <lyuutau@outlook.com>, 2023.
# Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Cartridges\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-10 22:22+0200\n"
"PO-Revision-Date: 2023-10-18 04:12+0000\n"
"Last-Translator: 刘韬 <lyuutau@outlook.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"cartridges/cartridges/zh_Hans/>\n"
"Language: zh_Hans\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.1\n"
#: data/hu.kramo.Cartridges.desktop.in:3
#: data/hu.kramo.Cartridges.metainfo.xml.in:6
#: data/hu.kramo.Cartridges.metainfo.xml.in:30 data/gtk/window.blp:47
#: data/gtk/window.blp:80 cartridges/main.py:185
msgid "Cartridges"
msgstr "Cartridges"
#: data/hu.kramo.Cartridges.desktop.in:4
msgid "Game Launcher"
msgstr "游戏启动器"
#: data/hu.kramo.Cartridges.desktop.in:5
#: data/hu.kramo.Cartridges.metainfo.xml.in:7
msgid "Launch all your games"
msgstr ""
#: data/hu.kramo.Cartridges.desktop.in:11
msgid ""
"gaming;launcher;steam;lutris;heroic;bottles;itch;flatpak;legendary;retroarch;"
msgstr ""
#: data/hu.kramo.Cartridges.metainfo.xml.in:9
msgid ""
"Cartridges is a simple game launcher for all of your games. It has support "
"for importing games from Steam, Lutris, Heroic and more with no login "
"necessary. You can sort and hide games or download cover art from "
"SteamGridDB."
msgstr ""
#: data/hu.kramo.Cartridges.metainfo.xml.in:34 data/gtk/window.blp:288
#: cartridges/details_window.py:71
msgid "Game Details"
msgstr "游戏详情"
#: data/hu.kramo.Cartridges.metainfo.xml.in:38
msgid "Edit Game Details"
msgstr "编辑游戏详情"
#: data/hu.kramo.Cartridges.metainfo.xml.in:42 data/gtk/help-overlay.blp:19
#: data/gtk/window.blp:515 cartridges/details_window.py:271
#: cartridges/importer/importer.py:319 cartridges/importer/importer.py:370
msgid "Preferences"
msgstr ""
#: data/gtk/details-window.blp:25
msgid "Cancel"
msgstr "取消"
#: data/gtk/details-window.blp:55
msgid "New Cover"
msgstr "新封面"
#: data/gtk/details-window.blp:73
msgid "Delete Cover"
msgstr "删除封面"
#: data/gtk/details-window.blp:100 data/gtk/game.blp:81
msgid "Title"
msgstr "标题"
#: data/gtk/details-window.blp:103
msgid "Developer (optional)"
msgstr "开发者模式(可选)"
#: data/gtk/details-window.blp:108
msgid "Executable"
msgstr ""
#: data/gtk/details-window.blp:114
msgid "Select File"
msgstr "选择文件"
#: data/gtk/details-window.blp:125
msgid "More Info"
msgstr "更多信息"
#: data/gtk/game.blp:103 data/gtk/game.blp:122 data/gtk/window.blp:415
msgid "Edit"
msgstr "编辑"
#: data/gtk/game.blp:108 cartridges/window.py:350
msgid "Hide"
msgstr "隐藏"
#: data/gtk/game.blp:113 data/gtk/game.blp:132 data/gtk/preferences.blp:40
#: data/gtk/window.blp:435
msgid "Remove"
msgstr "移除"
#: data/gtk/game.blp:127 cartridges/window.py:352
msgid "Unhide"
msgstr "取消隐藏"
#: data/gtk/help-overlay.blp:11 data/gtk/preferences.blp:8
msgid "General"
msgstr ""
#: data/gtk/help-overlay.blp:14 data/gtk/window.blp:184 data/gtk/window.blp:243
#: data/gtk/window.blp:446
msgid "Search"
msgstr "搜索"
#: data/gtk/help-overlay.blp:24 data/gtk/window.blp:520
msgid "Keyboard Shortcuts"
msgstr "键盘快捷键"
#: data/gtk/help-overlay.blp:29 cartridges/game.py:103
#: cartridges/preferences.py:125 cartridges/importer/importer.py:394
msgid "Undo"
msgstr "撤销"
#: data/gtk/help-overlay.blp:34
msgid "Quit"
msgstr "退出"
#: data/gtk/help-overlay.blp:39 data/gtk/window.blp:88 data/gtk/window.blp:164
msgid "Toggle Sidebar"
msgstr ""
#: data/gtk/help-overlay.blp:44 data/gtk/window.blp:177 data/gtk/window.blp:236
msgid "Main Menu"
msgstr "主菜单"
#: data/gtk/help-overlay.blp:50
msgid "Games"
msgstr "游戏"
#: data/gtk/help-overlay.blp:53 data/gtk/window.blp:170 data/gtk/window.blp:534
msgid "Add Game"
msgstr "添加游戏"
#: data/gtk/help-overlay.blp:58 data/gtk/preferences.blp:68
#: data/gtk/window.blp:27 data/gtk/window.blp:541
msgid "Import"
msgstr "导入"
#: data/gtk/help-overlay.blp:63
msgid "Show Hidden Games"
msgstr "显示隐藏的游戏"
#: data/gtk/help-overlay.blp:68
msgid "Remove Game"
msgstr "移除游戏"
#: data/gtk/preferences.blp:12 data/gtk/preferences.blp:72
#: data/gtk/preferences.blp:278
msgid "Behavior"
msgstr ""
#: data/gtk/preferences.blp:15
msgid "Exit After Launching Games"
msgstr "启动游戏后退出"
#: data/gtk/preferences.blp:19
msgid "Cover Image Launches Game"
msgstr ""
#: data/gtk/preferences.blp:20
msgid "Swaps the behavior of the cover image and the play button"
msgstr ""
#: data/gtk/preferences.blp:25 cartridges/details_window.py:85
msgid "Images"
msgstr ""
#: data/gtk/preferences.blp:28
msgid "High Quality Images"
msgstr ""
#: data/gtk/preferences.blp:29
msgid "Save game covers losslessly at the cost of storage"
msgstr ""
#: data/gtk/preferences.blp:34
msgid "Danger Zone"
msgstr ""
#: data/gtk/preferences.blp:37
msgid "Remove All Games"
msgstr ""
#: data/gtk/preferences.blp:75
msgid "Remove Uninstalled Games"
msgstr ""
#: data/gtk/preferences.blp:80
msgid "Sources"
msgstr ""
#: data/gtk/preferences.blp:83 cartridges/importer/steam_source.py:114
msgid "Steam"
msgstr "Steam"
#: data/gtk/preferences.blp:87 data/gtk/preferences.blp:104
#: data/gtk/preferences.blp:141 data/gtk/preferences.blp:174
#: data/gtk/preferences.blp:191 data/gtk/preferences.blp:208
#: data/gtk/preferences.blp:225 data/gtk/preferences.blp:242
msgid "Install Location"
msgstr ""
#: data/gtk/preferences.blp:100 cartridges/importer/lutris_source.py:92
msgid "Lutris"
msgstr "Lutris"
#: data/gtk/preferences.blp:116
msgid "Cache Location"
msgstr ""
#: data/gtk/preferences.blp:128
msgid "Import Steam Games"
msgstr "导入 Steam 游戏"
#: data/gtk/preferences.blp:132
msgid "Import Flatpak Games"
msgstr "导入 Flatpak 游戏"
#: data/gtk/preferences.blp:137 cartridges/importer/heroic_source.py:355
msgid "Heroic"
msgstr "Heroic"
#: data/gtk/preferences.blp:153
msgid "Import Epic Games"
msgstr "导入 Epic 游戏"
#: data/gtk/preferences.blp:157
msgid "Import GOG Games"
msgstr "导入 GOG 游戏"
#: data/gtk/preferences.blp:161
msgid "Import Amazon Games"
msgstr ""
#: data/gtk/preferences.blp:165
msgid "Import Sideloaded Games"
msgstr ""
#: data/gtk/preferences.blp:170 cartridges/importer/bottles_source.py:86
msgid "Bottles"
msgstr ""
#: data/gtk/preferences.blp:187 cartridges/importer/itch_source.py:81
msgid "itch"
msgstr ""
#: data/gtk/preferences.blp:204 cartridges/importer/legendary_source.py:97
msgid "Legendary"
msgstr ""
#: data/gtk/preferences.blp:221 cartridges/importer/retroarch_source.py:142
msgid "RetroArch"
msgstr ""
#: data/gtk/preferences.blp:238 cartridges/importer/flatpak_source.py:118
msgid "Flatpak"
msgstr ""
#: data/gtk/preferences.blp:254
msgid "Import Game Launchers"
msgstr ""
#: data/gtk/preferences.blp:259 cartridges/importer/desktop_source.py:215
msgid "Desktop Entries"
msgstr ""
#: data/gtk/preferences.blp:266
msgid "SteamGridDB"
msgstr ""
#: data/gtk/preferences.blp:270
msgid "Authentication"
msgstr ""
#: data/gtk/preferences.blp:273
msgid "API Key"
msgstr ""
#: data/gtk/preferences.blp:281
msgid "Use SteamGridDB"
msgstr ""
#: data/gtk/preferences.blp:282
msgid "Download images when adding or importing games"
msgstr ""
#: data/gtk/preferences.blp:286
msgid "Prefer Over Official Images"
msgstr ""
#: data/gtk/preferences.blp:290
msgid "Prefer Animated Images"
msgstr ""
#: data/gtk/preferences.blp:296
msgid "Update Covers"
msgstr ""
#: data/gtk/preferences.blp:297
msgid "Fetch covers for games already in your library"
msgstr ""
#: data/gtk/preferences.blp:301
msgid "Update"
msgstr ""
#: data/gtk/window.blp:6 data/gtk/window.blp:14
msgid "No Games Found"
msgstr ""
#: data/gtk/window.blp:7 data/gtk/window.blp:15
msgid "Try a different search."
msgstr ""
#: data/gtk/window.blp:21
msgid "No Games"
msgstr ""
#: data/gtk/window.blp:22
msgid "Use the + button to add games."
msgstr ""
#: data/gtk/window.blp:40
msgid "No Hidden Games"
msgstr ""
#: data/gtk/window.blp:41
msgid "Games you hide will appear here."
msgstr ""
#: data/gtk/window.blp:75 data/gtk/window.blp:106 cartridges/main.py:207
msgid "All Games"
msgstr ""
#: data/gtk/window.blp:126 cartridges/main.py:209
msgid "Added"
msgstr ""
#: data/gtk/window.blp:141
msgid "Imported"
msgstr ""
#: data/gtk/window.blp:229
msgid "Hidden Games"
msgstr ""
#: data/gtk/window.blp:339
msgid "Game Title"
msgstr ""
#: data/gtk/window.blp:396
msgid "Play"
msgstr ""
#: data/gtk/window.blp:473
msgid "Sort"
msgstr ""
#: data/gtk/window.blp:476
msgid "A-Z"
msgstr ""
#: data/gtk/window.blp:482
msgid "Z-A"
msgstr ""
#: data/gtk/window.blp:488
msgid "Newest"
msgstr ""
#: data/gtk/window.blp:494
msgid "Oldest"
msgstr ""
#: data/gtk/window.blp:500
msgid "Last Played"
msgstr ""
#: data/gtk/window.blp:507
msgid "Show Hidden"
msgstr ""
#: data/gtk/window.blp:525
msgid "About Cartridges"
msgstr ""
#. The variable is the title of the game
#: cartridges/main.py:186 cartridges/game.py:125
msgid "{} launched"
msgstr ""
#. Translators: Replace this with your name for it to show up in the about window
#: cartridges/main.py:249
msgid "translator_credits"
msgstr ""
#. The variable is the date when the game was added
#: cartridges/window.py:373
msgid "Added: {}"
msgstr ""
#: cartridges/window.py:376
msgid "Never"
msgstr ""
#. The variable is the date when the game was last played
#: cartridges/window.py:380
msgid "Last played: {}"
msgstr ""
#: cartridges/details_window.py:76
msgid "Apply"
msgstr ""
#: cartridges/details_window.py:82
msgid "Add New Game"
msgstr ""
#: cartridges/details_window.py:83
msgid "Add"
msgstr ""
#: cartridges/details_window.py:93
msgid "Executables"
msgstr ""
#. Translate this string as you would translate "file"
#: cartridges/details_window.py:108
msgid "file.txt"
msgstr ""
#. As in software
#: cartridges/details_window.py:110
msgid "program"
msgstr ""
#. Translate this string as you would translate "path to {}"
#: cartridges/details_window.py:115 cartridges/details_window.py:117
msgid "C:\\path\\to\\{}"
msgstr ""
#. Translate this string as you would translate "path to {}"
#: cartridges/details_window.py:121 cartridges/details_window.py:123
msgid "/path/to/{}"
msgstr ""
#: cartridges/details_window.py:128
msgid ""
"To launch the executable \"{}\", use the command:\n"
"\n"
"<tt>\"{}\"</tt>\n"
"\n"
"To open the file \"{}\" with the default application, use:\n"
"\n"
"<tt>{} \"{}\"</tt>\n"
"\n"
"If the path contains spaces, make sure to wrap it in double quotes!"
msgstr ""
#: cartridges/details_window.py:171 cartridges/details_window.py:177
msgid "Couldn't Add Game"
msgstr ""
#: cartridges/details_window.py:171 cartridges/details_window.py:213
msgid "Game title cannot be empty."
msgstr ""
#: cartridges/details_window.py:177 cartridges/details_window.py:221
msgid "Executable cannot be empty."
msgstr ""
#: cartridges/details_window.py:212 cartridges/details_window.py:220
msgid "Couldn't Apply Preferences"
msgstr ""
#. The variable is the title of the game
#: cartridges/game.py:139
msgid "{} hidden"
msgstr ""
#: cartridges/game.py:139
msgid "{} unhidden"
msgstr ""
#. The variable is the title of the game
#. The variable is the number of games removed
#: cartridges/game.py:153 cartridges/importer/importer.py:391
msgid "{} removed"
msgstr ""
#: cartridges/preferences.py:124
msgid "All games removed"
msgstr ""
#: cartridges/preferences.py:172
msgid ""
"An API key is required to use SteamGridDB. You can generate one {}here{}."
msgstr ""
#: cartridges/preferences.py:184
msgid "Downloading covers…"
msgstr ""
#: cartridges/preferences.py:203
msgid "Covers updated"
msgstr ""
#: cartridges/preferences.py:335
msgid "Installation Not Found"
msgstr ""
#: cartridges/preferences.py:336
msgid "Select a valid directory."
msgstr ""
#: cartridges/preferences.py:372 cartridges/importer/importer.py:317
msgid "Warning"
msgstr ""
#: cartridges/preferences.py:406
msgid "Invalid Directory"
msgstr ""
#: cartridges/preferences.py:412
msgid "Set Location"
msgstr ""
#: cartridges/utils/create_dialog.py:33 cartridges/importer/importer.py:318
msgid "Dismiss"
msgstr ""
#: cartridges/importer/importer.py:145
msgid "Importing Games…"
msgstr ""
#: cartridges/importer/importer.py:338
msgid "The following errors occured during import:"
msgstr ""
#: cartridges/importer/importer.py:367
msgid "No new games found"
msgstr ""
#: cartridges/importer/importer.py:379
msgid "1 game imported"
msgstr ""
#. The variable is the number of games
#: cartridges/importer/importer.py:383
msgid "{} games imported"
msgstr ""
#. A single game removed
#: cartridges/importer/importer.py:387
msgid "1 removed"
msgstr ""
#. The variable is the name of the source
#: cartridges/importer/location.py:33
msgid "Select the {} cache directory."
msgstr ""
#. The variable is the name of the source
#: cartridges/importer/location.py:35
msgid "Select the {} configuration directory."
msgstr ""
#. The variable is the name of the source
#: cartridges/importer/location.py:37
msgid "Select the {} data directory."
msgstr ""
#: cartridges/importer/retroarch_source.py:129
msgid "No RetroArch Core Selected"
msgstr ""
#. The variable is a newline separated list of playlists
#: cartridges/importer/retroarch_source.py:131
msgid "The following playlists have no default core:"
msgstr ""
#: cartridges/importer/retroarch_source.py:133
msgid "Games with no core selected were not imported"
msgstr ""
#: cartridges/store/managers/sgdb_manager.py:46
msgid "Couldn't Authenticate SteamGridDB"
msgstr ""
#: cartridges/store/managers/sgdb_manager.py:47
msgid "Verify your API key in preferences"
msgstr ""

View File

@@ -165,7 +165,11 @@ class SearchCartridgesService(Server, Gio.Application):
continue continue
try: try:
if any({data["hidden"], data["blacklisted"], data["removed"]}): # Use .get for compatibility with pre-2.0 games
if any(
{data.get("hidden"), data.get("blacklisted"), data.get("removed")}
):
print(f"Skipped {game_file.name}")
continue continue
self.games[data["game_id"]] = (data["name"], data["developer"]) self.games[data["game_id"]] = (data["name"], data["developer"])
@@ -272,7 +276,6 @@ class SearchCartridgesService(Server, Gio.Application):
search = " ".join(terms).lower() search = " ".join(terms).lower()
try: try:
for game_id, data in self.games.items(): for game_id, data in self.games.items():
print(game_id, data)
if search in data[0].lower(): if search in data[0].lower():
game_ids.append(game_id) game_ids.append(game_id)
continue continue