Compare commits

..

23 Commits

Author SHA1 Message Date
kramo
afd1972a76 v2.8.1 2024-03-23 20:53:26 +01:00
kramo
8a7875b843 Update copyrights 2024-03-23 20:45:23 +01:00
kramo
aec8a4efa7 Fix #238 2024-03-23 20:28:36 +01:00
kramo
2b93a1feeb Fix #239 2024-03-23 20:10:37 +01:00
kramo
5306b7c81c Update copyright dates 2024-03-20 15:15:36 +01:00
kramo
c5675efa48 v2.8 2024-03-20 15:05:49 +01:00
kramo
83399c7882 Remove incorrect shortcut from hidden search entry 2024-03-20 15:05:07 +01:00
kramo
04900c7acf Temporarily disable Windows CI 2024-03-20 14:58:32 +01:00
kramo
3ae6b40773 Merge pull request #228 from kra-mo/libadwaita-1.5
Port to Libadwaita 1.5 widgets
2024-03-20 14:48:09 +01:00
kramo
4a5ebb3221 Merge branch 'main' into libadwaita-1.5 2024-03-20 14:47:29 +01:00
kramo
778caead01 Revert "Futile effort to try and fix CI"
This reverts commit 2b7f520f2a.
2024-03-16 11:16:42 +01:00
kramo
2b7f520f2a Futile effort to try and fix CI 2024-03-16 11:11:07 +01:00
kramo
c80f5271da Update CI to Flathub 46 runtime 2024-03-16 11:06:59 +01:00
kramo
f7cf7c4a3b Merge pull request #236 from yakushabb/yakushabb-patch-1
Update developer ID
2024-03-16 11:04:02 +01:00
Sabri Ünal
c4aa903752 Update developer ID
Appstream decided to use reverse DNS for developer IDds.

More information: ximion/appstream#575
2024-03-11 17:22:29 +03:00
Weblate (bot)
4559516b5a Translations update from Hosted Weblate (#235)
* Translated using Weblate (German)

Currently translated at 100.0% (141 of 141 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Konstantin Tutsch <mail@konstantintutsch.com>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/de/
Translation: Cartridges/Cartridges

* Translated using Weblate (Italian)

Currently translated at 99.2% (140 of 141 strings)

Co-authored-by: Andrea Costola <lamaildiandreac@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/it/
Translation: Cartridges/Cartridges

* Translated using Weblate (Spanish)

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

* Translated using Weblate (Korean)

Currently translated at 100.0% (141 of 141 strings)

Co-authored-by: Seong-ho Cho <darkcircle.0426@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/cartridges/cartridges/ko/
Translation: Cartridges/Cartridges

---------

Co-authored-by: Konstantin Tutsch <mail@konstantintutsch.com>
Co-authored-by: Andrea Costola <lamaildiandreac@gmail.com>
Co-authored-by: Óscar Fernández Díaz <oscfdezdz@users.noreply.hosted.weblate.org>
Co-authored-by: Seong-ho Cho <darkcircle.0426@gmail.com>
2024-03-06 12:33:32 +01:00
kramo
d4dbf9e589 v2.7.4 2024-03-06 12:32:13 +01:00
kramo
1f7c9a8b0b Add branding colors to metainfo 2024-02-27 22:29:41 +01:00
kramo
725267c7b9 Update GNOME CoC URL 2024-02-25 11:18:46 +01:00
kramo
35d85a607f Port to adaptive dialogs 2024-02-17 09:58:03 +01:00
kramo
b086766b77 kramo.hu → kramo.page (#230) 2024-01-28 20:07:56 +01:00
kramo
303f2a2063 Fix CI, escape not working 2024-01-27 09:34:30 +01:00
kramo
3e1ef88a1f Port to libadwaita 1.5 widgets 2024-01-27 08:52:50 +01:00
24 changed files with 308 additions and 318 deletions

View File

@@ -22,39 +22,39 @@ jobs:
bundle: hu.kramo.Cartridges.Devel.flatpak bundle: hu.kramo.Cartridges.Devel.flatpak
manifest-path: flatpak/hu.kramo.Cartridges.Devel.json manifest-path: flatpak/hu.kramo.Cartridges.Devel.json
windows: # windows:
name: Windows # name: Windows
runs-on: windows-latest # runs-on: windows-latest
steps: # steps:
- name: Checkout # - name: Checkout
uses: actions/checkout@v4 # uses: actions/checkout@v4
- name: Setup MSYS2 # - name: Setup MSYS2
uses: msys2/setup-msys2@v2 # uses: msys2/setup-msys2@v2
with: # with:
msystem: UCRT64 # msystem: UCRT64
update: true # update: true
install: mingw-w64-ucrt-x86_64-gtk4 mingw-w64-ucrt-x86_64-libadwaita mingw-w64-ucrt-x86_64-python-gobject mingw-w64-ucrt-x86_64-python-yaml mingw-w64-ucrt-x86_64-python-requests mingw-w64-ucrt-x86_64-python-pillow mingw-w64-ucrt-x86_64-desktop-file-utils mingw-w64-ucrt-x86_64-ca-certificates mingw-w64-ucrt-x86_64-meson git # install: mingw-w64-ucrt-x86_64-gtk4 mingw-w64-ucrt-x86_64-libadwaita mingw-w64-ucrt-x86_64-python-gobject mingw-w64-ucrt-x86_64-python-yaml mingw-w64-ucrt-x86_64-python-requests mingw-w64-ucrt-x86_64-python-pillow mingw-w64-ucrt-x86_64-desktop-file-utils mingw-w64-ucrt-x86_64-ca-certificates mingw-w64-ucrt-x86_64-meson git
- name: Compile # - name: Compile
shell: msys2 {0} # shell: msys2 {0}
run: | # run: |
meson setup _build # meson setup _build
ninja -C _build install # ninja -C _build install
pacman --noconfirm -Rs mingw-w64-ucrt-x86_64-desktop-file-utils mingw-w64-ucrt-x86_64-meson git # pacman --noconfirm -Rs mingw-w64-ucrt-x86_64-desktop-file-utils mingw-w64-ucrt-x86_64-meson git
find /ucrt64/share/locale/ -type f ! -name "*cartridges.mo" -delete # find /ucrt64/share/locale/ -type f ! -name "*cartridges.mo" -delete
- name: Test # - name: Test
shell: msys2 {0} # shell: msys2 {0}
run: | # run: |
set +e # set +e
timeout 2 cartridges; [ "$?" -eq "124" ] # timeout 2 cartridges; [ "$?" -eq "124" ]
- name: Inno Setup # - name: Inno Setup
run: iscc ".\_build\windows\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/windows/Output/Cartridges Setup.exe # path: _build/windows/Output/Cartridges Setup.exe

View File

@@ -39,7 +39,7 @@ jobs:
- name: Publish release - name: Publish release
uses: softprops/action-gh-release@v0.1.15 uses: softprops/action-gh-release@v0.1.15
with: with:
files: Windows Installer/Cartridges Setup.exe # files: Windows Installer/Cartridges Setup.exe
fail_on_unmatched_files: true # fail_on_unmatched_files: true
tag_name: ${{ steps.get_tag_name.outputs.tag_name }} tag_name: ${{ steps.get_tag_name.outputs.tag_name }}
body_path: release_notes body_path: release_notes

View File

@@ -1,3 +1,3 @@
The project follows the [GNOME Code of Conduct](https://wiki.gnome.org/Foundation/CodeOfConduct). The project follows the [GNOME Code of Conduct](https://conduct.gnome.org/).
If you believe that someone is violating the Code of Conduct, or have any other concerns, please contact us via [cartridges-community@kramo.page](mailto:cartridges-community@kramo.page). If you believe that someone is violating the Code of Conduct, or have any other concerns, please contact us via [cartridges-community@kramo.page](mailto:cartridges-community@kramo.page).

View File

@@ -82,7 +82,7 @@ Note: Windows might present you with a warning when trying to install the app. T
### Winget ### Winget
Install the latest release with the command: `winget install cartridges`. Install the latest release with the command: `winget install cartridges`.
## Building manually ## Building manually
@@ -96,6 +96,6 @@ Thanks to [Weblate](https://weblate.org/) for hosting our translations!
# Code of Conduct # Code of Conduct
The project follows the [GNOME Code of Conduct](https://wiki.gnome.org/Foundation/CodeOfConduct). The project follows the [GNOME Code of Conduct](https://conduct.gnome.org/).
See [CODE_OF_CONDUCT.md](https://github.com/kra-mo/cartridges/blob/main/CODE_OF_CONDUCT.md). See [CODE_OF_CONDUCT.md](https://github.com/kra-mo/cartridges/blob/main/CODE_OF_CONDUCT.md).

View File

@@ -1,6 +1,6 @@
# details_window.py # details_window.py
# #
# Copyright 2022-2023 kramo # Copyright 2022-2024 kramo
# #
# This program is free software: you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by
@@ -36,9 +36,9 @@ from cartridges.utils.create_dialog import create_dialog
from cartridges.utils.save_cover import convert_cover, save_cover from cartridges.utils.save_cover import convert_cover, save_cover
@Gtk.Template(resource_path=shared.PREFIX + "/gtk/details-window.ui") @Gtk.Template(resource_path=shared.PREFIX + "/gtk/details-dialog.ui")
class DetailsWindow(Adw.Window): class DetailsDialog(Adw.Dialog):
__gtype_name__ = "DetailsWindow" __gtype_name__ = "DetailsDialog"
cover_overlay = Gtk.Template.Child() cover_overlay = Gtk.Template.Child()
cover = Gtk.Template.Child() cover = Gtk.Template.Child()
@@ -61,12 +61,9 @@ class DetailsWindow(Adw.Window):
def __init__(self, game: Optional[Game] = None, **kwargs: Any): def __init__(self, game: Optional[Game] = None, **kwargs: Any):
super().__init__(**kwargs) super().__init__(**kwargs)
self.game: Game = game self.game: Game = game
self.game_cover: GameCover = GameCover({self.cover}) self.game_cover: GameCover = GameCover({self.cover})
self.set_transient_for(shared.win)
if self.game: if self.game:
self.set_title(_("Game Details")) self.set_title(_("Game Details"))
self.name.set_text(self.game.name) self.name.set_text(self.game.name)
@@ -152,7 +149,6 @@ class DetailsWindow(Adw.Window):
self.executable.connect("entry-activated", self.apply_preferences) self.executable.connect("entry-activated", self.apply_preferences)
self.set_focus(self.name) self.set_focus(self.name)
self.present()
def delete_pixbuf(self, *_args: Any) -> None: def delete_pixbuf(self, *_args: Any) -> None:
self.game_cover.new_cover() self.game_cover.new_cover()
@@ -325,7 +321,7 @@ class DetailsWindow(Adw.Window):
self.executable.set_text(shlex.quote(path)) self.executable.set_text(shlex.quote(path))
def choose_executable(self, *_args: Any) -> None: def choose_executable(self, *_args: Any) -> None:
self.exec_file_dialog.open(self, None, self.set_executable) self.exec_file_dialog.open(self.get_root(), None, self.set_executable)
def choose_cover(self, *_args: Any) -> None: def choose_cover(self, *_args: Any) -> None:
self.image_file_dialog.open(self, None, self.set_cover) self.image_file_dialog.open(self.get_root(), None, self.set_cover)

View File

@@ -40,7 +40,7 @@ class Importer(ErrorProducer):
progressbar: Gtk.ProgressBar progressbar: Gtk.ProgressBar
import_statuspage: Adw.StatusPage import_statuspage: Adw.StatusPage
import_dialog: Adw.MessageDialog import_dialog: Adw.AlertDialog
summary_toast: Optional[Adw.Toast] = None summary_toast: Optional[Adw.Toast] = None
sources: set[Source] sources: set[Source]
@@ -53,7 +53,7 @@ class Importer(ErrorProducer):
removed_game_ids: set[str] removed_game_ids: set[str]
imported_game_ids: set[str] imported_game_ids: set[str]
close_req_id: int close_attempt_id: int
def __init__(self) -> None: def __init__(self) -> None:
super().__init__() super().__init__()
@@ -145,20 +145,17 @@ class Importer(ErrorProducer):
title=_("Importing Games…"), title=_("Importing Games…"),
child=self.progressbar, child=self.progressbar,
) )
self.import_dialog = Adw.Window( self.import_dialog = Adw.Dialog(
content=self.import_statuspage, child=self.import_statuspage,
modal=True, content_width=350,
default_width=350, can_close=False,
default_height=-1,
transient_for=shared.win,
deletable=False,
) )
self.close_req_id = self.import_dialog.connect( self.close_attempt_id = self.import_dialog.connect(
"close-request", lambda *_: shared.win.close() "close-attempt", lambda *_: shared.win.close()
) )
self.import_dialog.present() self.import_dialog.present(shared.win)
def source_task_thread_func(self, data: tuple) -> None: def source_task_thread_func(self, data: tuple) -> None:
"""Source import task code""" """Source import task code"""
@@ -282,9 +279,9 @@ class Importer(ErrorProducer):
self.imported_game_ids = shared.store.new_game_ids self.imported_game_ids = shared.store.new_game_ids
shared.store.new_game_ids = set() shared.store.new_game_ids = set()
shared.store.duplicate_game_ids = set() shared.store.duplicate_game_ids = set()
# Disconnect the close-request signal that closes the main window # Disconnect the close-attempt signal that closes the main window
self.import_dialog.disconnect(self.close_req_id) self.import_dialog.disconnect(self.close_attempt_id)
self.import_dialog.close() self.import_dialog.force_close()
self.__class__.summary_toast = self.create_summary_toast() self.__class__.summary_toast = self.create_summary_toast()
self.create_error_dialog() self.create_error_dialog()
shared.win.get_application().lookup_action("import").set_enabled(True) shared.win.get_application().lookup_action("import").set_enabled(True)
@@ -317,13 +314,12 @@ class Importer(ErrorProducer):
return return
# Create error dialog # Create error dialog
dialog = Adw.MessageDialog() dialog = Adw.AlertDialog()
dialog.set_heading(_("Warning")) dialog.set_heading(_("Warning"))
dialog.add_response("close", _("Dismiss")) dialog.add_response("close", _("Dismiss"))
dialog.add_response("open_preferences_import", _("Preferences")) dialog.add_response("open_preferences_import", _("Preferences"))
dialog.set_default_response("open_preferences_import") dialog.set_default_response("open_preferences_import")
dialog.connect("response", self.dialog_response_callback) dialog.connect("response", self.dialog_response_callback)
dialog.set_transient_for(shared.win)
if len(errors) == 1: if len(errors) == 1:
dialog.set_heading((error := next(iter(errors)))[0]) dialog.set_heading((error := next(iter(errors)))[0])
@@ -342,7 +338,7 @@ class Importer(ErrorProducer):
dialog.set_body(_("The following errors occured during import:")) dialog.set_body(_("The following errors occured during import:"))
dialog.set_extra_child(list_box) dialog.set_extra_child(list_box)
dialog.present() dialog.present(shared.win)
def undo_import(self, *_args: Any) -> None: def undo_import(self, *_args: Any) -> None:
for game_id in self.imported_game_ids: for game_id in self.imported_game_ids:
@@ -407,7 +403,7 @@ class Importer(ErrorProducer):
self, self,
page_name: Optional[str] = None, page_name: Optional[str] = None,
expander_row: Optional[Adw.ExpanderRow] = None, expander_row: Optional[Adw.ExpanderRow] = None,
) -> Adw.PreferencesWindow: ) -> Adw.PreferencesDialog:
return shared.win.get_application().on_preferences_action( return shared.win.get_application().on_preferences_action(
page_name=page_name, expander_row=expander_row page_name=page_name, expander_row=expander_row
) )

View File

@@ -1,6 +1,6 @@
# lutris_source.py # lutris_source.py
# #
# Copyright 2022-2023 kramo # Copyright 2022-2024 kramo
# Copyright 2023 Geoffrey Coulaud # Copyright 2023 Geoffrey Coulaud
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@@ -54,6 +54,9 @@ class LutrisSourceIterable(SourceIterable):
db_path = copy_db(self.source.locations.data["pga.db"]) db_path = copy_db(self.source.locations.data["pga.db"])
connection = connect(db_path) connection = connect(db_path)
cursor = connection.execute(request, params) cursor = connection.execute(request, params)
coverart_is_dir = (
coverart_path := self.source.locations.data.root / "coverart"
).is_dir()
# Create games from the DB results # Create games from the DB results
for row in cursor: for row in cursor:
@@ -69,10 +72,12 @@ class LutrisSourceIterable(SourceIterable):
"executable": self.source.make_executable(game_id=row[0]), "executable": self.source.make_executable(game_id=row[0]),
} }
game = Game(values) game = Game(values)
additional_data = {}
# Get official image path # Get official image path
image_path = self.source.locations.data["coverart"] / f"{row[2]}.jpg" if coverart_is_dir:
additional_data = {"local_image_path": image_path} image_path = coverart_path / f"{row[2]}.jpg"
additional_data["local_image_path"] = image_path
yield (game, additional_data) yield (game, additional_data)
@@ -111,7 +116,6 @@ class LutrisSource(URLExecutableSource):
), ),
paths={ paths={
"pga.db": LocationSubPath("pga.db"), "pga.db": LocationSubPath("pga.db"),
"coverart": LocationSubPath("coverart", True),
}, },
invalid_subtitle=Location.DATA_INVALID_SUBTITLE, invalid_subtitle=Location.DATA_INVALID_SUBTITLE,
) )

View File

@@ -1,6 +1,6 @@
# main.py # main.py
# #
# Copyright 2022-2023 kramo # Copyright 2022-2024 kramo
# #
# This program is free software: you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by
@@ -34,7 +34,7 @@ gi.require_version("Adw", "1")
from gi.repository import Adw, Gio, GLib, Gtk from gi.repository import Adw, Gio, GLib, Gtk
from cartridges import shared from cartridges import shared
from cartridges.details_window import DetailsWindow from cartridges.details_dialog import DetailsDialog
from cartridges.game import Game from cartridges.game import Game
from cartridges.importer.bottles_source import BottlesSource from cartridges.importer.bottles_source import BottlesSource
from cartridges.importer.desktop_source import DesktopSource from cartridges.importer.desktop_source import DesktopSource
@@ -47,7 +47,7 @@ from cartridges.importer.lutris_source import LutrisSource
from cartridges.importer.retroarch_source import RetroarchSource from cartridges.importer.retroarch_source import RetroarchSource
from cartridges.importer.steam_source import SteamSource from cartridges.importer.steam_source import SteamSource
from cartridges.logging.setup import log_system_info, setup_logging from cartridges.logging.setup import log_system_info, setup_logging
from cartridges.preferences import PreferencesWindow from cartridges.preferences import CartridgesPreferences
from cartridges.store.managers.cover_manager import CoverManager from cartridges.store.managers.cover_manager import CoverManager
from cartridges.store.managers.display_manager import DisplayManager from cartridges.store.managers.display_manager import DisplayManager
from cartridges.store.managers.file_manager import FileManager from cartridges.store.managers.file_manager import FileManager
@@ -153,7 +153,6 @@ class CartridgesApplication(Adw.Application):
("go_to_parent", ("<alt>Up",), shared.win), ("go_to_parent", ("<alt>Up",), shared.win),
("go_home", ("<alt>Home",), shared.win), ("go_home", ("<alt>Home",), shared.win),
("toggle_search", ("<primary>f",), shared.win), ("toggle_search", ("<primary>f",), shared.win),
("escape", ("Escape",), shared.win),
("undo", ("<primary>z",), shared.win), ("undo", ("<primary>z",), shared.win),
("open_menu", ("F10",), shared.win), ("open_menu", ("F10",), shared.win),
("close", ("<primary>w",), shared.win), ("close", ("<primary>w",), shared.win),
@@ -246,10 +245,9 @@ class CartridgesApplication(Adw.Application):
debug_str += log_file.read() debug_str += log_file.read()
log_file.close() log_file.close()
about = Adw.AboutWindow.new_from_appdata( about = Adw.AboutDialog.new_from_appdata(
shared.PREFIX + "/" + shared.APP_ID + ".metainfo.xml", shared.VERSION shared.PREFIX + "/" + shared.APP_ID + ".metainfo.xml", shared.VERSION
) )
about.set_transient_for(shared.win)
about.set_developers( about.set_developers(
( (
"kramo https://kramo.page", "kramo https://kramo.page",
@@ -264,7 +262,7 @@ class CartridgesApplication(Adw.Application):
) )
) )
about.set_designers(("kramo https://kramo.page",)) about.set_designers(("kramo https://kramo.page",))
about.set_copyright("© 2022-2023 kramo") about.set_copyright("© 2022-2024 kramo")
# 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
about.set_translator_credits = (_("translator_credits"),) about.set_translator_credits = (_("translator_credits"),)
about.set_debug_info(debug_str) about.set_debug_info(debug_str)
@@ -275,7 +273,7 @@ class CartridgesApplication(Adw.Application):
Gtk.License.CUSTOM, Gtk.License.CUSTOM,
"Steam and the Steam logo are trademarks and/or registered trademarks of Valve Corporation in the U.S. and/or other countries.", # pylint: disable=line-too-long "Steam and the Steam logo are trademarks and/or registered trademarks of Valve Corporation in the U.S. and/or other countries.", # pylint: disable=line-too-long
) )
about.present() about.present(shared.win)
def on_preferences_action( def on_preferences_action(
self, self,
@@ -284,12 +282,12 @@ class CartridgesApplication(Adw.Application):
page_name: Optional[str] = None, page_name: Optional[str] = None,
expander_row: Optional[str] = None, expander_row: Optional[str] = None,
) -> CartridgesWindow: ) -> CartridgesWindow:
win = PreferencesWindow() win = CartridgesPreferences()
if page_name: if page_name:
win.set_visible_page_name(page_name) win.set_visible_page_name(page_name)
if expander_row: if expander_row:
getattr(win, expander_row).set_expanded(True) getattr(win, expander_row).set_expanded(True)
win.present() win.present(shared.win)
return win return win
@@ -300,10 +298,10 @@ class CartridgesApplication(Adw.Application):
shared.win.active_game.toggle_hidden() shared.win.active_game.toggle_hidden()
def on_edit_game_action(self, *_args: Any) -> None: def on_edit_game_action(self, *_args: Any) -> None:
DetailsWindow(shared.win.active_game) DetailsDialog(shared.win.active_game).present(shared.win)
def on_add_game_action(self, *_args: Any) -> None: def on_add_game_action(self, *_args: Any) -> None:
DetailsWindow() DetailsDialog().present(shared.win)
def on_import_action(self, *_args: Any) -> None: def on_import_action(self, *_args: Any) -> None:
shared.importer = Importer() shared.importer = Importer()

View File

@@ -18,7 +18,7 @@ install_data(
'main.py', 'main.py',
'window.py', 'window.py',
'preferences.py', 'preferences.py',
'details_window.py', 'details_dialog.py',
'game.py', 'game.py',
'game_cover.py', 'game_cover.py',
configure_file( configure_file(
@@ -28,4 +28,4 @@ install_data(
) )
], ],
install_dir: moduledir install_dir: moduledir
) )

View File

@@ -43,8 +43,8 @@ from cartridges.utils.create_dialog import create_dialog
@Gtk.Template(resource_path=shared.PREFIX + "/gtk/preferences.ui") @Gtk.Template(resource_path=shared.PREFIX + "/gtk/preferences.ui")
class PreferencesWindow(Adw.PreferencesWindow): class CartridgesPreferences(Adw.PreferencesDialog):
__gtype_name__ = "PreferencesWindow" __gtype_name__ = "CartridgesPreferences"
general_page = Gtk.Template.Child() general_page = Gtk.Template.Child()
import_page = Gtk.Template.Child() import_page = Gtk.Template.Child()
@@ -121,7 +121,6 @@ class PreferencesWindow(Adw.PreferencesWindow):
def __init__(self, **kwargs: Any) -> None: def __init__(self, **kwargs: Any) -> None:
super().__init__(**kwargs) super().__init__(**kwargs)
self.file_chooser = Gtk.FileDialog() self.file_chooser = Gtk.FileDialog()
self.set_transient_for(shared.win)
self.toast = Adw.Toast.new(_("All games removed")) self.toast = Adw.Toast.new(_("All games removed"))
self.toast.set_button_label(_("Undo")) self.toast.set_button_label(_("Undo"))

View File

@@ -28,12 +28,12 @@ def create_dialog(
body: str, body: str,
extra_option: Optional[str] = None, extra_option: Optional[str] = None,
extra_label: Optional[str] = None, extra_label: Optional[str] = None,
) -> Adw.MessageDialog: ) -> Adw.AlertDialog:
dialog = Adw.MessageDialog.new(win, heading, body) dialog = Adw.AlertDialog.new(heading, body)
dialog.add_response("dismiss", _("Dismiss")) dialog.add_response("dismiss", _("Dismiss"))
if extra_option: if extra_option:
dialog.add_response(extra_option, _(extra_label)) dialog.add_response(extra_option, _(extra_label))
dialog.present() dialog.choose(win)
return dialog return dialog

View File

@@ -469,15 +469,6 @@ class CartridgesWindow(Adw.ApplicationWindow):
search_entry.set_text("") search_entry.set_text("")
def on_escape_action(self, *_args: Any) -> None:
if (
self.get_focus() == self.search_entry.get_focus_child()
or self.hidden_search_entry.get_focus_child()
):
self.on_toggle_search_action()
else:
self.navigation_view.pop()
def show_details_page_search(self, widget: Gtk.Widget) -> None: def show_details_page_search(self, widget: Gtk.Widget) -> None:
library = ( library = (
self.hidden_library if widget == self.hidden_search_entry else self.library self.hidden_library if widget == self.hidden_search_entry else self.library

View File

@@ -6,7 +6,7 @@
<file preprocess="xml-stripblanks">gtk/help-overlay.ui</file> <file preprocess="xml-stripblanks">gtk/help-overlay.ui</file>
<file preprocess="xml-stripblanks">gtk/game.ui</file> <file preprocess="xml-stripblanks">gtk/game.ui</file>
<file preprocess="xml-stripblanks">gtk/preferences.ui</file> <file preprocess="xml-stripblanks">gtk/preferences.ui</file>
<file preprocess="xml-stripblanks">gtk/details-window.ui</file> <file preprocess="xml-stripblanks">gtk/details-dialog.ui</file>
<file alias="style.css">gtk/style.css</file> <file alias="style.css">gtk/style.css</file>
<file alias="style-dark.css">gtk/style-dark.css</file> <file alias="style-dark.css">gtk/style-dark.css</file>
<file>library_placeholder.svg</file> <file>library_placeholder.svg</file>

View File

@@ -1,17 +1,8 @@
using Gtk 4.0; using Gtk 4.0;
using Adw 1; using Adw 1;
template $DetailsWindow : Adw.Window { template $DetailsDialog : Adw.Dialog {
default-width: 480; // Same as Nautilus' properties window content-width: 480;
default-height: -1;
modal: true;
ShortcutController {
Shortcut {
trigger: "Escape";
action: "action(window.close)";
}
}
Adw.ToolbarView { Adw.ToolbarView {
@@ -85,7 +76,7 @@ template $DetailsWindow : Adw.Window {
Picture cover { Picture cover {
width-request: 200; width-request: 200;
height-request: 300; height-request: 300;
styles [ styles [
"card" "card"
] ]
@@ -149,4 +140,4 @@ template $DetailsWindow : Adw.Window {
} }
} }
} }
} }

View File

@@ -1,7 +1,8 @@
using Gtk 4.0; using Gtk 4.0;
using Adw 1; using Adw 1;
template $PreferencesWindow : Adw.PreferencesWindow { template $CartridgesPreferences : Adw.PreferencesDialog {
search-enabled: true;
Adw.PreferencesPage general_page { Adw.PreferencesPage general_page {
name: "general"; name: "general";

View File

@@ -45,7 +45,7 @@ Adw.StatusPage hidden_notice_empty {
template $CartridgesWindow : Adw.ApplicationWindow { template $CartridgesWindow : Adw.ApplicationWindow {
title: _("Cartridges"); title: _("Cartridges");
width-request: 281; width-request: 360;
height-request: 100; height-request: 100;
Adw.Breakpoint { Adw.Breakpoint {
@@ -75,6 +75,8 @@ template $CartridgesWindow : Adw.ApplicationWindow {
title: _("All Games"); title: _("All Games");
Adw.OverlaySplitView overlay_split_view { Adw.OverlaySplitView overlay_split_view {
sidebar-width-fraction: .2;
[sidebar] [sidebar]
Adw.NavigationPage { Adw.NavigationPage {
title: _("Cartridges"); title: _("Cartridges");
@@ -199,6 +201,13 @@ template $CartridgesWindow : Adw.ApplicationWindow {
SearchEntry search_entry { SearchEntry search_entry {
placeholder-text: _("Search"); placeholder-text: _("Search");
hexpand: true; hexpand: true;
ShortcutController {
Shortcut {
trigger: "Escape";
action: "action(win.toggle_search)";
}
}
} }
} }
} }

View File

@@ -16,18 +16,22 @@
<url type="contribute">https://github.com/kra-mo/cartridges/blob/main/CONTRIBUTING.md</url> <url type="contribute">https://github.com/kra-mo/cartridges/blob/main/CONTRIBUTING.md</url>
<!-- developer_name tag deprecated with Appstream 1.0 --> <!-- developer_name tag deprecated with Appstream 1.0 -->
<developer_name translatable="no">kramo</developer_name> <developer_name translatable="no">kramo</developer_name>
<developer id="kramo.page"> <developer id="page.kramo">
<name translatable="no">kramo</name> <name translatable="no">kramo</name>
</developer> </developer>
<launchable type="desktop-id">@APP_ID@.desktop</launchable> <launchable type="desktop-id">@APP_ID@.desktop</launchable>
<translation type="gettext">cartridges</translation> <translation type="gettext">cartridges</translation>
<branding>
<color type="primary" scheme_preference="light">#d5b0e7</color>
<color type="primary" scheme_preference="dark">#501a5c</color>
</branding>
<supports> <supports>
<control>pointing</control> <control>pointing</control>
<control>keyboard</control> <control>keyboard</control>
<control>touch</control> <control>touch</control>
</supports> </supports>
<recommends> <recommends>
<display_length compare="gt">280</display_length> <display_length compare="ge">360</display_length>
</recommends> </recommends>
<screenshots> <screenshots>
<screenshot type="default"> <screenshot type="default">
@@ -49,11 +53,18 @@
</screenshots> </screenshots>
<content_rating type="oars-1.1" /> <content_rating type="oars-1.1" />
<releases> <releases>
<release version="2.7.3" date="2024-02-17"> <release version="2.8.1" date="2024-03-23">
<description translatable="no"> <description translatable="no">
<ul> <ul>
<li>Updated Lutris locations so importing works again</li> <li>Fixes an issue with Lutris games not importing</li>
<li>Other miscellaneous bug fixes</li> <li>Fixes an issue with file chooser buttons being unresponsive</li>
</ul>
</description>
</release>
<release version="2.8" date="2024-03-20">
<description translatable="no">
<ul>
<li>The app features new adaptive widgets taking advantage of developments in GNOME 46</li>
</ul> </ul>
</description> </description>
</release> </release>

View File

@@ -4,7 +4,7 @@ blueprints = custom_target('blueprints',
'gtk/window.blp', 'gtk/window.blp',
'gtk/game.blp', 'gtk/game.blp',
'gtk/preferences.blp', 'gtk/preferences.blp',
'gtk/details-window.blp' 'gtk/details-dialog.blp'
), ),
output: '.', output: '.',
command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'], command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'],

View File

@@ -1,7 +1,7 @@
{ {
"id" : "hu.kramo.Cartridges.Devel", "id" : "hu.kramo.Cartridges.Devel",
"runtime" : "org.gnome.Platform", "runtime" : "org.gnome.Platform",
"runtime-version" : "45", "runtime-version" : "46",
"sdk" : "org.gnome.Sdk", "sdk" : "org.gnome.Sdk",
"command" : "cartridges", "command" : "cartridges",
"finish-args" : [ "finish-args" : [

View File

@@ -1,5 +1,5 @@
project('cartridges', project('cartridges',
version: '2.7.3', version: '2.8.1',
meson_version: '>= 0.59.0', meson_version: '>= 0.59.0',
default_options: [ 'warning_level=2', 'werror=false', ], default_options: [ 'warning_level=2', 'werror=false', ],
) )

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-12-12 10:32+0100\n" "POT-Creation-Date: 2023-12-12 10:32+0100\n"
"PO-Revision-Date: 2024-02-17 13:07+0000\n" "PO-Revision-Date: 2024-02-19 06:35+0000\n"
"Last-Translator: Konstantin Tutsch <mail@konstantintutsch.com>\n" "Last-Translator: Konstantin Tutsch <mail@konstantintutsch.com>\n"
"Language-Team: German <https://hosted.weblate.org/projects/cartridges/" "Language-Team: German <https://hosted.weblate.org/projects/cartridges/"
"cartridges/de/>\n" "cartridges/de/>\n"
@@ -36,7 +36,7 @@ msgstr "Spiele-Launcher"
#: 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 "Starte all deine Spiele" msgstr "Starten Sie alle Ihre Spiele"
#: data/hu.kramo.Cartridges.desktop.in:11 #: data/hu.kramo.Cartridges.desktop.in:11
msgid "" msgid ""
@@ -51,10 +51,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 ""
"Cartridges ist ein einfacher Spiel-Launcher. Es unterstützt das Importieren " "Cartridges ist ein einfacher Game Launcher für alle deine Spiele. Es bietet "
"von Spielen aus Steam, Lutris, Heroic und mehr, keine Anmeldung " "Unterstützung für den Import von Spielen aus Steam, Lutris, Heroic und mehr, "
"erforderlich. Du kannst sortieren, Spiele verstecken oder das Cover-Art aus " "ohne dass eine Anmeldung erforderlich ist. Sie können Spiele sortieren und "
"SteamGRID herunterladen." "ausblenden oder Cover-Art von SteamGridDB herunterladen."
#: data/hu.kramo.Cartridges.metainfo.xml.in:36 data/gtk/window.blp:290 #: data/hu.kramo.Cartridges.metainfo.xml.in:36 data/gtk/window.blp:290
#: cartridges/details_window.py:71 #: cartridges/details_window.py:71

View File

@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE. # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the cartridges package. # This file is distributed under the same license as the cartridges package.
# Óscar Fernández Díaz <oscfdezdz@users.noreply.hosted.weblate.org>, 2023. # Óscar Fernández Díaz <oscfdezdz@users.noreply.hosted.weblate.org>, 2023, 2024.
# gallegonovato <fran-carro@hotmail.es>, 2023. # gallegonovato <fran-carro@hotmail.es>, 2023.
# kramo <contact@kramo.hu>, 2023. # kramo <contact@kramo.hu>, 2023.
msgid "" msgid ""
@@ -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-12-12 10:32+0100\n" "POT-Creation-Date: 2023-12-12 10:32+0100\n"
"PO-Revision-Date: 2023-12-15 13:10+0000\n" "PO-Revision-Date: 2024-02-19 06:35+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"
@@ -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.3\n" "X-Generator: Weblate 5.4\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
@@ -40,8 +41,8 @@ msgstr "Lance todos sus juegos"
msgid "" msgid ""
"gaming;launcher;steam;lutris;heroic;bottles;itch;flatpak;legendary;retroarch;" "gaming;launcher;steam;lutris;heroic;bottles;itch;flatpak;legendary;retroarch;"
msgstr "" msgstr ""
"juegos;lanzador;steam;lutris;heroico;botellas;itch;flatpak;legendario;" "gaming;launcher;steam;lutris;heroic;bottles;itch;flatpak;legendary;retroarch;"
"retroarch;" "juegos;lanzador;"
#: data/hu.kramo.Cartridges.metainfo.xml.in:9 #: data/hu.kramo.Cartridges.metainfo.xml.in:9
msgid "" msgid ""
@@ -96,7 +97,7 @@ msgstr "Ejecutable"
#: data/gtk/details-window.blp:114 #: data/gtk/details-window.blp:114
msgid "Select File" msgid "Select File"
msgstr "Seleccionar el archivo" msgstr "Seleccionar archivo"
#: data/gtk/details-window.blp:125 #: data/gtk/details-window.blp:125
msgid "More Info" msgid "More Info"
@@ -142,7 +143,7 @@ msgstr "Salir"
#: 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 "Alternar la barra lateral" msgstr "Conmutar la barra lateral"
#: data/gtk/help-overlay.blp:44 data/gtk/window.blp:177 data/gtk/window.blp:237 #: data/gtk/help-overlay.blp:44 data/gtk/window.blp:177 data/gtk/window.blp:237
msgid "Main Menu" msgid "Main Menu"
@@ -163,11 +164,11 @@ msgstr "Importar"
#: data/gtk/help-overlay.blp:63 #: data/gtk/help-overlay.blp:63
msgid "Show Hidden Games" msgid "Show Hidden Games"
msgstr "Mostrar los juegos ocultos" msgstr "Mostrar juegos ocultos"
#: data/gtk/help-overlay.blp:68 #: data/gtk/help-overlay.blp:68
msgid "Remove Game" msgid "Remove Game"
msgstr "Eliminar el juego" msgstr "Eliminar juego"
#: data/gtk/preferences.blp:12 data/gtk/preferences.blp:116 #: data/gtk/preferences.blp:12 data/gtk/preferences.blp:116
#: data/gtk/preferences.blp:381 #: data/gtk/preferences.blp:381
@@ -257,7 +258,7 @@ msgstr "Importar juegos de GOG"
#: data/gtk/preferences.blp:220 #: data/gtk/preferences.blp:220
msgid "Import Amazon Games" msgid "Import Amazon Games"
msgstr "Importar de Amazon Games" msgstr "Importar juegos de Amazon"
#: data/gtk/preferences.blp:224 #: data/gtk/preferences.blp:224
msgid "Import Sideloaded Games" msgid "Import Sideloaded Games"
@@ -299,7 +300,7 @@ msgstr "Importar lanzadores de juegos"
#: data/gtk/preferences.blp:357 cartridges/importer/desktop_source.py:215 #: data/gtk/preferences.blp:357 cartridges/importer/desktop_source.py:215
msgid "Desktop Entries" msgid "Desktop Entries"
msgstr "Entradas en el escritorio" msgstr "Entradas de escritorio"
#: data/gtk/preferences.blp:369 data/gtk/window.blp:537 #: data/gtk/preferences.blp:369 data/gtk/window.blp:537
msgid "SteamGridDB" msgid "SteamGridDB"
@@ -331,11 +332,11 @@ msgstr "Prefiero las imágenes animadas"
#: data/gtk/preferences.blp:399 #: data/gtk/preferences.blp:399
msgid "Update Covers" msgid "Update Covers"
msgstr "Actualización de las portadas" msgstr "Actualizar las portadas"
#: data/gtk/preferences.blp:400 #: data/gtk/preferences.blp:400
msgid "Fetch covers for games already in your library" msgid "Fetch covers for games already in your library"
msgstr "Busca las carátulas de los juegos de tu biblioteca" msgstr "Busca las portadas de los juegos de su biblioteca"
#: data/gtk/preferences.blp:405 #: data/gtk/preferences.blp:405
msgid "Update" msgid "Update"
@@ -571,7 +572,7 @@ msgstr "Instalación no encontrada"
#: cartridges/preferences.py:346 #: cartridges/preferences.py:346
msgid "Select a valid directory." msgid "Select a valid directory."
msgstr "Selecciona un directorio válido." msgstr "Seleccione un directorio válido."
#: cartridges/preferences.py:382 cartridges/importer/importer.py:317 #: cartridges/preferences.py:382 cartridges/importer/importer.py:317
msgid "Warning" msgid "Warning"
@@ -579,7 +580,7 @@ msgstr "Advertencia"
#: cartridges/preferences.py:416 #: cartridges/preferences.py:416
msgid "Invalid Directory" msgid "Invalid Directory"
msgstr "Directorio incorrecto" msgstr "Directorio no válido"
#: cartridges/preferences.py:422 #: cartridges/preferences.py:422
msgid "Set Location" msgid "Set Location"
@@ -608,7 +609,7 @@ msgstr "1 juego importado"
#. The variable is the number of games #. The variable is the number of games
#: cartridges/importer/importer.py:383 #: cartridges/importer/importer.py:383
msgid "{} games imported" msgid "{} games imported"
msgstr "0 juegos importados" msgstr "{} juegos importados"
#. A single game removed #. A single game removed
#: cartridges/importer/importer.py:387 #: cartridges/importer/importer.py:387
@@ -618,26 +619,27 @@ msgstr "1 eliminado"
#. The variable is the name of the source #. The variable is the name of the source
#: cartridges/importer/location.py:33 #: cartridges/importer/location.py:33
msgid "Select the {} cache directory." msgid "Select the {} cache directory."
msgstr "Seleccione el directorio de la caché {}." msgstr "Seleccione el directorio de la caché de {}."
#. The variable is the name of the source #. The variable is the name of the source
#: cartridges/importer/location.py:35 #: cartridges/importer/location.py:35
msgid "Select the {} configuration directory." msgid "Select the {} configuration directory."
msgstr "Seleccione el directorio de configuración {}." msgstr "Seleccione el directorio de configuración de {}."
#. The variable is the name of the source #. The variable is the name of the source
#: cartridges/importer/location.py:37 #: cartridges/importer/location.py:37
msgid "Select the {} data directory." msgid "Select the {} data directory."
msgstr "Seleccione el directorio de datos {}." msgstr "Selecciona el directorio de los datos {}."
#: cartridges/importer/retroarch_source.py:129 #: cartridges/importer/retroarch_source.py:129
msgid "No RetroArch Core Selected" msgid "No RetroArch Core Selected"
msgstr "No seleccionaste ningún núcleo para RetroArch" msgstr "No hay ningún núcleo RetroArch seleccionado"
#. The variable is a newline separated list of playlists #. The variable is a newline separated list of playlists
#: cartridges/importer/retroarch_source.py:131 #: cartridges/importer/retroarch_source.py:131
msgid "The following playlists have no default core:" msgid "The following playlists have no default core:"
msgstr "Las siguientes listas de reproducción no tienen un núcleo por defecto:" msgstr ""
"Las siguientes listas de reproducción no tienen un núcleo predeterminado:"
#: cartridges/importer/retroarch_source.py:133 #: cartridges/importer/retroarch_source.py:133
msgid "Games with no core selected were not imported" msgid "Games with no core selected were not imported"
@@ -649,7 +651,7 @@ msgstr "No se ha podido autenticar SteamGridDB"
#: cartridges/store/managers/sgdb_manager.py:47 #: cartridges/store/managers/sgdb_manager.py:47
msgid "Verify your API key in preferences" msgid "Verify your API key in preferences"
msgstr "Verifica tu clave API en las preferencias" msgstr "Verifique su clave API en las preferencias"
#~ msgid "Library" #~ msgid "Library"
#~ msgstr "Biblioteca" #~ msgstr "Biblioteca"

View File

@@ -5,13 +5,14 @@
# albanobattistella <albano_battistella@hotmail.com>, 2023. # albanobattistella <albano_battistella@hotmail.com>, 2023.
# kramo <contact@kramo.hu>, 2023. # kramo <contact@kramo.hu>, 2023.
# Giasko <dibiame@hotmail.it>, 2023. # Giasko <dibiame@hotmail.it>, 2023.
# Andrea Costola <lamaildiandreac@gmail.com>, 2024.
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-12-12 10:32+0100\n" "POT-Creation-Date: 2023-12-12 10:32+0100\n"
"PO-Revision-Date: 2023-12-26 16:08+0000\n" "PO-Revision-Date: 2024-02-24 08:02+0000\n"
"Last-Translator: albanobattistella <albano_battistella@hotmail.com>\n" "Last-Translator: Andrea Costola <lamaildiandreac@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"
@@ -19,7 +20,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.4-dev\n" "X-Generator: Weblate 5.5-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
@@ -423,7 +424,7 @@ msgstr "Informazioni su Cartucce"
#: data/gtk/window.blp:536 #: data/gtk/window.blp:536
msgid "IGDB" msgid "IGDB"
msgstr "" msgstr "IGDB"
#: data/gtk/window.blp:538 #: data/gtk/window.blp:538
msgid "ProtonDB" msgid "ProtonDB"

315
po/ko.po
View File

@@ -2,13 +2,14 @@
# Copyright (C) YEAR kramo # Copyright (C) YEAR kramo
# This file is distributed under the same license as the Cartridges package. # This file is distributed under the same license as the Cartridges package.
# MJKim <kmj10727@gmail.com>, 2023. # MJKim <kmj10727@gmail.com>, 2023.
# Seong-ho Cho <darkcircle.0426@gmail.com>, 2024.
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-12-12 10:32+0100\n" "POT-Creation-Date: 2023-12-12 10:32+0100\n"
"PO-Revision-Date: 2023-03-28 22:23+0000\n" "PO-Revision-Date: 2024-03-02 19:01+0000\n"
"Last-Translator: MJKim <kmj10727@gmail.com>\n" "Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/cartridges/" "Language-Team: Korean <https://hosted.weblate.org/projects/cartridges/"
"cartridges/ko/>\n" "cartridges/ko/>\n"
"Language: ko\n" "Language: ko\n"
@@ -16,7 +17,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=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.17-dev\n" "X-Generator: Weblate 5.5-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
@@ -38,371 +39,353 @@ msgstr "모든 게임을 실행합니다"
msgid "" msgid ""
"gaming;launcher;steam;lutris;heroic;bottles;itch;flatpak;legendary;retroarch;" "gaming;launcher;steam;lutris;heroic;bottles;itch;flatpak;legendary;retroarch;"
msgstr "" msgstr ""
"gaming;게임;게이밍;launcher;실행기;실행프로그램;steam;스팀;lutris;루트리스;he"
"roic;히어로익;bottles;보틀즈;itch;잇치;flatpak;플랫팩;legendary;레젠더리;retr"
"oarch;레트로아키;"
#: data/hu.kramo.Cartridges.metainfo.xml.in:9 #: data/hu.kramo.Cartridges.metainfo.xml.in:9
#, fuzzy
#| msgid ""
#| "Cartridges is a simple game launcher. It has support for importing your "
#| "games from Steam, Heroic and Bottles with organizational features such as "
#| "hiding and sorting by date added or last played."
msgid "" msgid ""
"Cartridges is a simple game launcher for all of your games. It has support " "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 " "for importing games from Steam, Lutris, Heroic and more with no login "
"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, Heroic 및 Bottles" "사이트에서 로그인을 하지 않고 게임을 가져올 수 있습니다. 게임을 정리하고 "
"에서 게임을 가져올 수 있습니다." "숨기거나, SteamGridDB에서 표지를 다운로드할 수 있습니다."
#: data/hu.kramo.Cartridges.metainfo.xml.in:36 data/gtk/window.blp:290 #: data/hu.kramo.Cartridges.metainfo.xml.in:36 data/gtk/window.blp:290
#: cartridges/details_window.py:71 #: cartridges/details_window.py:71
msgid "Game Details" msgid "Game Details"
msgstr "" msgstr "게임 세부 정보"
#: data/hu.kramo.Cartridges.metainfo.xml.in:40 #: data/hu.kramo.Cartridges.metainfo.xml.in:40
msgid "Edit Game Details" msgid "Edit Game Details"
msgstr "" msgstr "게임 세부 정보 편집"
#: data/hu.kramo.Cartridges.metainfo.xml.in:44 data/gtk/help-overlay.blp:19 #: data/hu.kramo.Cartridges.metainfo.xml.in:44 data/gtk/help-overlay.blp:19
#: data/gtk/window.blp:516 cartridges/details_window.py:271 #: data/gtk/window.blp:516 cartridges/details_window.py:271
#: cartridges/importer/importer.py:319 cartridges/importer/importer.py:370 #: cartridges/importer/importer.py:319 cartridges/importer/importer.py:370
msgid "Preferences" msgid "Preferences"
msgstr "" msgstr "기본 설정"
#: data/gtk/details-window.blp:25 #: data/gtk/details-window.blp:25
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr "취소"
#: data/gtk/details-window.blp:55 #: data/gtk/details-window.blp:55
msgid "New Cover" msgid "New Cover"
msgstr "" msgstr "새 표지"
#: data/gtk/details-window.blp:73 #: data/gtk/details-window.blp:73
msgid "Delete Cover" msgid "Delete Cover"
msgstr "" msgstr "표지 삭제"
#: data/gtk/details-window.blp:100 data/gtk/game.blp:81 #: data/gtk/details-window.blp:100 data/gtk/game.blp:81
msgid "Title" msgid "Title"
msgstr "" msgstr "제목"
#: data/gtk/details-window.blp:103 #: data/gtk/details-window.blp:103
msgid "Developer (optional)" msgid "Developer (optional)"
msgstr "" msgstr "개발자 (옵션)"
#: data/gtk/details-window.blp:108 #: data/gtk/details-window.blp:108
msgid "Executable" msgid "Executable"
msgstr "" msgstr "실행 가능"
#: data/gtk/details-window.blp:114 #: data/gtk/details-window.blp:114
msgid "Select File" msgid "Select File"
msgstr "" msgstr "파일 선택"
#: data/gtk/details-window.blp:125 #: data/gtk/details-window.blp:125
msgid "More Info" msgid "More Info"
msgstr "" msgstr "추가 정보"
#: data/gtk/game.blp:102 data/gtk/game.blp:110 data/gtk/window.blp:417 #: data/gtk/game.blp:102 data/gtk/game.blp:110 data/gtk/window.blp:417
msgid "Edit" msgid "Edit"
msgstr "" msgstr "편집"
#: data/gtk/game.blp:103 cartridges/window.py:350 #: data/gtk/game.blp:103 cartridges/window.py:350
msgid "Hide" msgid "Hide"
msgstr "" msgstr "숨기기"
#: data/gtk/game.blp:104 data/gtk/game.blp:112 data/gtk/window.blp:437 #: data/gtk/game.blp:104 data/gtk/game.blp:112 data/gtk/window.blp:437
msgid "Remove" msgid "Remove"
msgstr "" msgstr "제거"
#: data/gtk/game.blp:111 cartridges/window.py:352 #: data/gtk/game.blp:111 cartridges/window.py:352
msgid "Unhide" msgid "Unhide"
msgstr "" msgstr "숨기기 취소"
#: data/gtk/help-overlay.blp:11 data/gtk/preferences.blp:8 #: data/gtk/help-overlay.blp:11 data/gtk/preferences.blp:8
msgid "General" msgid "General"
msgstr "" msgstr "일반"
#: data/gtk/help-overlay.blp:14 data/gtk/window.blp:184 data/gtk/window.blp:200 #: data/gtk/help-overlay.blp:14 data/gtk/window.blp:184 data/gtk/window.blp:200
#: data/gtk/window.blp:244 data/gtk/window.blp:260 data/gtk/window.blp:448 #: data/gtk/window.blp:244 data/gtk/window.blp:260 data/gtk/window.blp:448
msgid "Search" msgid "Search"
msgstr "" msgstr "검색"
#: data/gtk/help-overlay.blp:24 data/gtk/window.blp:517 #: data/gtk/help-overlay.blp:24 data/gtk/window.blp:517
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "" msgstr "키보드 바로 가기 키"
#: data/gtk/help-overlay.blp:29 cartridges/game.py:103 #: data/gtk/help-overlay.blp:29 cartridges/game.py:103
#: cartridges/preferences.py:129 cartridges/importer/importer.py:394 #: cartridges/preferences.py:129 cartridges/importer/importer.py:394
msgid "Undo" msgid "Undo"
msgstr "" msgstr "실행 취소"
#: data/gtk/help-overlay.blp:34 #: data/gtk/help-overlay.blp:34
msgid "Quit" msgid "Quit"
msgstr "" 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:237 #: data/gtk/help-overlay.blp:44 data/gtk/window.blp:177 data/gtk/window.blp:237
msgid "Main Menu" msgid "Main Menu"
msgstr "" msgstr "메인 메뉴"
#: data/gtk/help-overlay.blp:50 #: data/gtk/help-overlay.blp:50
#, fuzzy
#| msgid "No Games"
msgid "Games" msgid "Games"
msgstr "게임이 없습니다" msgstr "게임"
#: data/gtk/help-overlay.blp:53 data/gtk/window.blp:170 data/gtk/window.blp:524 #: data/gtk/help-overlay.blp:53 data/gtk/window.blp:170 data/gtk/window.blp:524
msgid "Add Game" msgid "Add Game"
msgstr "" msgstr "게임 추가"
#: data/gtk/help-overlay.blp:58 data/gtk/preferences.blp:112 #: data/gtk/help-overlay.blp:58 data/gtk/preferences.blp:112
#: data/gtk/window.blp:27 data/gtk/window.blp:528 #: data/gtk/window.blp:27 data/gtk/window.blp:528
msgid "Import" msgid "Import"
msgstr "" msgstr "가져오기"
#: data/gtk/help-overlay.blp:63 #: data/gtk/help-overlay.blp:63
msgid "Show Hidden Games" msgid "Show Hidden Games"
msgstr "" msgstr "숨긴 게임 표시"
#: data/gtk/help-overlay.blp:68 #: data/gtk/help-overlay.blp:68
#, fuzzy
#| msgid "No Games"
msgid "Remove Game" msgid "Remove Game"
msgstr "게임이 없습니다" msgstr "게임 제거"
#: data/gtk/preferences.blp:12 data/gtk/preferences.blp:116 #: data/gtk/preferences.blp:12 data/gtk/preferences.blp:116
#: data/gtk/preferences.blp:381 #: data/gtk/preferences.blp:381
msgid "Behavior" msgid "Behavior"
msgstr "" msgstr "동작"
#: data/gtk/preferences.blp:15 #: data/gtk/preferences.blp:15
msgid "Exit After Launching Games" msgid "Exit After Launching Games"
msgstr "" msgstr "게임 실행 후 나가기"
#: data/gtk/preferences.blp:19 #: data/gtk/preferences.blp:19
msgid "Cover Image Launches Game" msgid "Cover Image Launches Game"
msgstr "" msgstr "표지 그림 선택시 게임 실행"
#: data/gtk/preferences.blp:20 #: data/gtk/preferences.blp:20
msgid "Swaps the behavior of the cover image and the play button" msgid "Swaps the behavior of the cover image and the play button"
msgstr "" msgstr "표지 그림과 게임하기 단추 동작 바꾸기"
#: data/gtk/preferences.blp:25 cartridges/details_window.py:85 #: data/gtk/preferences.blp:25 cartridges/details_window.py:85
msgid "Images" msgid "Images"
msgstr "" msgstr "그림"
#: data/gtk/preferences.blp:28 #: data/gtk/preferences.blp:28
msgid "High Quality Images" msgid "High Quality Images"
msgstr "" msgstr "고화질 그림"
#: data/gtk/preferences.blp:29 #: data/gtk/preferences.blp:29
msgid "Save game covers losslessly at the cost of storage" msgid "Save game covers losslessly at the cost of storage"
msgstr "" msgstr "게임 표지를 화질 손실 없도록 저장소를 충분히 할애하여 저장"
#: data/gtk/preferences.blp:34 #: data/gtk/preferences.blp:34
msgid "Danger Zone" msgid "Danger Zone"
msgstr "" msgstr "위험 영역"
#: data/gtk/preferences.blp:47 #: data/gtk/preferences.blp:47
msgid "Remove All Games" msgid "Remove All Games"
msgstr "" msgstr "모든 게임 제거"
#: data/gtk/preferences.blp:119 #: data/gtk/preferences.blp:119
msgid "Remove Uninstalled Games" msgid "Remove Uninstalled Games"
msgstr "" msgstr "설치 취소한 게임 제거"
#: data/gtk/preferences.blp:124 #: data/gtk/preferences.blp:124
msgid "Sources" msgid "Sources"
msgstr "" msgstr "공급원"
#: data/gtk/preferences.blp:127 cartridges/importer/steam_source.py:114 #: data/gtk/preferences.blp:127 cartridges/importer/steam_source.py:114
msgid "Steam" msgid "Steam"
msgstr "" msgstr "스팀"
#: data/gtk/preferences.blp:136 data/gtk/preferences.blp:158 #: data/gtk/preferences.blp:136 data/gtk/preferences.blp:158
#: data/gtk/preferences.blp:200 data/gtk/preferences.blp:238 #: data/gtk/preferences.blp:200 data/gtk/preferences.blp:238
#: data/gtk/preferences.blp:260 data/gtk/preferences.blp:282 #: data/gtk/preferences.blp:260 data/gtk/preferences.blp:282
#: data/gtk/preferences.blp:304 #: data/gtk/preferences.blp:304
msgid "Install Location" msgid "Install Location"
msgstr "" msgstr "설치 위치"
#: data/gtk/preferences.blp:149 data/gtk/window.blp:539 #: data/gtk/preferences.blp:149 data/gtk/window.blp:539
#: cartridges/importer/lutris_source.py:92 #: cartridges/importer/lutris_source.py:92
msgid "Lutris" msgid "Lutris"
msgstr "" msgstr "루트리스"
#: data/gtk/preferences.blp:170 #: data/gtk/preferences.blp:170
msgid "Cache Location" msgid "Cache Location"
msgstr "" msgstr "캐시 위치"
#: data/gtk/preferences.blp:182 #: data/gtk/preferences.blp:182
#, fuzzy
#| msgid "No Games"
msgid "Import Steam Games" msgid "Import Steam Games"
msgstr "게임이 없습니다" msgstr "스팀 게임 가져오기"
#: data/gtk/preferences.blp:186 #: data/gtk/preferences.blp:186
#, fuzzy
#| msgid "No Games"
msgid "Import Flatpak Games" msgid "Import Flatpak Games"
msgstr "게임이 없습니다" msgstr "플랫팩 게임 가져오기"
#: data/gtk/preferences.blp:191 cartridges/importer/heroic_source.py:355 #: data/gtk/preferences.blp:191 cartridges/importer/heroic_source.py:355
msgid "Heroic" msgid "Heroic"
msgstr "" msgstr "히어로익"
#: data/gtk/preferences.blp:212 #: data/gtk/preferences.blp:212
msgid "Import Epic Games" msgid "Import Epic Games"
msgstr "" msgstr "에픽 게임 가져오기"
#: data/gtk/preferences.blp:216 #: data/gtk/preferences.blp:216
msgid "Import GOG Games" msgid "Import GOG Games"
msgstr "" msgstr "GOG 게임 가져오기"
#: data/gtk/preferences.blp:220 #: data/gtk/preferences.blp:220
#, fuzzy
#| msgid "No Games"
msgid "Import Amazon Games" msgid "Import Amazon Games"
msgstr "게임이 없습니다" msgstr "아마존 게임 가져오기"
#: data/gtk/preferences.blp:224 #: data/gtk/preferences.blp:224
msgid "Import Sideloaded Games" msgid "Import Sideloaded Games"
msgstr "" msgstr "사이드로디드 게임 가져오기"
#: data/gtk/preferences.blp:229 cartridges/importer/bottles_source.py:86 #: data/gtk/preferences.blp:229 cartridges/importer/bottles_source.py:86
msgid "Bottles" msgid "Bottles"
msgstr "" msgstr "보틀즈"
#: data/gtk/preferences.blp:251 cartridges/importer/itch_source.py:81 #: data/gtk/preferences.blp:251 cartridges/importer/itch_source.py:81
msgid "itch" msgid "itch"
msgstr "" msgstr "잇치"
#: data/gtk/preferences.blp:273 cartridges/importer/legendary_source.py:97 #: data/gtk/preferences.blp:273 cartridges/importer/legendary_source.py:97
msgid "Legendary" msgid "Legendary"
msgstr "" msgstr "레젠더리"
#: data/gtk/preferences.blp:295 cartridges/importer/retroarch_source.py:142 #: data/gtk/preferences.blp:295 cartridges/importer/retroarch_source.py:142
msgid "RetroArch" msgid "RetroArch"
msgstr "" msgstr "레트로아키"
#: data/gtk/preferences.blp:317 cartridges/importer/flatpak_source.py:124 #: data/gtk/preferences.blp:317 cartridges/importer/flatpak_source.py:124
msgid "Flatpak" msgid "Flatpak"
msgstr "" msgstr "플랫팩"
#. The location of the system-wide data directory #. The location of the system-wide data directory
#: data/gtk/preferences.blp:327 #: data/gtk/preferences.blp:327
msgid "System Location" msgid "System Location"
msgstr "" msgstr "시스템 위치"
#. The location of the user-specific data directory #. The location of the user-specific data directory
#: data/gtk/preferences.blp:340 #: data/gtk/preferences.blp:340
msgid "User Location" msgid "User Location"
msgstr "" msgstr "사용자 위치"
#: data/gtk/preferences.blp:352 #: data/gtk/preferences.blp:352
#, fuzzy
#| msgid "Game Launcher"
msgid "Import Game Launchers" msgid "Import Game Launchers"
msgstr "게임 런처" msgstr "게임 실행 프로그램 가져오기"
#: data/gtk/preferences.blp:357 cartridges/importer/desktop_source.py:215 #: data/gtk/preferences.blp:357 cartridges/importer/desktop_source.py:215
msgid "Desktop Entries" msgid "Desktop Entries"
msgstr "" msgstr "데스크톱 항목"
#: data/gtk/preferences.blp:369 data/gtk/window.blp:537 #: data/gtk/preferences.blp:369 data/gtk/window.blp:537
msgid "SteamGridDB" msgid "SteamGridDB"
msgstr "" msgstr "SteamGridDB"
#: data/gtk/preferences.blp:373 #: data/gtk/preferences.blp:373
msgid "Authentication" msgid "Authentication"
msgstr "" msgstr "인증"
#: data/gtk/preferences.blp:376 #: data/gtk/preferences.blp:376
msgid "API Key" msgid "API Key"
msgstr "" msgstr "API 키"
#: data/gtk/preferences.blp:384 #: data/gtk/preferences.blp:384
msgid "Use SteamGridDB" msgid "Use SteamGridDB"
msgstr "" msgstr "SteamGridDB 활용"
#: data/gtk/preferences.blp:385 #: data/gtk/preferences.blp:385
msgid "Download images when adding or importing games" msgid "Download images when adding or importing games"
msgstr "" msgstr "게임을 추가하거나 가져올 때 표지 그림 다운로드"
#: data/gtk/preferences.blp:389 #: data/gtk/preferences.blp:389
msgid "Prefer Over Official Images" msgid "Prefer Over Official Images"
msgstr "" msgstr "공식 그림 우선"
#: data/gtk/preferences.blp:393 #: data/gtk/preferences.blp:393
msgid "Prefer Animated Images" msgid "Prefer Animated Images"
msgstr "" msgstr "움직이는 그림 우선"
#: data/gtk/preferences.blp:399 #: data/gtk/preferences.blp:399
msgid "Update Covers" msgid "Update Covers"
msgstr "" msgstr "표지 그림 업데이트"
#: data/gtk/preferences.blp:400 #: data/gtk/preferences.blp:400
msgid "Fetch covers for games already in your library" msgid "Fetch covers for games already in your library"
msgstr "" msgstr "라이브러리에 이미 있는 게임 표지 그림 가져오기"
#: data/gtk/preferences.blp:405 #: data/gtk/preferences.blp:405
msgid "Update" msgid "Update"
msgstr "" msgstr "업데이트"
#: 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"
msgstr "" msgstr "게임 없음"
#: 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 "" msgstr "다른 단어로 검색해보십시오."
#: data/gtk/window.blp:21 #: data/gtk/window.blp:21
msgid "No Games" msgid "No Games"
msgstr "게임습니다" msgstr "게임 없"
#: 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 "" msgstr "게임을 추가하려면 + 단추를 사용하십시오."
#: data/gtk/window.blp:40 #: data/gtk/window.blp:40
msgid "No Hidden Games" msgid "No Hidden Games"
msgstr "" msgstr "숨긴 게임 없음"
#: 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 "" msgstr "숨긴 게임이 이곳에 나타납니다."
#: data/gtk/window.blp:75 data/gtk/window.blp:106 cartridges/main.py:226 #: data/gtk/window.blp:75 data/gtk/window.blp:106 cartridges/main.py:226
#, fuzzy
#| msgid "No Games"
msgid "All Games" msgid "All Games"
msgstr "게임이 없습니다" msgstr "모든 게임"
#: data/gtk/window.blp:126 cartridges/main.py:228 #: data/gtk/window.blp:126 cartridges/main.py:228
msgid "Added" msgid "Added"
msgstr "" msgstr "추가함"
#: data/gtk/window.blp:141 #: data/gtk/window.blp:141
#, fuzzy
#| msgid "No Games"
msgid "Imported" msgid "Imported"
msgstr "게임이 없습니다" msgstr "가져옴"
#: data/gtk/window.blp:230 #: data/gtk/window.blp:230
msgid "Hidden Games" msgid "Hidden Games"
msgstr "" msgstr "숨긴 게임"
#: data/gtk/window.blp:341 #: data/gtk/window.blp:341
msgid "Game Title" msgid "Game Title"
msgstr "" msgstr "게임 제목"
#: data/gtk/window.blp:398 #: data/gtk/window.blp:398
msgid "Play" msgid "Play"
msgstr "" msgstr "게임하기"
#: data/gtk/window.blp:475 #: data/gtk/window.blp:475
msgid "Sort" msgid "Sort"
@@ -410,27 +393,27 @@ msgstr "정렬"
#: data/gtk/window.blp:478 #: data/gtk/window.blp:478
msgid "A-Z" msgid "A-Z"
msgstr "" msgstr "오름차순"
#: data/gtk/window.blp:484 #: data/gtk/window.blp:484
msgid "Z-A" msgid "Z-A"
msgstr "" msgstr "내림차순"
#: data/gtk/window.blp:490 #: data/gtk/window.blp:490
msgid "Newest" msgid "Newest"
msgstr "" msgstr "최신순"
#: data/gtk/window.blp:496 #: data/gtk/window.blp:496
msgid "Oldest" msgid "Oldest"
msgstr "" msgstr "과거순"
#: data/gtk/window.blp:502 #: data/gtk/window.blp:502
msgid "Last Played" msgid "Last Played"
msgstr "" msgstr "최근 플레이"
#: data/gtk/window.blp:509 #: data/gtk/window.blp:509
msgid "Show Hidden" msgid "Show Hidden"
msgstr "" msgstr "숨긴 게임 표시"
#: data/gtk/window.blp:518 #: data/gtk/window.blp:518
msgid "About Cartridges" msgid "About Cartridges"
@@ -438,75 +421,75 @@ msgstr "카트리지 정보"
#: data/gtk/window.blp:536 #: data/gtk/window.blp:536
msgid "IGDB" msgid "IGDB"
msgstr "" msgstr "IGDB"
#: data/gtk/window.blp:538 #: data/gtk/window.blp:538
msgid "ProtonDB" msgid "ProtonDB"
msgstr "" msgstr "ProtonDB"
#: data/gtk/window.blp:540 #: data/gtk/window.blp:540
msgid "HowLongToBeat" msgid "HowLongToBeat"
msgstr "" msgstr "HowLongToBeat"
#. The variable is the title of the game #. The variable is the title of the game
#: cartridges/main.py:206 cartridges/game.py:125 #: cartridges/main.py:206 cartridges/game.py:125
msgid "{} launched" msgid "{} launched"
msgstr "" msgstr "{} 실행함"
#. 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
#: cartridges/main.py:269 #: cartridges/main.py:269
msgid "translator_credits" msgid "translator_credits"
msgstr "" msgstr "조성호 <shcho@gnome.org>"
#. The variable is the date when the game was added #. The variable is the date when the game was added
#: cartridges/window.py:373 #: cartridges/window.py:373
msgid "Added: {}" msgid "Added: {}"
msgstr "" msgstr "추가: {}"
#: cartridges/window.py:376 #: cartridges/window.py:376
msgid "Never" msgid "Never"
msgstr "" msgstr "안함"
#. The variable is the date when the game was last played #. The variable is the date when the game was last played
#: cartridges/window.py:380 #: cartridges/window.py:380
msgid "Last played: {}" msgid "Last played: {}"
msgstr "" msgstr "최근 플레이: {}"
#: cartridges/details_window.py:76 #: cartridges/details_window.py:76
msgid "Apply" msgid "Apply"
msgstr "" msgstr "적용"
#: cartridges/details_window.py:82 #: cartridges/details_window.py:82
msgid "Add New Game" msgid "Add New Game"
msgstr "" msgstr "새 게임 추가"
#: cartridges/details_window.py:83 #: cartridges/details_window.py:83
msgid "Add" msgid "Add"
msgstr "" msgstr "추가"
#: cartridges/details_window.py:93 #: cartridges/details_window.py:93
msgid "Executables" msgid "Executables"
msgstr "" msgstr "실행 파일"
#. Translate this string as you would translate "file" #. Translate this string as you would translate "file"
#: cartridges/details_window.py:108 #: cartridges/details_window.py:108
msgid "file.txt" msgid "file.txt"
msgstr "" msgstr "file.txt"
#. As in software #. As in software
#: cartridges/details_window.py:110 #: cartridges/details_window.py:110
msgid "program" msgid "program"
msgstr "" msgstr "프로그램"
#. Translate this string as you would translate "path to {}" #. Translate this string as you would translate "path to {}"
#: cartridges/details_window.py:115 cartridges/details_window.py:117 #: cartridges/details_window.py:115 cartridges/details_window.py:117
msgid "C:\\path\\to\\{}" msgid "C:\\path\\to\\{}"
msgstr "" msgstr "C:\\디렉터리\\경로\\{}"
#. Translate this string as you would translate "path to {}" #. Translate this string as you would translate "path to {}"
#: cartridges/details_window.py:121 cartridges/details_window.py:123 #: cartridges/details_window.py:121 cartridges/details_window.py:123
msgid "/path/to/{}" msgid "/path/to/{}"
msgstr "" msgstr "/디렉터리/경로/{}"
#: cartridges/details_window.py:128 #: cartridges/details_window.py:128
msgid "" msgid ""
@@ -520,142 +503,150 @@ msgid ""
"\n" "\n"
"If the path contains spaces, make sure to wrap it in double quotes!" "If the path contains spaces, make sure to wrap it in double quotes!"
msgstr "" msgstr ""
"\"{}\" 실행 파일을 실행하려면, 다음 명령을:\n"
"\n"
"<tt>\"{}\"</tt>\n"
"\n"
"기본 프로그램으로 \"{}\" 파일을 열려면:\n"
"\n"
"<tt>{} \"{}\"</tt>\n"
"\n"
"경로 이름에 공백 문자가 들어가 있을 경우, 경로 이름을 큰 따옴표로 감쌌는지 "
"확인하십시오!"
#: cartridges/details_window.py:171 cartridges/details_window.py:177 #: cartridges/details_window.py:171 cartridges/details_window.py:177
msgid "Couldn't Add Game" msgid "Couldn't Add Game"
msgstr "" msgstr "게임을 추가할 수 없습니다"
#: cartridges/details_window.py:171 cartridges/details_window.py:213 #: cartridges/details_window.py:171 cartridges/details_window.py:213
msgid "Game title cannot be empty." msgid "Game title cannot be empty."
msgstr "" msgstr "게임 제목은 비워둘 수 없습니다."
#: cartridges/details_window.py:177 cartridges/details_window.py:221 #: cartridges/details_window.py:177 cartridges/details_window.py:221
msgid "Executable cannot be empty." msgid "Executable cannot be empty."
msgstr "" msgstr "실행 파일을 비워둘 수 없습니다."
#: cartridges/details_window.py:212 cartridges/details_window.py:220 #: cartridges/details_window.py:212 cartridges/details_window.py:220
msgid "Couldn't Apply Preferences" msgid "Couldn't Apply Preferences"
msgstr "" msgstr "기본 설정을 적용할 수 없습니다"
#. The variable is the title of the game #. The variable is the title of the game
#: cartridges/game.py:139 #: cartridges/game.py:139
msgid "{} hidden" msgid "{} hidden"
msgstr "" msgstr "{} 숨김"
#: cartridges/game.py:139 #: cartridges/game.py:139
msgid "{} unhidden" msgid "{} unhidden"
msgstr "" msgstr "{} 숨김 해제함"
#. The variable is the title of the game #. The variable is the title of the game
#. The variable is the number of games removed #. The variable is the number of games removed
#: cartridges/game.py:153 cartridges/importer/importer.py:391 #: cartridges/game.py:153 cartridges/importer/importer.py:391
msgid "{} removed" msgid "{} removed"
msgstr "" msgstr "{} 제거함"
#: cartridges/preferences.py:128 #: cartridges/preferences.py:128
msgid "All games removed" msgid "All games removed"
msgstr "" msgstr "모든 게임을 제거했습니다"
#: cartridges/preferences.py:176 #: cartridges/preferences.py:176
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 키가 필요합니다. {}여기{}에서 만들 수 있습니다."
#: cartridges/preferences.py:191 #: cartridges/preferences.py:191
msgid "Downloading covers…" msgid "Downloading covers…"
msgstr "" msgstr "표지 그림 다운로드 중…"
#: cartridges/preferences.py:210 #: cartridges/preferences.py:210
msgid "Covers updated" msgid "Covers updated"
msgstr "" msgstr "표지 그림을 업데이트했습니다"
#: cartridges/preferences.py:345 #: cartridges/preferences.py:345
msgid "Installation Not Found" msgid "Installation Not Found"
msgstr "" msgstr "설치한 항목이 없습니다"
#: cartridges/preferences.py:346 #: cartridges/preferences.py:346
msgid "Select a valid directory." msgid "Select a valid directory."
msgstr "" msgstr "올바른 디렉터리를 선택하십시오."
#: cartridges/preferences.py:382 cartridges/importer/importer.py:317 #: cartridges/preferences.py:382 cartridges/importer/importer.py:317
msgid "Warning" msgid "Warning"
msgstr "" msgstr "경고"
#: cartridges/preferences.py:416 #: cartridges/preferences.py:416
msgid "Invalid Directory" msgid "Invalid Directory"
msgstr "" msgstr "부적절한 디렉터리"
#: cartridges/preferences.py:422 #: cartridges/preferences.py:422
msgid "Set Location" msgid "Set Location"
msgstr "" msgstr "위치 설정"
#: cartridges/utils/create_dialog.py:33 cartridges/importer/importer.py:318 #: cartridges/utils/create_dialog.py:33 cartridges/importer/importer.py:318
msgid "Dismiss" msgid "Dismiss"
msgstr "" msgstr "버리기"
#: cartridges/importer/importer.py:145 #: cartridges/importer/importer.py:145
#, fuzzy
#| msgid "No Games"
msgid "Importing Games…" msgid "Importing Games…"
msgstr "게임이 없습니다" msgstr "게임 가져오는 중…"
#: cartridges/importer/importer.py:338 #: cartridges/importer/importer.py:338
msgid "The following errors occured during import:" msgid "The following errors occured during import:"
msgstr "" msgstr "가져오는 동안 다음 오류가 나타났습니다:"
#: cartridges/importer/importer.py:367 #: cartridges/importer/importer.py:367
msgid "No new games found" msgid "No new games found"
msgstr "" msgstr "새 게임이 없습니다"
#: cartridges/importer/importer.py:379 #: cartridges/importer/importer.py:379
msgid "1 game imported" msgid "1 game imported"
msgstr "" msgstr "게임 1건을 가져왔습니다"
#. The variable is the number of games #. The variable is the number of games
#: cartridges/importer/importer.py:383 #: cartridges/importer/importer.py:383
msgid "{} games imported" msgid "{} games imported"
msgstr "" msgstr "게임 {}건을 가져왔습니다"
#. A single game removed #. A single game removed
#: cartridges/importer/importer.py:387 #: cartridges/importer/importer.py:387
msgid "1 removed" msgid "1 removed"
msgstr "" msgstr "1건을 제거했습니다"
#. The variable is the name of the source #. The variable is the name of the source
#: cartridges/importer/location.py:33 #: cartridges/importer/location.py:33
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
#: cartridges/importer/location.py:35 #: cartridges/importer/location.py:35
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
#: cartridges/importer/location.py:37 #: cartridges/importer/location.py:37
msgid "Select the {} data directory." msgid "Select the {} data directory."
msgstr "" msgstr "{} 데이터 디렉터리를 선택하십시오."
#: cartridges/importer/retroarch_source.py:129 #: cartridges/importer/retroarch_source.py:129
msgid "No RetroArch Core Selected" msgid "No RetroArch Core Selected"
msgstr "" msgstr "선택한 레트로아키 코어가 없습니다"
#. The variable is a newline separated list of playlists #. The variable is a newline separated list of playlists
#: cartridges/importer/retroarch_source.py:131 #: cartridges/importer/retroarch_source.py:131
msgid "The following playlists have no default core:" msgid "The following playlists have no default core:"
msgstr "" msgstr "다음 플레이 목록에 기본 코어가 없습니다:"
#: cartridges/importer/retroarch_source.py:133 #: cartridges/importer/retroarch_source.py:133
msgid "Games with no core selected were not imported" msgid "Games with no core selected were not imported"
msgstr "" msgstr "코어를 선택하지 않은 게임을 가져오지 않았습니다"
#: cartridges/store/managers/sgdb_manager.py:46 #: cartridges/store/managers/sgdb_manager.py:46
msgid "Couldn't Authenticate SteamGridDB" msgid "Couldn't Authenticate SteamGridDB"
msgstr "" msgstr "SteamGridDB를 인증할 수 없습니다"
#: cartridges/store/managers/sgdb_manager.py:47 #: cartridges/store/managers/sgdb_manager.py:47
msgid "Verify your API key in preferences" msgid "Verify your API key in preferences"
msgstr "" msgstr "기본 설정에서 API 키를 검증하십시오"
#~ msgid "Library" #~ msgid "Library"
#~ msgstr "라이브러리" #~ msgstr "라이브러리"