diff --git a/.travis.yml b/.travis.yml index ec50a82bbecc101d8a6279215d5194d7a86fc1d2..858a6105b2bf5eb38a835bfc3905865a8006f7ed 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,8 +28,7 @@ addons: - gir1.2-glib-2.0 - libgirepository1.0-dev - gir1.2-gnomedesktop-3.0 - - gir1.2-webkit2-4.0 - - gir1.2-notify-0.7 + - gir1.2-webkit2-4.1 - at-spi2-core before_install: - "export DISPLAY=:99.0" diff --git a/INSTALL.rst b/INSTALL.rst index 22808ef6fd99b56a14c60d37062c608893abba83..d35904a4d218398f087af235bebfcabccc708129 100644 --- a/INSTALL.rst +++ b/INSTALL.rst @@ -10,9 +10,9 @@ If you installed Lutris from our PPA or some other repository, it should already come with all of its essential dependencies. However, if you need to install Lutris manually, it requires the following components: - * Python > 3.4 + * Python >= 3.7 * PyGObject - * PyGObject bindings for: Gtk, Gdk, GnomeDesktop, Webkit2, Notify + * PyGObject bindings for: Gtk, Gdk, GnomeDesktop, Webkit2 * python3-requests * python3-pillow * python3-yaml @@ -41,8 +41,8 @@ To install all those dependencies (except for Wine and graphics drivers) on Ubuntu based systems, you can run:: sudo apt install python3-yaml python3-requests python3-pil python3-gi \ - gir1.2-gtk-3.0 gir1.2-gnomedesktop-3.0 gir1.2-webkit2-4.0 \ - gir1.2-notify-0.7 psmisc cabextract unzip p7zip curl fluid-soundfont-gs \ + gir1.2-gtk-3.0 gir1.2-gnomedesktop-3.0 gir1.2-webkit2-4.1 \ + psmisc cabextract unzip p7zip curl fluid-soundfont-gs \ x11-xserver-utils python3-evdev libc6-i386 lib32gcc1 libgirepository1.0-dev \ python3-setproctitle python3-distro diff --git a/Makefile b/Makefile index 6d658e7d0b133c58f34bf15e7450df982c17adb6..be34aacaae4c3caa8eb7b7c588622632ece9730f 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,8 @@ PIP:=$(PYTHON) -m pip all: find . -name __pycache__ | xargs rm -rf export GITBRANCH=master - debuild || debclean + debuild -uc -us + debclean >/dev/null 2>&1 build: gbp buildpackage --git-debian-branch=${GITBRANCH} diff --git a/README.rst b/README.rst index 028bca3c1d2e1986b4fc3d00abd23e454ce22fb5..9d7fcd1b63f2d65192f7dda805d478c6440f6a9e 100644 --- a/README.rst +++ b/README.rst @@ -101,6 +101,9 @@ The following command line arguments are available:: -j, --json Display the list of games in JSON format --reinstall Reinstall game --display=DISPLAY X display to use +--export Exports specified game (requires --dest) +--import Specifies Export/Import destination folder Additionally, you can pass a ``lutris:`` protocol link followed by a game identifier on the command line such as:: @@ -110,18 +113,6 @@ identifier on the command line such as:: This will install the game if it is not already installed, otherwise it will launch the game. The game will always be installed if the ``--reinstall`` flag is passed. -Planned features -================ - -Lutris is far from complete, and some features have yet -to be implemented. - -Here's what to expect from future versions of Lutris: - -* TOSEC database integration -* Management of personal game data (i.e. syncing games across devices using private cloud storage) -* Community features (friends list, chat, multiplayer game scheduling, etc.) - Support the project =================== diff --git a/debian/changelog b/debian/changelog index 86188704f9201d57a2399e9ac962ddd5655605d5..113742306cd8d36f220b9fc4a9346c7a25ae5989 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +net.winegame.client (0.5.12.1) jammy; urgency=medium + + * Vulkan ICD加载器里添加一个“不指定(使用系统默认值)”的选项 + * 添加从 Windows 可执行文件中提取图标的功能 + * 重新设计首选项对话框 + + -- SwimmingTiger Sun, 23 Oct 2022 21:08:51 +0800 + net.winegame.client (0.5.10.5) impish; urgency=medium * 修复了Steam已安装但未登录时Wine游戏助手启动后弹出错误提示的问题。 @@ -32,6 +40,38 @@ net.winegame.client (0.5.10.1) impish; urgency=medium -- SwimmingTiger Sun, 1 May 2022 01:52:35 +0800 +lutris (0.5.12) jammy; urgency=medium + + * Fix authentication issue with Origin + * Fix authentication issue with EGS + * Fix authentication issue with Ubisoft Connect when 2FA is enabled + * Fix integration issue with GOG + * Add Discord Rich Presence integration + * Add ability to extract icons from Windows executables + * Allow setting custom cover art + * Re-style configuration dialogs + + -- Mathieu Comandon Tue, 18 Oct 2022 16:18:45 -0700 + +lutris (0.5.11) jammy; urgency=medium + + * Fix for some installers commands exiting with return code 256 + * Change shortcut for show/hide installed games to Ctrl + i + * Show/hide hidden games is assigned to Ctrl + h + * Install game launcher before login for services that use one. + * Add Amazon Games integration + * Added SheepShaver, BasiliskII and Mini vMac runners + * Don't perform runtime updates when a game is launched via a shortcut + * Support variables in script URLs + * Fix crash when Lutris is unable to read the screen resolution + * Enable Gamescope on Nvidia >= 515 + * Fixes for Steam shortcuts + * Add Gnome Console and Deepin Terminal to supported terminal emulators + * Fix crash when Mangohud is used alongside Gamescope + * Translation updates + + -- Mathieu Comandon Thu, 04 Aug 2022 15:29:12 -0700 + lutris (0.5.10.1) impish; urgency=medium * Check for Steam executable in home folder for Flatpak diff --git a/debian/control b/debian/control index 2a50a9129e9f2f17c84d5746b36f6db39405c616..5ada2270ef43cb634efda9a30075cdebd12ed765 100644 --- a/debian/control +++ b/debian/control @@ -26,8 +26,7 @@ Depends: ${misc:Depends}, python3-distro, python3-dbus, gir1.2-gtk-3.0, - gir1.2-webkit2-4.0, - gir1.2-notify-0.7, + gir1.2-webkit2-4.1 | gir1.2-webkit2-4.0, psmisc, cabextract, unzip, @@ -53,6 +52,7 @@ Recommends: vulkan-utils, libgamemode0:i386, libgamemodeauto0, libgamemodeauto0:i386, + gamescope, Suggests: Description: 开源游戏平台 在 UOS/Deepin/Linux 上玩你喜欢的 Windows 游戏 diff --git a/docs/installers.rst b/docs/installers.rst index b441b6b65001af452a7f29edd8b5c187e8e9596b..5a77f6ff9ddb20271c614dcd5b47e44d8391fcbb 100644 --- a/docs/installers.rst +++ b/docs/installers.rst @@ -66,6 +66,12 @@ Wine游戏助手使用的“Lutris游戏安装脚本”(简称“安装脚本 你还可以通过文件标识符引用 ``files`` 部分下载的文件,安装时会转换为下载好的文件的绝对路径。引用时通常不需要加 ``$`` 前缀,但是如果在 ``command`` 命令中引用,或者要进行字符串拼接,则需要加 ``$`` 前缀。 +此外还可以在 `variables` 部分添加自定义变量,例如:: + + variables: + VERSION: 1.3 + files: + stk: https://github.com/supertuxkart/stk-code/releases/download/$VERSION/SuperTuxKart-$VERSION-linux-64bit.tar.xz 安装脚本元数据 =================== diff --git a/lutris.spec b/lutris.spec index 477c52e79a4487dd6abceecbec5b82741f8616f9..d4c944c7afa0a2ef530bbf1443d96b2c7a506a77 100644 --- a/lutris.spec +++ b/lutris.spec @@ -6,7 +6,7 @@ %global appid net.lutris.Lutris Name: lutris -Version: 0.5.10.1 +Version: 0.5.12 Release: 7%{?dist} Summary: Video game preservation platform @@ -43,7 +43,7 @@ BuildRequires: hicolor-icon-theme BuildRequires: python3-setuptools Requires: (python3-gobject-Gdk or python3-gobject) Requires: python3-PyYAML, cabextract, typelib-1_0-Gtk-3_0 -Requires: typelib-1_0-GnomeDesktop-3_0, typelib-1_0-WebKit2-4_0, typelib-1_0-Notify-0_7 +Requires: typelib-1_0-GnomeDesktop-3_0, typelib-1_0-WebKit2-4_1 Requires: fluid-soundfont-gm, python3-Pillow, python3-requests %endif diff --git a/lutris/__init__.py b/lutris/__init__.py index cba3603137ef261722086664fcf553c280ed53f6..b89354e3c0c5610291c0d30dd7477b4d5277ca3c 100644 --- a/lutris/__init__.py +++ b/lutris/__init__.py @@ -1,3 +1,3 @@ """Main Lutris package""" -__version__ = "0.5.10.5" +__version__ = "0.5.12.1" diff --git a/lutris/api.py b/lutris/api.py index 5ef8a31054f27e7682ad26f725563ca4a542d662..cf87c481efad1cb253f000a59a5d7bdb1eda7b9a 100644 --- a/lutris/api.py +++ b/lutris/api.py @@ -2,9 +2,11 @@ import json import os import re +import socket import urllib.error import urllib.parse import urllib.request +from collections import OrderedDict import requests @@ -76,14 +78,23 @@ def get_user_info(): def get_runners(runner_name): """Return the available runners for a given runner name""" api_url = settings.SITE_URL + "/api/runners/" + runner_name - response = http.Request(api_url).get() - return response.json + host = settings.SITE_URL.split("//")[1] + + answers = socket.getaddrinfo(host, 443) + (_family, _type, _proto, _canonname, _sockaddr) = answers[0] + headers = OrderedDict({ + 'Host': host + }) + session = requests.Session() + session.headers = headers + response = session.get(api_url, headers=headers) + return response.json() -def get_http_response(url, payload): +def get_http_post_response(url, payload): response = http.Request(url, headers={"Content-Type": "application/json"}) try: - response.get(data=payload) + response.post(data=payload) except http.HTTPError as ex: logger.error("Unable to get games from API: %s", ex) return None @@ -106,7 +117,7 @@ def get_game_api_page(game_slugs, page=1): if not game_slugs: return [] payload = json.dumps({"games": game_slugs, "page": page}).encode("utf-8") - return get_http_response(url, payload) + return get_http_post_response(url, payload) def get_game_service_api_page(service, appids, page=1): @@ -117,7 +128,7 @@ def get_game_service_api_page(service, appids, page=1): if not appids: return [] payload = json.dumps({"appids": appids}).encode("utf-8") - return get_http_response(url, payload) + return get_http_post_response(url, payload) def get_api_games(game_slugs=None, page=1, service=None): @@ -164,10 +175,29 @@ def get_game_installers(game_slug, revision=None): if response is None: raise RuntimeError("Couldn't get installer at %s" % installer_url) - if not revision: - return response["results"] # Revision requests return a single installer - return [response] + if revision: + installers = [response] + else: + installers = response["results"] + return [normalize_installer(i) for i in installers] + + +def normalize_installer(installer): + """Adjusts an installer dict so it is in the correct form, with values + of the expected types.""" + def must_be_str(key): + if key in installer: + installer[key] = str(installer[key]) + + must_be_str("name") + must_be_str("version") + must_be_str("os") + must_be_str("slug") + must_be_str("game_slug") + must_be_str("dlcid") + must_be_str("runner") + return installer def search_games(query): diff --git a/lutris/database/games.py b/lutris/database/games.py index 1e52ed91fb03ee1723183f76a45d97aba8b6c65a..6d53e4b0eeeb954bd09e369585b82bb9892cba6c 100644 --- a/lutris/database/games.py +++ b/lutris/database/games.py @@ -58,7 +58,7 @@ def get_games_where(**conditions): if not hasattr(value, "__iter__"): raise ValueError("Value should be an iterable (%s given)" % value) if len(value) > 999: - raise ValueError("SQLite limnited to a maximum of 999 parameters.") + raise ValueError("SQLite limited to a maximum of 999 parameters.") if value: condition_fields.append("{} in ({})".format(field, ", ".join("?" * len(value)) or "")) condition_values = list(chain(condition_values, value)) diff --git a/lutris/database/schema.py b/lutris/database/schema.py index 2e8f1d3190d2b87c935adc3214fcfcddcb963800..486af63526590efc87e9660bdb039972478dc552 100644 --- a/lutris/database/schema.py +++ b/lutris/database/schema.py @@ -73,6 +73,10 @@ DATABASE = { "name": "has_custom_icon", "type": "INTEGER" }, + { + "name": "has_custom_coverart_big", + "type": "INTEGER" + }, { "name": "playtime", "type": "REAL" @@ -88,7 +92,11 @@ DATABASE = { { "name": "service_id", "type": "TEXT" - } + }, + { + "name": "discord_id", + "type": "TEXT", + }, ], "service_games": [ { diff --git a/lutris/database/services.py b/lutris/database/services.py index ea0a56c4637e942e98f01c2701e3bf299b52ca30..6f2fc2b7343ebc6517a5572358eeea94a0e4eb81 100644 --- a/lutris/database/services.py +++ b/lutris/database/services.py @@ -13,7 +13,7 @@ class ServiceGameCollection: @classmethod def get_game(cls, service, appid): - """Return a single game refered by its appid""" + """Return a single game referred by its appid""" if not service: raise ValueError("No service provided") if not appid: diff --git a/lutris/discord.py b/lutris/discord.py deleted file mode 100644 index 7e60ca86c7cc25229300d77c51307ba2dac1b571..0000000000000000000000000000000000000000 --- a/lutris/discord.py +++ /dev/null @@ -1,99 +0,0 @@ -"""Discord integration""" -# Standard Library -import asyncio -import time - -# Lutris Modules -from lutris.util.log import logger - -try: - from pypresence import Presence as PyPresence - from pypresence.exceptions import PyPresenceException -except ImportError: - PyPresence = None - PyPresenceException = None - - -class DiscordPresence(object): - - """Provide rich presence integration with Discord for games""" - - def __init__(self): - self.available = bool(PyPresence) - self.game_name = "" - self.runner_name = "" - self.last_rpc = 0 - self.rpc_interval = 60 - self.presence_connected = False - self.rpc_client = None - self.client_id = None - - def connect(self): - """Make sure we are actually connected before trying to send requests""" - if not self.presence_connected: - self.rpc_client = PyPresence(self.client_id) - try: - self.rpc_client.connect() - self.presence_connected = True - except (ConnectionError, FileNotFoundError): - logger.error("Could not connect to Discord") - return self.presence_connected - - def disconnect(self): - """Ensure we are definitely disconnected and fix broken event loop from pypresence - That method is a huge mess of non-deterministic bs and should be nuked from orbit. - """ - if self.rpc_client: - try: - self.rpc_client.close() - except Exception as e: - logger.exception("Unable to close Discord RPC connection: %s", e) - if self.rpc_client.sock_writer is not None: - try: - self.rpc_client.sock_writer.close() - except Exception: - logger.exception("Sock writer could not be closed.") - try: - logger.debug("Forcefully closing event loop.") - self.rpc_client.loop.close() - except Exception: - logger.debug("Could not close event loop.") - try: - logger.debug("Forcefully replacing event loop.") - self.rpc_client.loop = None - asyncio.set_event_loop(asyncio.new_event_loop()) - except Exception as e: - logger.exception("Could not replace event loop: %s", e) - try: - logger.debug("Forcefully deleting RPC client.") - self.rpc_client = None - except Exception as ex: - logger.exception(ex) - self.rpc_client = None - self.presence_connected = False - - def update_discord_rich_presence(self): - """Dispatch a request to Discord to update presence""" - if int(time.time()) - self.rpc_interval < self.last_rpc: - logger.debug("Not enough time since last RPC") - return - - self.last_rpc = int(time.time()) - if not self.connect(): - return - try: - self.rpc_client.update(details="Playing %s" % self.game_name, - large_image="large_image", - large_text=self.game_name, - small_image="small_image") - except PyPresenceException as ex: - logger.error("Unable to update Discord: %s", ex) - - def clear_discord_rich_presence(self): - """Dispatch a request to Discord to clear presence""" - if self.connect(): - try: - self.rpc_client.clear() - except PyPresenceException as ex: - logger.error("Unable to clear Discord: %s", ex) - self.disconnect() diff --git a/lutris/exceptions.py b/lutris/exceptions.py index a5ff254dd7107b5fbeb4cadbd8b6bf3bef11eacc..ce307ae62fe0d428c25c1c5d34dc40af07c938f3 100644 --- a/lutris/exceptions.py +++ b/lutris/exceptions.py @@ -19,7 +19,7 @@ class GameConfigError(LutrisError): """ -class UnavailableLibraries(RuntimeError): +class UnavailableLibrariesError(RuntimeError): def __init__(self, libraries, arch=None): message = _( @@ -36,17 +36,34 @@ class AuthenticationError(Exception): """Raised when authentication to a service fails""" -class UnavailableGame(Exception): +class UnavailableGameError(Exception): """Raised when a game is available from a service""" -class MultipleInstallerError(BaseException): +class UnavailableRunnerError(Exception): + """Raised when a runner is not installed or not installed fully.""" - """Current implementation doesn't know how to deal with multiple installers - Raise this if a game returns more than 1 installer.""" +def watch_errors(error_result=None): + """Decorator used to catch exceptions for GUI signal handlers. This + catches any exception from the decorated function and calls + on_watch_errors(error) on the first argument, which we presume to be self. + and then the method will return 'error_result'""" -def watch_lutris_errors(game_stop_result): + def inner_decorator(function): + @wraps(function) + def wrapper(*args, **kwargs): + myself = args[0] + try: + return function(*args, **kwargs) + except Exception as ex: + myself.on_watched_error(ex) + return error_result + return wrapper + return inner_decorator + + +def watch_game_errors(game_stop_result): """Decorator used to catch exceptions and send events instead of propagating them normally. If 'game_stop_result' is not None, and the decorated function returns that, this will send game-stop and make the game stopped as well. This simplifies handling cancellation. diff --git a/lutris/game.py b/lutris/game.py index f3ae83ffb7aa8549d2bd693ab952281eaadcc154..8d7c400d4b181d6e67cbb9c86d614453b4eb74a8 100644 --- a/lutris/game.py +++ b/lutris/game.py @@ -18,11 +18,11 @@ from lutris.config import LutrisConfig from lutris.database import categories as categories_db from lutris.database import games as games_db from lutris.database import sql -from lutris.exceptions import GameConfigError, watch_lutris_errors +from lutris.exceptions import GameConfigError, watch_game_errors from lutris.gui import dialogs from lutris.runner_interpreter import export_bash_script, get_launch_parameters from lutris.runners import InvalidRunner, import_runner, wine -from lutris.util import audio, extract, jobs, linux, strings, system, xdgshortcuts +from lutris.util import audio, discord, extract, jobs, linux, strings, system, xdgshortcuts from lutris.util.display import ( DISPLAY_MANAGER, SCREEN_SAVER_INHIBITOR, disable_compositing, enable_compositing, restore_gamma ) @@ -31,6 +31,7 @@ from lutris.util.graphics.xrandr import turn_off_except from lutris.util.linux import LINUX_SYSTEM from lutris.util.log import LOG_BUFFERS, logger from lutris.util.process import Process +from lutris.util.savesync import sync_saves from lutris.util.timer import Timer from lutris.util.yaml import write_yaml_to_file @@ -50,6 +51,7 @@ class Game(GObject.Object): __gsignals__ = { "game-error": (GObject.SIGNAL_RUN_FIRST, None, (object, )), + "game-notice": (GObject.SIGNAL_RUN_FIRST, None, (str, str)), "game-launch": (GObject.SIGNAL_RUN_FIRST, None, ()), "game-start": (GObject.SIGNAL_RUN_FIRST, None, ()), "game-started": (GObject.SIGNAL_RUN_FIRST, None, ()), @@ -82,8 +84,13 @@ class Game(GObject.Object): self.platform = game_data.get("platform") or "" self.year = game_data.get("year") or "" self.lastplayed = game_data.get("lastplayed") or 0 - self.has_custom_banner = bool(game_data.get("has_custom_banner")) - self.has_custom_icon = bool(game_data.get("has_custom_icon")) + self.custom_images = set() + if game_data.get("has_custom_banner"): + self.custom_images.add("banner") + if game_data.get("has_custom_icon"): + self.custom_images.add("icon") + if game_data.get("has_custom_coverart_big"): + self.custom_images.add("coverart_big") self.service = game_data.get("service") self.appid = game_data.get("service_id") self.playtime = game_data.get("playtime") or 0.0 @@ -106,6 +113,9 @@ class Game(GObject.Object): self.timer = Timer() self.screen_saver_inhibitor_cookie = None + # Adding Discord App ID for RPC + self.discord_id = game_data.get('discord_id') + def __repr__(self): return self.__str__() @@ -123,11 +133,11 @@ class Game(GObject.Object): @property def is_favorite(self): """Return whether the game is in the user's favorites""" - categories = categories_db.get_categories_in_game(self.id) - for category in categories: - if category == "favorite": - return True - return False + return "favorite" in self.get_categories() + + def get_categories(self): + """Return the categories the game is in.""" + return categories_db.get_categories_in_game(self.id) def add_to_favorites(self): """Add the game to the 'favorite' category""" @@ -195,7 +205,16 @@ class Game(GObject.Object): def get_browse_dir(self): """Return the path to open with the Browse Files action.""" - return self.runner.game_path + return self.resolve_game_path() + + def resolve_game_path(self): + """Return the game's directory; if it is not known this will try to find + it. This can still return an empty string if it can't do that.""" + if self.directory: + return self.directory + if self.runner: + return self.runner.resolve_game_path() + return "" def _get_runner(self): """Return the runner instance for this game's configuration""" @@ -235,18 +254,22 @@ class Game(GObject.Object): self.config.remove() xdgshortcuts.remove_launcher(self.slug, self.id, desktop=True, menu=True) if delete_files and self.runner: - self.runner.remove_game_data(game_path=self.directory) + # self.directory here, not self.resolve_game_path; no guessing at + # directories when we delete them + self.runner.remove_game_data(app_id=self.appid, game_path=self.directory) self.is_installed = False self.runner = None if no_signal: return self.emit("game-removed") - def delete(self): + def delete(self, no_signal=False): """Completely remove a game from the library""" if self.is_installed: - raise RuntimeError("Uninstall the game before deleting") + raise RuntimeError(_("Uninstall the game before deleting")) games_db.delete_game(self.id) + if no_signal: + return self.emit("game-removed") def set_platform_from_runner(self): @@ -288,6 +311,10 @@ class Game(GObject.Object): hidden=self.is_hidden, service=self.service, service_id=self.appid, + discord_id=self.discord_id, + has_custom_banner="banner" in self.custom_images, + has_custom_icon="icon" in self.custom_images, + has_custom_coverart_big="coverart_big" in self.custom_images ) self.emit("game-updated") @@ -306,7 +333,7 @@ class Game(GObject.Object): if self.runner.use_runtime(): runtime_updater = runtime.RuntimeUpdater() if runtime_updater.is_updating(): - dialogs.ErrorDialog(_("Runtime currently updating"), _("Game might not work as expected")) + self.emit("game-notice", _("Runtime currently updating"), _("Game might not work as expected")) if ("wine" in self.runner_name and not wine.get_wine_version() and not LINUX_SYSTEM.is_flatpak): dialogs.WineNotInstalledWarning(parent=None) return True @@ -357,15 +384,6 @@ class Game(GObject.Object): self.antimicro_thread = MonitoredCommand(antimicro_command) self.antimicro_thread.start() - @staticmethod - def set_keyboard_layout(layout): - setxkbmap_command = ["setxkbmap", "-model", "pc101", layout, "-print"] - xkbcomp_command = ["xkbcomp", "-", os.environ.get("DISPLAY", ":0")] - with subprocess.Popen(xkbcomp_command, stdin=subprocess.PIPE) as xkbcomp: - with subprocess.Popen(setxkbmap_command, env=os.environ, stdout=xkbcomp.stdin) as setxkbmap: - setxkbmap.communicate() - xkbcomp.communicate() - def start_prelaunch_command(self, wait_for_completion=False): """Start the prelaunch command specified in the system options""" prelaunch_command = self.runner.system_config.get("prelaunch_command") @@ -377,14 +395,14 @@ class Game(GObject.Object): if wait_for_completion: logger.info("Prelauch command: %s, waiting for completion", prelaunch_command) # Monitor the prelaunch command and wait until it has finished - system.execute(command_array, env=env, cwd=self.directory) + system.execute(command_array, env=env, cwd=self.resolve_game_path()) else: logger.info("Prelaunch command %s launched in the background", prelaunch_command) self.prelaunch_executor = MonitoredCommand( command_array, include_processes=[os.path.basename(command_array[0])], env=env, - cwd=self.directory, + cwd=self.resolve_game_path(), ) self.prelaunch_executor.start() @@ -439,7 +457,7 @@ class Game(GObject.Object): return gameplay_info - @watch_lutris_errors(game_stop_result=False) + @watch_game_errors(game_stop_result=False) def configure_game(self, _ignored, error=None): # noqa: C901 """Get the game ready to start, applying all the options This methods sets the game_runtime_config attribute. @@ -465,7 +483,7 @@ class Game(GObject.Object): # Input control if self.runner.system_config.get("use_us_layout"): - self.set_keyboard_layout("us") + system.set_keyboard_layout("us") # Display control self.original_outputs = DISPLAY_MANAGER.get_config() @@ -502,7 +520,7 @@ class Game(GObject.Object): self.start_game() return True - @watch_lutris_errors(game_stop_result=False) + @watch_game_errors(game_stop_result=False) def launch(self): """Request launching a game. The game may not be installed yet.""" if not self.is_launchable(): @@ -510,6 +528,9 @@ class Game(GObject.Object): return False self.load_config() # Reload the config before launching it. + saves = self.config.game_level["game"].get("saves") + if saves: + sync_saves(self) if str(self.id) in LOG_BUFFERS: # Reset game logs on each launch log_buffer = LOG_BUFFERS[str(self.id)] @@ -517,6 +538,7 @@ class Game(GObject.Object): self.state = self.STATE_LAUNCHING self.prelaunch_pids = system.get_running_pid_list() + self.emit("game-start") jobs.AsyncCall(self.runner.prelaunch, self.configure_game) return True @@ -540,6 +562,15 @@ class Game(GObject.Object): self.timer.start() self.state = self.STATE_RUNNING self.emit("game-started") + + print(f"Discord ID: {self.discord_id}") + # Game is running, let's update discord status + if settings.read_setting('discord_rpc') == 'True' and self.discord_id: + logger.info("Updating Discord RPC Status") + discord.client.update(self.discord_id) + else: + logger.info("Discord RPC Disabled or Discord APP ID Not Present") + self.heartbeat = GLib.timeout_add(HEARTBEAT_DELAY, self.beat) with open(self.now_playing_path, "w", encoding="utf-8") as np_file: np_file.write(self.name) @@ -567,7 +598,7 @@ class Game(GObject.Object): def death_watch_cb(all_died, error): """Called after the death watch to more firmly kill any survivors.""" if error: - dialogs.ErrorDialog(str(error)) + self.emit("game-error", error) elif not all_died: self.kill_processes(signal.SIGKILL) # If we still can't kill everything, we'll still say we stopped it. @@ -598,7 +629,7 @@ class Game(GObject.Object): """Return a list of processes belonging to the Lutris game""" new_pids = self.get_new_pids() game_pids = [] - game_folder = self.runner.game_path or "" + game_folder = self.resolve_game_path() for pid in new_pids: cmdline = Process(pid).cmdline or "" # pressure-vessel: This could potentially pick up PIDs not started by lutris? @@ -629,12 +660,12 @@ class Game(GObject.Object): self.timer.end() self.playtime += self.timer.duration / 3600 + @watch_game_errors(game_stop_result=False) def beat(self): """Watch the game's process(es).""" if self.game_thread.error: - dialogs.ErrorDialog(_("Error lauching the game:\n") + self.game_thread.error) self.on_game_quit() - return False + raise RuntimeError(_("Error lauching the game:\n") + self.game_thread.error) # The killswitch file should be set to a device (ie. /dev/input/js0) # When that device is unplugged, the game is forced to quit. @@ -659,7 +690,11 @@ class Game(GObject.Object): logger.info("Stopping %s", self) if self.game_thread: - jobs.AsyncCall(self.game_thread.stop, None) + def stop_cb(result, error): + if error: + self.emit("game-error", error) + + jobs.AsyncCall(self.game_thread.stop, stop_cb) self.stop_game() def on_game_quit(self): @@ -684,7 +719,7 @@ class Game(GObject.Object): command_array, include_processes=[os.path.basename(postexit_command)], env=self.game_runtime_config["env"], - cwd=self.directory, + cwd=self.resolve_game_path(), ) postexit_thread.start() @@ -715,6 +750,11 @@ class Game(GObject.Object): if self.runner.system_config.get("restore_gamma"): restore_gamma() + # Clear Discord Client Status + if settings.read_setting('discord_rpc') == 'True' and self.discord_id: + logger.debug("Clearing Discord RPC") + discord.client.clear() + self.process_return_codes() def process_return_codes(self): @@ -724,13 +764,13 @@ class Game(GObject.Object): error = "error while loading shared lib" error_line = strings.lookup_string_in_text(error, self.game_thread.stdout) if error_line: - dialogs.ErrorDialog(_("Error: Missing shared library.\n\n%s") % error_line) + raise RuntimeError(_("Error: Missing shared library.\n\n%s") % error_line) if self.game_thread.return_code == 1: # Error Wine version conflict error = "maybe the wrong wineserver" if strings.lookup_string_in_text(error, self.game_thread.stdout): - dialogs.ErrorDialog(_("Error: A different Wine version is already using the same Wine prefix.")) + raise RuntimeError(_("Error: A different Wine version is already using the same Wine prefix.")) def write_script(self, script_path): """Output the launch argument in a bash script""" @@ -782,7 +822,6 @@ class Game(GObject.Object): def export_game(slug, dest_dir): """Export a full game folder along with some lutris metadata""" - # List of runner where we know for sure that 1 folder = 1 game. # For runners that handle ROMs, we have to handle this more finely. # There is likely more than one game in a ROM folder but a ROM @@ -793,7 +832,6 @@ def export_game(slug, dest_dir): "dosbox", "scummvm", ] - db_game = games_db.get_game_by_field(slug, "slug") if db_game["runner"] not in exportable_runners: raise RuntimeError("Game %s can't be exported." % db_game["name"]) @@ -828,7 +866,14 @@ def import_game(file_path, dest_dir): game_config = [f for f in os.listdir(game_dir) if f.endswith(".lutris")][0] with open(os.path.join(game_dir, game_config), encoding="utf-8") as config_file: lutris_config = json.load(config_file) - # old_dir = lutris_config["directory"] + old_dir = lutris_config["directory"] + with open(os.path.join(game_dir, game_config), 'r', encoding="utf-8") as config_file: + config_data = config_file.read() + config_data = config_data.replace(old_dir, game_dir) + with open(os.path.join(game_dir, game_config), 'w', encoding="utf-8") as config_file: + config_file.write(config_data) + with open(os.path.join(game_dir, game_config), encoding="utf-8") as config_file: + lutris_config = json.load(config_file) config_filename = os.path.join(settings.CONFIG_DIR, "games/%s.yml" % lutris_config["configpath"]) write_yaml_to_file(lutris_config["config"], config_filename) game_id = games_db.add_or_update( diff --git a/lutris/game_actions.py b/lutris/game_actions.py index d5bec73905a4c1dbf57bc07342a858c2d73dd8e2..44b41b6b5b6df1b5cffa550044f0e5a116d2cf34 100644 --- a/lutris/game_actions.py +++ b/lutris/game_actions.py @@ -318,6 +318,6 @@ class GameActions: def on_remove_game(self, *_args): """Callback that present the uninstall dialog to the user""" if self.game.is_installed: - UninstallGameDialog(game_id=self.game.id, parent=self.window) + UninstallGameDialog(game_id=self.game.id, parent=self.window).run() else: - RemoveGameDialog(game_id=self.game.id, parent=self.window) + RemoveGameDialog(game_id=self.game.id, parent=self.window).run() diff --git a/lutris/gui/addgameswindow.py b/lutris/gui/addgameswindow.py index c725cda83af9570852b5ccaab05e022ad9b67fb9..e9f17b57b3472d17a917e16148ffffbf712a213f 100644 --- a/lutris/gui/addgameswindow.py +++ b/lutris/gui/addgameswindow.py @@ -157,7 +157,7 @@ class AddGamesWindow(BaseApplicationWindow): # pylint: disable=too-many-public- def _on_folder_scanned(self, result, error): if error: - ErrorDialog(error) + ErrorDialog(str(error), parent=self) self.destroy() return for child in self.vbox.get_children(): @@ -211,7 +211,7 @@ class AddGamesWindow(BaseApplicationWindow): # pylint: disable=too-many-public- def update_search_results_cb(self, api_games, error): if error: - ErrorDialog(error) + ErrorDialog(str(error), parent=self) return self.search_spinner.stop() diff --git a/lutris/gui/application.py b/lutris/gui/application.py index ce80627ef4c7f385e99d5295994203fbd6dd257c..d4e99ec23a84d421dfc517f5103f86d78ab6360e 100644 --- a/lutris/gui/application.py +++ b/lutris/gui/application.py @@ -34,17 +34,18 @@ from gi.repository import Gio, GLib, Gtk, GObject from lutris.runners import get_runner_names, import_runner, InvalidRunner, RunnerInstallationError from lutris import settings from lutris.api import parse_installer_url, get_runners +from lutris.exceptions import watch_errors from lutris.command import exec_command from lutris.database import games as games_db from lutris.game import Game, export_game, import_game from lutris.installer import get_installers from lutris.gui.dialogs.download import simple_downloader -from lutris.gui.dialogs import ErrorDialog, InstallOrPlayDialog, LutrisInitDialog +from lutris.gui.dialogs import ErrorDialog, InstallOrPlayDialog, NoticeDialog, LutrisInitDialog from lutris.gui.dialogs.issue import IssueReportWindow -from lutris.gui.installerwindow import InstallerWindow +from lutris.gui.installerwindow import InstallerWindow, InstallationKind from lutris.gui.widgets.status_icon import LutrisStatusIcon from lutris.migrations import migrate -from lutris.startup import init_lutris, run_all_checks, update_runtime +from lutris.startup import init_lutris, run_all_checks, StartupRuntimeUpdater from lutris.style_manager import StyleManager from lutris.util import datapath, log, system from lutris.util.http import HTTPError, Request @@ -74,17 +75,18 @@ class Application(Gtk.Application): GObject.add_emission_hook(Game, "game-install-dlc", self.on_game_install_dlc) GLib.set_application_name(_("WineGame")) + self.css_provider = Gtk.CssProvider.new() self.window = None self.running_games = Gio.ListStore.new(Game) self.app_windows = {} self.tray = None - self.css_provider = Gtk.CssProvider.new() + self.quit_on_game_exit = False self.style_manager = None if os.geteuid() == 0: - ErrorDialog(_("Running Lutris as root is not recommended and may cause unexpected issues")) + NoticeDialog(_("Running Lutris as root is not recommended and may cause unexpected issues")) try: self.css_provider.load_from_path(os.path.join(datapath.get(), "ui", "lutris.css")) @@ -274,24 +276,18 @@ class Application(Gtk.Application): self.style_manager = StyleManager() def do_activate(self): # pylint: disable=arguments-differ - Application.show_update_runtime_dialog() if not self.window: self.window = LutrisWindow(application=self) screen = self.window.props.screen # pylint: disable=no-member Gtk.StyleContext.add_provider_for_screen(screen, self.css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) - if not self.quit_on_game_exit: - self.window.present() - else: - # Reset quit on game exit to False. Future calls will set it - # accordingly - self.quit_on_game_exit = False @staticmethod def show_update_runtime_dialog(): if os.environ.get("LUTRIS_SKIP_INIT"): logger.debug("Skipping initialization") else: - init_dialog = LutrisInitDialog(update_runtime) + runtime_updater = StartupRuntimeUpdater(force=True) + init_dialog = LutrisInitDialog(runtime_updater) init_dialog.run() def get_window_key(self, **kwargs): @@ -306,7 +302,7 @@ class Application(Gtk.Application): return str(kwargs) def show_window(self, window_class, **kwargs): - """Instanciate a window keeping 1 instance max + """Instantiate a window keeping 1 instance max Params: window_class (Gtk.Window): class to create the instance from @@ -333,13 +329,13 @@ class Application(Gtk.Application): window_inst.show() return window_inst - def show_installer_window(self, installers, service=None, appid=None, is_update=False): + def show_installer_window(self, installers, service=None, appid=None, installation_kind=InstallationKind.INSTALL): self.show_window( InstallerWindow, installers=installers, service=service, appid=appid, - is_update=is_update + installation_kind=installation_kind ) def on_app_window_destroyed(self, app_window, window_key): @@ -381,7 +377,7 @@ class Application(Gtk.Application): # Switch back the log output to stderr (the default in Python) # to avoid messing with any output from command line options. - # Use when targetting Python 3.7 minimum + # Use when targeting Python 3.7 minimum # console_handler.setStream(sys.stderr) # Until then... @@ -415,9 +411,9 @@ class Application(Gtk.Application): # List game if options.contains("list-games"): - game_list = games_db.get_games() - if options.contains("installed"): - game_list = [game for game in game_list if game["installed"]] + game_list = games_db.get_games(filters=( + {"installed": 1} if options.contains("installed") else None) + ) if options.contains("json"): self.print_game_json(command_line, game_list) else: @@ -563,15 +559,15 @@ class Application(Gtk.Application): return 0 # Graphical commands - self.activate() self.set_tray_icon() + self.activate() if not action: if db_game and db_game["installed"]: # Game found but no action provided, ask what to do dlg = InstallOrPlayDialog(db_game["name"]) - if not dlg.action_confirmed: - action = None + if not dlg.action: + action = "cancel" elif dlg.action == "play": action = "rungame" elif dlg.action == "install": @@ -588,6 +584,11 @@ class Application(Gtk.Application): service.install(service_game) return 0 + if action == "cancel": + if not self.window.is_visible(): + self.do_shutdown() + return 0 + if action == "install": installers = get_installers( game_slug=game_slug, @@ -596,7 +597,6 @@ class Application(Gtk.Application): ) if installers: self.show_installer_window(installers) - elif action in ("rungame", "rungameid"): if not db_game or not db_game["id"]: logger.warning("No game found in library") @@ -604,19 +604,48 @@ class Application(Gtk.Application): self.do_shutdown() return 0 game = Game(db_game["id"]) - self.on_game_launch(game) + game.launch() + else: + Application.show_update_runtime_dialog() + self.window.present() + # If the Lutris GUI is started by itself, don't quit it when a game stops + self.quit_on_game_exit = False return 0 + @watch_errors(error_result=True) def on_game_launch(self, game): game.launch() return True # Return True to continue handling the emission hook + @watch_errors(error_result=True) def on_game_start(self, game): self.running_games.append(game) if settings.read_setting("hide_client_on_game_start") == "True": self.window.hide() # Hide launcher window return True + @watch_errors() + def on_game_stop(self, game): + """Callback to remove the game from the running games""" + ids = self.get_running_game_ids() + if str(game.id) in ids: + try: + self.running_games.remove(ids.index(str(game.id))) + except ValueError: + pass + else: + logger.warning("%s not in %s", game.id, ids) + + game.emit("game-stopped") + if settings.read_setting("hide_client_on_game_start") == "True" and not self.quit_on_game_exit: + self.window.show() # Show launcher window + elif not self.window.is_visible(): + if self.running_games.get_n_items() == 0: + if self.quit_on_game_exit or not self.has_tray_icon(): + self.do_shutdown() + return True + + @watch_errors(error_result=True) def on_game_install(self, game): """Request installation of a game""" if game.service and game.service != "lutris": @@ -645,24 +674,26 @@ class Application(Gtk.Application): ErrorDialog(_("There is no installer available for %s.") % game.name, parent=self.window) return True + @watch_errors(error_result=True) def on_game_install_update(self, game): service = get_enabled_services()[game.service]() db_game = games_db.get_game_by_field(game.id, "id") installers = service.get_update_installers(db_game) if installers: - self.show_installer_window(installers, service, game.appid, is_update=True) + self.show_installer_window(installers, service, game.appid, installation_kind=InstallationKind.UPDATE) else: - ErrorDialog(_("No updates found")) + ErrorDialog(_("No updates found"), parent=self.window) return True + @watch_errors(error_result=True) def on_game_install_dlc(self, game): service = get_enabled_services()[game.service]() db_game = games_db.get_game_by_field(game.id, "id") installers = service.get_dlc_installers_runner(db_game, db_game["runner"]) if installers: - self.show_installer_window(installers, service, game.appid) + self.show_installer_window(installers, service, game.appid, installation_kind=InstallationKind.DLC) else: - ErrorDialog(_("No DLC found")) + ErrorDialog(_("No DLC found"), parent=self.window) return True def get_running_game_ids(self): @@ -679,24 +710,9 @@ class Application(Gtk.Application): return game return None - def on_game_stop(self, game): - """Callback to remove the game from the running games""" - ids = self.get_running_game_ids() - if str(game.id) in ids: - try: - self.running_games.remove(ids.index(str(game.id))) - except ValueError: - pass - else: - logger.warning("%s not in %s", game.id, ids) - - game.emit("game-stopped") - if settings.read_setting("hide_client_on_game_start") == "True" and not self.quit_on_game_exit: - self.window.show() # Show launcher window - elif not self.window.is_visible(): - if self.running_games.get_n_items() == 0: - self.do_shutdown() - return True + def on_watched_error(self, error): + if self.window: + ErrorDialog(str(error), parent=self.window) @staticmethod def get_lutris_action(url): @@ -768,7 +784,6 @@ class Application(Gtk.Application): """Execute an arbitrary command in a Lutris context with the runtime enabled and monitored by a MonitoredCommand """ - Application.show_update_runtime_dialog() logger.info("Running command '%s'", command) monitored_command = exec_command(command) try: @@ -823,7 +838,6 @@ class Application(Gtk.Application): if os.path.isdir(runner_path): print(f"Wine version '{version}' is already installed.") else: - try: runner = import_runner("wine") runner().install(downloader=simple_downloader, version=version) @@ -850,16 +864,15 @@ Also, check that the version specified is in the correct format. install the runner provided in prepare_runner_cli() """ - runner_path = os.path.join(settings.RUNNER_DIR, runner_name) - if os.path.isdir(runner_path): - print(f"'{runner_name}' is already installed.") - else: - try: - runner = import_runner(runner_name) - runner().install(version=None, downloader=simple_downloader, callback=None) + try: + runner = import_runner(runner_name)() + if runner.is_installed(): + print(f"'{runner_name}' is already installed.") + else: + runner.install(version=None, downloader=simple_downloader, callback=None) print(f"'{runner_name}' has been installed") - except (InvalidRunner, RunnerInstallationError) as ex: - print(ex.message) + except (InvalidRunner, RunnerInstallationError) as ex: + print(ex.message) def uninstall_runner_cli(self, runner_name): """ @@ -895,3 +908,6 @@ Also, check that the version specified is in the correct format. self.tray = LutrisStatusIcon(application=self) if self.tray: self.tray.set_visible(active) + + def has_tray_icon(self): + return self.tray and self.tray.is_visible() diff --git a/lutris/gui/config/add_game.py b/lutris/gui/config/add_game.py index 36e94107afbfee375376ad405220bc8af8e6fac0..ff471bce10ee5cb56dd0d50f96a841494252ee62 100644 --- a/lutris/gui/config/add_game.py +++ b/lutris/gui/config/add_game.py @@ -26,5 +26,4 @@ class AddGameDialog(GameDialogCommon): self.build_tabs("game") self.build_action_area(self.on_save) self.name_entry.grab_focus() - self.connect("delete-event", self.on_cancel_clicked) self.show_all() diff --git a/lutris/gui/config/boxes.py b/lutris/gui/config/boxes.py index ad53c9bbaab08bcbdccb30394db29cb0d9b51d1a..a11d28da60be3d7d4ed54811c6e009c37917e832 100644 --- a/lutris/gui/config/boxes.py +++ b/lutris/gui/config/boxes.py @@ -2,6 +2,7 @@ # Standard Library # pylint: disable=no-member,too-many-public-methods import os +import urllib from gettext import gettext as _ # Third Party Libraries @@ -9,6 +10,7 @@ from gi.repository import Gdk, Gtk # Lutris Modules from lutris import settings, sysoptions +from lutris.gui.dialogs import ErrorDialog from lutris.gui.widgets.common import EditableGrid, FileChooserEntry, Label, VBox from lutris.gui.widgets.searchable_combobox import SearchableCombobox from lutris.runners import InvalidRunner, import_runner @@ -101,6 +103,8 @@ class ConfigBox(VBox): # Reset button reset_btn = Gtk.Button.new_from_icon_name("edit-clear", Gtk.IconSize.MENU) + reset_btn.set_valign(Gtk.Align.CENTER) + reset_btn.set_margin_bottom(6) reset_btn.set_relief(Gtk.ReliefStyle.NONE) reset_btn.set_tooltip_text(_("Reset option to global or default config")) reset_btn.connect( @@ -263,7 +267,11 @@ class ConfigBox(VBox): else: self.option_changed(widget, option_name, widget.get_active()) - def _on_callback_finished(self, result, _error): + def _on_callback_finished(self, result, error): + if error: + ErrorDialog(str(error), parent=self.get_toplevel()) + return + widget, option, response = result if response: self.option_changed(widget, option["option"], widget.get_active()) @@ -416,10 +424,15 @@ class ConfigBox(VBox): file_chooser.entry.connect("changed", self._on_chooser_file_set, option_name) def _on_chooser_file_set(self, entry, option): - """Action triggered on file select dialog 'file-set' signal.""" - if not os.path.isabs(entry.get_text()): - entry.set_text(os.path.expanduser(entry.get_text())) - self.option_changed(entry.get_parent(), option, entry.get_text()) + """Action triggered when the field's content changes.""" + text = entry.get_text() + if text.startswith('file:///'): + text = urllib.parse.unquote(text[len('file://'):]) + if not os.path.isabs(text): + text = os.path.expanduser(text) + if text != entry.get_text(): + entry.set_text(text) + self.option_changed(entry.get_parent(), option, text) # Directory chooser def generate_directory_chooser(self, option, path=None): @@ -439,8 +452,13 @@ class ConfigBox(VBox): self.option_widget = directory_chooser def _on_chooser_dir_set(self, entry, option): - """Action triggered on file select dialog 'file-set' signal.""" - self.option_changed(entry.get_parent(), option, entry.get_text()) + """Action triggered when the field's content changes.""" + text = entry.get_text() + if text.startswith('file:///'): + text = urllib.parse.unquote(text[len('file://'):]) + if text != entry.get_text(): + entry.set_text(text) + self.option_changed(entry.get_parent(), option, text) # Editable grid def generate_editable_grid(self, option_name, label, value=None): diff --git a/lutris/gui/config/common.py b/lutris/gui/config/common.py index f11b651a42d331482125d512a212e9d623d1275e..c88391b9011d4187382d5e55ab9288c8f7fca771 100644 --- a/lutris/gui/config/common.py +++ b/lutris/gui/config/common.py @@ -3,7 +3,7 @@ import os from gettext import gettext as _ -from gi.repository import Gdk, GLib, Gtk, Pango +from gi.repository import Gtk, Pango from lutris import runners, settings from lutris.config import LutrisConfig, make_game_config_id @@ -11,26 +11,26 @@ from lutris.game import Game from lutris.gui import dialogs from lutris.gui.config import DIALOG_HEIGHT, DIALOG_WIDTH from lutris.gui.config.boxes import GameBox, RunnerBox, SystemBox -from lutris.gui.dialogs import Dialog, DirectoryDialog, ErrorDialog, QuestionDialog +from lutris.gui.dialogs import DirectoryDialog, ErrorDialog, ModelessDialog, QuestionDialog from lutris.gui.widgets.common import Label, NumberEntry, SlugEntry, VBox from lutris.gui.widgets.notifications import send_notification -from lutris.gui.widgets.utils import BANNER_SIZE, ICON_SIZE, get_pixbuf +from lutris.gui.widgets.utils import get_pixbuf from lutris.runners import import_runner -from lutris.services.lutris import LutrisBanner, LutrisIcon -from lutris.util import resources, system +from lutris.services.lutris import LutrisBanner, LutrisCoverart, LutrisIcon, download_lutris_media from lutris.util.log import logger from lutris.util.strings import slugify # pylint: disable=too-many-instance-attributes, no-member -class GameDialogCommon(Dialog): +class GameDialogCommon(ModelessDialog): """Base class for config dialogs""" no_runner_label = _("Select a runner in the Game Info tab") - def __init__(self, title, parent=None): - super().__init__(title, parent=parent) - self.set_type_hint(Gdk.WindowTypeHint.NORMAL) + def __init__(self, title, parent=None, use_header_bar=True): + super().__init__(title, parent=parent, border_width=0, use_header_bar=use_header_bar) self.set_default_size(DIALOG_WIDTH, DIALOG_HEIGHT) + self.vbox.set_border_width(0) + self.notebook = None self.name_entry = None self.runner_box = None @@ -44,27 +44,20 @@ class GameDialogCommon(Dialog): self.year_entry = None self.slug_change_button = None self.runner_dropdown = None - self.banner_button = None - self.icon_button = None + self.image_buttons = {} + self.option_page_indices = set() + self.advanced_switch = None self.game_box = None self.system_box = None self.runner_name = None self.runner_index = None self.lutris_config = None + self.service_medias = {"icon": LutrisIcon(), "banner": LutrisBanner(), "coverart_big": LutrisCoverart()} - # These are independent windows, but start centered over - # a parent like a dialog. Not modal, not really transient, - # and does not share modality with other windows - so it - # needs its own window group. - Gtk.WindowGroup().add_window(self) - GLib.idle_add(self.clear_transient_for) + self.accelerators = Gtk.AccelGroup() + self.add_accel_group(self.accelerators) - def clear_transient_for(self): - # we need the parent set to be centered over the parent, but - # we don't want to be transient really- we want other windows - # able to come to the front. - self.set_transient_for(None) - return False + self.connect("response", self.on_response) @staticmethod def build_scrolled_window(widget): @@ -77,7 +70,9 @@ class GameDialogCommon(Dialog): def build_notebook(self): self.notebook = Gtk.Notebook(visible=True) self.notebook.set_show_border(False) - self.vbox.pack_start(self.notebook, True, True, 10) + self.notebook.connect("switch-page", lambda _n, _p, index: + self.update_advanced_switch_visibilty(index)) + self.vbox.pack_start(self.notebook, True, True, 0) def build_tabs(self, config_level): """Build tabs (for game and runner levels)""" @@ -87,6 +82,12 @@ class GameDialogCommon(Dialog): self._build_game_tab() self._build_runner_tab(config_level) self._build_system_tab(config_level) + self.update_advanced_switch_visibilty(self.notebook.get_current_page()) + + def update_advanced_switch_visibilty(self, current_page_index): + if self.advanced_switch and self.notebook: + show_switch = current_page_index in self.option_page_indices + self.advanced_switch.set_visible(show_switch) def _build_info_tab(self): info_box = VBox() @@ -113,6 +114,7 @@ class GameDialogCommon(Dialog): label = Label(_("Name")) box.pack_start(label, False, False, 0) self.name_entry = Gtk.Entry() + self.name_entry.set_max_length(150) if self.game: self.name_entry.set_text(self.game.name) box.pack_start(self.name_entry, True, True, 0) @@ -167,52 +169,51 @@ class GameDialogCommon(Dialog): label = Label("") banner_box.pack_start(label, False, False, 0) - self.banner_button = Gtk.Button() - self._set_image("banner") - self.banner_button.connect("clicked", self.on_custom_image_select, "banner") - banner_box.pack_start(self.banner_button, False, False, 0) - - reset_banner_button = Gtk.Button.new_from_icon_name("edit-clear", Gtk.IconSize.MENU) - reset_banner_button.set_relief(Gtk.ReliefStyle.NONE) - reset_banner_button.set_tooltip_text(_("Remove custom banner")) - reset_banner_button.connect("clicked", self.on_custom_image_reset_clicked, "banner") - banner_box.pack_start(reset_banner_button, False, False, 0) - - self.icon_button = Gtk.Button() - self._set_image("icon") - self.icon_button.connect("clicked", self.on_custom_image_select, "icon") - banner_box.pack_start(self.icon_button, False, False, 0) - - reset_icon_button = Gtk.Button.new_from_icon_name("edit-clear", Gtk.IconSize.MENU) - reset_icon_button.set_relief(Gtk.ReliefStyle.NONE) - reset_icon_button.set_tooltip_text(_("Remove custom icon")) - reset_icon_button.connect("clicked", self.on_custom_image_reset_clicked, "icon") - banner_box.pack_start(reset_icon_button, False, False, 0) + self._create_image_button(banner_box, "coverart_big", _("Set custom cover art"), _("Remove custom cover art")) + self._create_image_button(banner_box, "banner", _("Set custom banner"), _("Remove custom banner")) + self._create_image_button(banner_box, "icon", _("Set custom icon"), _("Remove custom icon")) return banner_box + def _create_image_button(self, banner_box, image_type, image_tooltip, reset_tooltip): + """This adds an image button and its reset button to the box given, + and adds the image button to self.image_buttons for future reference.""" + image_button = Gtk.Button() + self._set_image(image_type, image_button) + image_button.set_tooltip_text(image_tooltip) + image_button.connect("clicked", self.on_custom_image_select, image_type) + image_button.set_valign(Gtk.Align.CENTER) + banner_box.pack_start(image_button, False, False, 0) + + reset_button = Gtk.Button.new_from_icon_name("edit-clear", Gtk.IconSize.MENU) + reset_button.set_relief(Gtk.ReliefStyle.NONE) + reset_button.set_tooltip_text(reset_tooltip) + reset_button.connect("clicked", self.on_custom_image_reset_clicked, image_type) + reset_button.set_valign(Gtk.Align.CENTER) + banner_box.pack_start(reset_button, False, False, 0) + self.image_buttons[image_type] = image_button + def _get_year_box(self): box = Gtk.Box(spacing=12, margin_right=12, margin_left=12) label = Label(_("Release year")) box.pack_start(label, False, False, 0) - self.year_entry = NumberEntry() + self.year_entry.set_max_length(10) if self.game: self.year_entry.set_text(str(self.game.year or "")) box.pack_start(self.year_entry, True, True, 0) return box - def _set_image(self, image_format): + def _set_image(self, image_format, image_button): + service_media = self.service_medias[image_format] image = Gtk.Image() - service_media = LutrisBanner() if image_format == "banner" else LutrisIcon() - game_slug = self.game.slug if self.game else "" - image.set_from_pixbuf(service_media.get_pixbuf_for_game(game_slug)) - if image_format == "banner": - self.banner_button.set_image(image) - else: - self.icon_button.set_image(image) + game_slug = self.slug or (self.game.slug if self.game else "") + + pixbuf = service_media.get_pixbuf_for_game(game_slug, service_media.config_ui_size) + image.set_from_pixbuf(pixbuf) + image_button.set_image(image) def _get_runner_dropdown(self): runner_liststore = self._get_runner_liststore() @@ -254,7 +255,12 @@ class GameDialogCommon(Dialog): self.change_game_slug() def change_game_slug(self): - self.slug = self.slug_entry.get_text() + slug = self.slug_entry.get_text() + download_lutris_media(slug) + + self.slug = slug + for image_type, image_button in self.image_buttons.items(): + self._set_image(image_type, image_button) self.slug_entry.set_sensitive(False) self.slug_change_button.set_label(_("Change")) @@ -263,7 +269,7 @@ class GameDialogCommon(Dialog): default_path=self.game.directory, parent=self) if not new_location.folder or new_location.folder == self.game.directory: return - move_dialog = dialogs.MoveDialog(self.game, new_location.folder) + move_dialog = dialogs.MoveDialog(self.game, new_location.folder, parent=self) move_dialog.connect("game-moved", self.on_game_moved) move_dialog.move() @@ -301,46 +307,72 @@ class GameDialogCommon(Dialog): runner_sw = self.build_scrolled_window(self.runner_box) else: runner_sw = Gtk.Label(label=self.no_runner_label) - self._add_notebook_tab(runner_sw, _("Runner options")) + page_index = self._add_notebook_tab(runner_sw, _("Runner options")) + self.option_page_indices.add(page_index) def _build_system_tab(self, _config_level): if not self.lutris_config: raise RuntimeError("Lutris config not loaded yet") self.system_box = SystemBox(self.lutris_config) - self._add_notebook_tab( + page_index = self._add_notebook_tab( self.build_scrolled_window(self.system_box), _("System options") ) + self.option_page_indices.add(page_index) def _add_notebook_tab(self, widget, label): - self.notebook.append_page(widget, Gtk.Label(label=label)) + return self.notebook.append_page(widget, Gtk.Label(label=label)) def build_action_area(self, button_callback): - self.action_area.set_layout(Gtk.ButtonBoxStyle.EDGE) - - # Advanced settings checkbox - checkbox = Gtk.CheckButton(label=_("Show advanced options")) - if settings.read_setting("show_advanced_options") == "True": - checkbox.set_active(True) - checkbox.connect("toggled", self.on_show_advanced_options_toggled) - self.action_area.pack_start(checkbox, False, False, 5) + self.action_area.set_layout(Gtk.ButtonBoxStyle.END) + self.action_area.set_border_width(10) # Buttons - hbox = Gtk.Box() - cancel_button = Gtk.Button(label=_("Cancel")) - cancel_button.connect("clicked", self.on_cancel_clicked) - hbox.pack_start(cancel_button, True, True, 10) + cancel_button = self.add_button(_("Cancel"), Gtk.ResponseType.CANCEL) + cancel_button.set_valign(Gtk.Align.CENTER) - save_button = Gtk.Button(label=_("Save")) + save_button = self.add_styled_button(_("Save"), Gtk.ResponseType.NONE, css_class="suggested-action") + save_button.set_valign(Gtk.Align.CENTER) save_button.connect("clicked", button_callback) - hbox.pack_start(save_button, True, True, 0) - self.action_area.pack_start(hbox, True, True, 0) - def on_show_advanced_options_toggled(self, checkbox): - value = bool(checkbox.get_active()) - settings.write_setting("show_advanced_options", value) + key, mod = Gtk.accelerator_parse("s") + save_button.add_accelerator("clicked", self.accelerators, key, mod, Gtk.AccelFlags.VISIBLE) + + # Advanced settings toggle + + if self.props.use_header_bar: + switch_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, + spacing=5, + no_show_all=True) + switch_box.set_tooltip_text(_("Show advanced options")) - self._set_advanced_options_visible(value) + switch_label = Gtk.Label(_("Advanced"), visible=True) + switch = Gtk.Switch(visible=True) + switch.set_state(settings.read_setting("show_advanced_options") == "True") + switch.connect("state_set", lambda _w, s: + self.on_show_advanced_options_toggled(bool(s))) + + switch_box.pack_start(switch_label, False, False, 0) + switch_box.pack_end(switch, False, False, 0) + + header_bar = self.get_header_bar() + header_bar.pack_end(switch_box) + + self.advanced_switch = switch_box + self.update_advanced_switch_visibilty(self.notebook.get_current_page()) + else: + checkbox = Gtk.CheckButton(label=_("Show advanced options")) + checkbox.set_active(settings.read_setting("show_advanced_options") == "True") + checkbox.connect("toggled", lambda *x: + self.on_show_advanced_options_toggled(bool(checkbox.get_active()))) + checkbox.set_halign(Gtk.Align.START) + self.action_area.pack_start(checkbox, True, True, 0) + self.action_area.set_child_secondary(checkbox, True) + + def on_show_advanced_options_toggled(self, is_active): + settings.write_setting("show_advanced_options", is_active) + + self._set_advanced_options_visible(is_active) def _set_advanced_options_visible(self, value): """Change visibility of advanced options across all config tabs.""" @@ -404,16 +436,19 @@ class GameDialogCommon(Dialog): def _rebuild_tabs(self): for i in range(self.notebook.get_n_pages(), 1, -1): self.notebook.remove_page(i - 1) + self.option_page_indices.clear() self._build_game_tab() self._build_runner_tab("game") self._build_system_tab("game") self.show_all() - def on_cancel_clicked(self, _widget=None, _event=None): - """Dialog destroy callback.""" - if self.game: - self.game.load_config() - self.destroy() + def on_response(self, _widget, response): + if response in (Gtk.ResponseType.CANCEL, response == Gtk.ResponseType.DELETE_EVENT): + # Reload the config to clean out any changes we may have made + if self.game: + self.game.load_config() + if response != Gtk.ResponseType.NONE: + self.destroy() def is_valid(self): if not self.runner_name: @@ -468,6 +503,10 @@ class GameDialogCommon(Dialog): runner_class = runners.import_runner(self.runner_name) runner = runner_class(self.lutris_config) + # extract icon for wine games + if self.runner_name == "wine" and "icon" not in self.game.custom_images: + runner.extract_icon_exe(self.slug) + self.game.name = name self.game.slug = self.slug self.game.year = year @@ -497,35 +536,28 @@ class GameDialogCommon(Dialog): response = dialog.run() if response == Gtk.ResponseType.ACCEPT: + slug = self.slug or self.game.slug image_path = dialog.get_filename() - if image_type == "banner": - self.game.has_custom_banner = True - dest_path = os.path.join(settings.BANNER_PATH, "%s.jpg" % self.game.slug) - size = BANNER_SIZE - file_format = "jpeg" - else: - self.game.has_custom_icon = True - dest_path = resources.get_icon_path(self.game.slug) - size = ICON_SIZE - file_format = "png" + service_media = self.service_medias[image_type] + self.game.custom_images.add(image_type) + dest_path = service_media.get_absolute_path(slug) + file_format = service_media.file_format + size = service_media.custom_media_storage_size pixbuf = get_pixbuf(image_path, size) - pixbuf.savev(dest_path, file_format, [], []) - self._set_image(image_type) - - if image_type == "icon": - system.update_desktop_icons() + # JPEG encoding looks rather better at high quality; + # PNG encoding just ignores this option. + pixbuf.savev(dest_path, file_format, ["quality"], ["100"]) + self._set_image(image_type, self.image_buttons[image_type]) + service_media.update_desktop() dialog.destroy() def on_custom_image_reset_clicked(self, _widget, image_type): - if image_type == "banner": - self.game.has_custom_banner = False - dest_path = os.path.join(settings.BANNER_PATH, "%s.jpg" % self.game.slug) - elif image_type == "icon": - self.game.has_custom_icon = False - dest_path = resources.get_icon_path(self.game.slug) - else: - raise ValueError("Unsupported image type %s" % image_type) + slug = self.slug or self.game.slug + service_media = self.service_medias[image_type] + dest_path = service_media.get_absolute_path(slug) + self.game.custom_images.discard(image_type) if os.path.isfile(dest_path): os.remove(dest_path) - self._set_image(image_type) + download_lutris_media(self.game.slug) + self._set_image(image_type, self.image_buttons[image_type]) diff --git a/lutris/gui/config/edit_game.py b/lutris/gui/config/edit_game.py index 855418f73426b09b37c6c9309f7c3178d4f0c0c6..361b5a33455e82660d2b21269a2cba06d5ee9c2c 100644 --- a/lutris/gui/config/edit_game.py +++ b/lutris/gui/config/edit_game.py @@ -15,5 +15,4 @@ class EditGameConfigDialog(GameDialogCommon): self.build_notebook() self.build_tabs("game") self.build_action_area(self.on_save) - self.connect("delete-event", self.on_cancel_clicked) self.show_all() diff --git a/lutris/gui/config/preferences_box.py b/lutris/gui/config/preferences_box.py index cafede3eff34e0e3b5eb56f5c187b56b6d5e2a24..46ad8ffb11ba6d22864a5a39f8db350b643256f9 100644 --- a/lutris/gui/config/preferences_box.py +++ b/lutris/gui/config/preferences_box.py @@ -10,8 +10,9 @@ class PreferencesBox(VBox): settings_options = { "hide_client_on_game_start": _("Minimize client when a game is launched"), "hide_text_under_icons": _("Hide text under icons (requires restart)"), - "show_tray_icon": _("Show Tray Icon (requires restart)"), - "dark_theme": _("Use dark theme (requires dark theme variant for Gtk)") + "show_tray_icon": _("Show Tray Icon"), + "dark_theme": _("Use dark theme (requires dark theme variant for Gtk)"), + "discord_rpc": _("Enable Discord Rich Presence for Available Games"), } def _get_section_label(self, text): @@ -60,3 +61,7 @@ class PreferencesBox(VBox): if setting_key == "dark_theme": application = Gio.Application.get_default() application.style_manager.is_config_dark = state + elif setting_key == "show_tray_icon": + application = Gio.Application.get_default() + if application.window.get_visible(): + application.set_tray_icon() diff --git a/lutris/gui/config/preferences_dialog.py b/lutris/gui/config/preferences_dialog.py index 3950bc2fab3e646f840db4c2228f72b1185d2899..6bc0641c486c7a520a8f173747c432584a97f0b7 100644 --- a/lutris/gui/config/preferences_dialog.py +++ b/lutris/gui/config/preferences_dialog.py @@ -15,7 +15,7 @@ from lutris.gui.config.sysinfo_box import SysInfoBox # pylint: disable=no-member class PreferencesDialog(GameDialogCommon): def __init__(self, parent=None): - super().__init__(_("WineGame settings"), parent=parent) + super().__init__(_("WineGame settings"), parent=parent, use_header_bar=False) self.set_border_width(0) self.set_default_size(1010, 600) self.lutris_config = LutrisConfig() @@ -34,6 +34,7 @@ class PreferencesDialog(GameDialogCommon): self.stack.set_interpolate_size(True) hbox.add(self.stack) self.vbox.pack_start(hbox, True, True, 0) + self.vbox.set_border_width(0) # keep everything flush with the window edge self.stack.add_named( self.build_scrolled_window(PreferencesBox()), "prefs-stack" @@ -57,10 +58,6 @@ class PreferencesDialog(GameDialogCommon): "system-stack" ) self.build_action_area(self.on_save) - self.action_area.set_margin_bottom(12) - self.action_area.set_margin_right(12) - self.action_area.set_margin_left(12) - self.action_area.set_margin_top(12) def on_sidebar_activated(self, _listbox, row): if row.get_children()[0].stack_id == "system-stack": diff --git a/lutris/gui/config/runner_box.py b/lutris/gui/config/runner_box.py index 864daa7e07e5cdcf9c0b89b7cffe18809b6f332e..30cde7d62a95161cb3b18b357c0bfd01a95179f5 100644 --- a/lutris/gui/config/runner_box.py +++ b/lutris/gui/config/runner_box.py @@ -7,7 +7,7 @@ from lutris.gui.config.runner import RunnerConfigDialog from lutris.gui.dialogs import ErrorDialog, QuestionDialog from lutris.gui.dialogs.download import simple_downloader from lutris.gui.dialogs.runner_install import RunnerInstallDialog -from lutris.gui.widgets.utils import ICON_SIZE, get_icon +from lutris.gui.widgets.utils import ICON_SIZE, get_runtime_icon from lutris.util.log import logger @@ -28,7 +28,7 @@ class RunnerBox(Gtk.Box): self.set_margin_left(12) self.set_margin_right(12) self.runner = runners.import_runner(runner_name)() - icon = get_icon(self.runner.name, icon_format='pixbuf', size=ICON_SIZE) + icon = get_runtime_icon(self.runner.name, icon_format='pixbuf', size=ICON_SIZE) if icon: runner_icon = Gtk.Image(visible=True) runner_icon.set_from_pixbuf(icon) @@ -74,10 +74,11 @@ class RunnerBox(Gtk.Box): _button.get_style_context().add_class("circular") _button.connect("clicked", self.on_versions_clicked) else: - if self.runner.is_installed(): + if self.runner.can_uninstall(): _button = Gtk.Button.new_from_icon_name("edit-delete-symbolic", Gtk.IconSize.BUTTON) _button.get_style_context().add_class("circular") _button.connect("clicked", self.on_remove_clicked) + _button.set_sensitive(self.runner.can_uninstall()) else: _button = Gtk.Button.new_from_icon_name("system-software-install-symbolic", Gtk.IconSize.BUTTON) _button.get_style_context().add_class("circular") @@ -86,12 +87,10 @@ class RunnerBox(Gtk.Box): return _button def on_versions_clicked(self, widget): - RunnerInstallDialog( - _("Manage %s versions") % self.runner.name, - None, - self.runner.name - ) - # connect a runner-installed signal from the above dialog? + window = self.get_toplevel() + application = window.get_application() + title = _("Manage %s versions") % self.runner.name + application.show_window(RunnerInstallDialog, title=title, runner=self.runner, parent=window) def on_install_clicked(self, widget): """Install a runner.""" @@ -103,7 +102,7 @@ class RunnerBox(Gtk.Box): runners.NonInstallableRunnerError, ) as ex: logger.error(ex) - ErrorDialog(ex.message) + ErrorDialog(ex.message, parent=self.get_toplevel()) return if self.runner.is_installed(): self.emit("runner-installed") @@ -118,6 +117,7 @@ class RunnerBox(Gtk.Box): def on_remove_clicked(self, widget): dialog = QuestionDialog( { + "parent": self.get_toplevel(), "title": _("Do you want to uninstall %s?") % self.runner.human_name, "question": _("This will remove %s and all associated data." % self.runner.human_name) diff --git a/lutris/gui/config/services_box.py b/lutris/gui/config/services_box.py index cabd44aa623e2b5043fe09d25b00df4a71d04c8b..de048fab49db0b4e71fe77fc2033e8405d6d8e16 100644 --- a/lutris/gui/config/services_box.py +++ b/lutris/gui/config/services_box.py @@ -4,7 +4,7 @@ from gi.repository import GLib, GObject, Gtk from lutris import settings from lutris.gui.config.base_config_box import BaseConfigBox -from lutris.gui.widgets.utils import ICON_SIZE, get_icon +from lutris.gui.widgets.utils import ICON_SIZE, get_runtime_icon, has_stock_icon from lutris.services import SERVICES @@ -42,12 +42,13 @@ class ServicesBox(BaseConfigBox): visible=True, ) service = SERVICES[service_key] - pixbuf = get_icon(service.icon, icon_format="pixbuf", size=ICON_SIZE) + pixbuf = get_runtime_icon(service.icon, icon_format="pixbuf", size=ICON_SIZE) if pixbuf: icon = Gtk.Image(visible=True) icon.set_from_pixbuf(pixbuf) else: - icon = Gtk.Image.new_from_icon_name(service.id, Gtk.IconSize.DND) + icon_name = service.id if has_stock_icon(service.id) else "package-x-generic-symbolic" + icon = Gtk.Image.new_from_icon_name(icon_name, Gtk.IconSize.DND) icon.show() box.pack_start(icon, False, False, 0) label = Gtk.Label(service.name, visible=True) diff --git a/lutris/gui/dialogs/__init__.py b/lutris/gui/dialogs/__init__.py index fadf1fafdd426ba4a1d52c4c468bd8851e48162c..2d26af337efb0bf4cf4a01bef98a7764e63fe25f 100644 --- a/lutris/gui/dialogs/__init__.py +++ b/lutris/gui/dialogs/__init__.py @@ -2,7 +2,11 @@ import os from gettext import gettext as _ -from gi.repository import GLib, GObject, Gtk +import gi + +gi.require_version('Gtk', '3.0') + +from gi.repository import Gdk, GLib, GObject, Gtk from lutris import api, settings from lutris.gui.widgets.log_text_view import LogTextView @@ -13,15 +17,62 @@ from lutris.util.log import logger class Dialog(Gtk.Dialog): - def __init__(self, title=None, parent=None, flags=0, buttons=None): - super().__init__(title, parent, flags, buttons) - self.set_border_width(10) + def __init__(self, title=None, parent=None, flags=0, buttons=None, **kwargs): + super().__init__(title, parent, flags, buttons, **kwargs) self.connect("delete-event", self.on_destroy) self.set_destroy_with_parent(True) def on_destroy(self, _widget, _data=None): self.destroy() + def add_styled_button(self, button_text, response_id, css_class): + button = self.add_button(button_text, response_id) + if css_class: + style_context = button.get_style_context() + style_context.add_class(css_class) + return button + + def add_default_button(self, button_text, response_id, css_class="suggested-action"): + """Adds a button to the dialog with a particular response id, but + also makes it the default and styles it as the suggested action.""" + button = self.add_styled_button(button_text, response_id, css_class) + self.set_default_response(response_id) + return button + + +class ModalDialog(Dialog): + """A base class of moodal dialogs, which sets the flag for you.""" + + def __init__(self, title=None, parent=None, flags=0, buttons=None, **kwargs): + super().__init__(title, parent, flags | Gtk.DialogFlags.MODAL, buttons, **kwargs) + + +class ModelessDialog(Dialog): + """A base class for modeless dialogs. They have a parent only temporarily, so + they can be centered over it during creation. But each modeless dialog gets + its own window group, so it treats its own modal dialogs separately, and it resets + its transient-for after being created.""" + + def __init__(self, title=None, parent=None, flags=0, buttons=None, **kwargs): + super().__init__(title, parent, flags, buttons, **kwargs) + # These are not stuck above the 'main' window, but can be + # re-ordered freely. + self.set_type_hint(Gdk.WindowTypeHint.NORMAL) + + # These are independent windows, but start centered over + # a parent like a dialog. Not modal, not really transient, + # and does not share modality with other windows - so it + # needs its own window group. + Gtk.WindowGroup().add_window(self) + GLib.idle_add(self._clear_transient_for) + + def _clear_transient_for(self): + # we need the parent set to be centered over the parent, but + # we don't want to be transient really- we want other windows + # able to come to the front. + self.set_transient_for(None) + return False + class GtkBuilderDialog(GObject.Object): dialog_object = NotImplemented @@ -79,9 +130,11 @@ class NoticeDialog(Gtk.MessageDialog): """Display a message to the user.""" - def __init__(self, message, parent=None): + def __init__(self, message, secondary=None, parent=None): super().__init__(buttons=Gtk.ButtonsType.OK, parent=parent) self.set_markup(message) + if secondary: + self.format_secondary_text(secondary[:256]) self.run() self.destroy() @@ -172,8 +225,10 @@ class FileDialog: class LutrisInitDialog(Gtk.Dialog): - def __init__(self, init_lutris): + def __init__(self, runtime_updater): super().__init__() + self.runtime_updater = runtime_updater + self.set_size_request(320, 60) self.set_border_width(24) self.set_decorated(False) @@ -186,36 +241,41 @@ class LutrisInitDialog(Gtk.Dialog): self.get_content_area().add(vbox) self.progress_timeout = GLib.timeout_add(125, self.show_progress) self.show_all() + + self.connect("response", self.on_response) self.connect("destroy", self.on_destroy) - AsyncCall(self.initialize, self.init_cb, init_lutris) + AsyncCall(runtime_updater.update_runtimes, self.init_cb) def show_progress(self): self.progress.pulse() return True - def initialize(self, init_lutris, *args): - init_lutris() - def init_cb(self, _result, error): if error: ErrorDialog(str(error)) self.destroy() + def on_response(self, _widget, response): + self.runtime_updater.cancel() + self.destroy() + def on_destroy(self, window): GLib.source_remove(self.progress_timeout) return True -class InstallOrPlayDialog(Gtk.Dialog): +class InstallOrPlayDialog(ModalDialog): - def __init__(self, game_name): - Gtk.Dialog.__init__(self, _("%s is already installed") % game_name) - self.connect("delete-event", lambda *x: self.destroy()) + def __init__(self, game_name, parent=None): + super().__init__(title=_("%s is already installed") % game_name, parent=parent, border_width=10) self.action = "play" self.action_confirmed = False + self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) + self.add_default_button(Gtk.STOCK_OK, Gtk.ResponseType.OK) + self.connect("response", self.on_response) + self.set_size_request(320, 120) - self.set_border_width(12) vbox = Gtk.Box.new(Gtk.Orientation.VERTICAL, 6) self.get_content_area().add(vbox) play_button = Gtk.RadioButton.new_with_label_from_widget(None, _("Launch game")) @@ -226,31 +286,31 @@ class InstallOrPlayDialog(Gtk.Dialog): install_button.connect("toggled", self.on_button_toggled, "install") vbox.pack_start(install_button, False, False, 0) - confirm_button = Gtk.Button(_("OK")) - confirm_button.connect("clicked", self.on_confirm) - vbox.pack_start(confirm_button, False, False, 0) - self.show_all() self.run() - def on_button_toggled(self, button, action): # pylint: disable=unused-argument + def on_button_toggled(self, _button, action): logger.debug("Action set to %s", action) self.action = action - def on_confirm(self, button): # pylint: disable=unused-argument - logger.debug("Action %s confirmed", self.action) - self.action_confirmed = True + def on_response(self, _widget, response): + logger.debug("Dialog response %s", response) + if response == Gtk.ResponseType.CANCEL: + self.action = None self.destroy() -class LaunchConfigSelectDialog(Gtk.Dialog): - def __init__(self, game, configs): - Gtk.Dialog.__init__(self, _("Select game to launch")) - self.connect("delete-event", lambda *x: self.destroy()) +class LaunchConfigSelectDialog(ModalDialog): + def __init__(self, game, configs, parent=None): + super().__init__(title=_("Select game to launch"), parent=parent, border_width=10) self.config_index = 0 self.confirmed = False + + self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) + self.add_default_button(Gtk.STOCK_OK, Gtk.ResponseType.OK) + self.connect("response", self.on_response) + self.set_size_request(320, 120) - self.set_border_width(12) vbox = Gtk.Box.new(Gtk.Orientation.VERTICAL, 6) self.get_content_area().add(vbox) @@ -263,29 +323,14 @@ class LaunchConfigSelectDialog(Gtk.Dialog): _button.connect("toggled", self.on_button_toggled, i + 1) vbox.pack_start(_button, False, False, 0) - button_box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 6) - button_box.set_halign(Gtk.Align.END) - cancel_button = Gtk.Button(_("Cancel")) - cancel_button.connect("clicked", self.on_cancel) - button_box.pack_start(cancel_button, False, False, 0) - - confirm_button = Gtk.Button(_("OK")) - confirm_button.connect("clicked", self.on_confirm) - button_box.pack_start(confirm_button, False, False, 0) - vbox.pack_start(button_box, False, False, 0) - self.show_all() self.run() def on_button_toggled(self, _button, index): self.config_index = index - def on_cancel(self, _button): - self.confirmed = False - self.destroy() - - def on_confirm(self, _button): - self.confirmed = True + def on_response(self, _widget, response): + self.confirmed = response == Gtk.ResponseType.OK self.destroy() @@ -336,14 +381,17 @@ class ClientLoginDialog(GtkBuilderDialog): self.dialog.destroy() -class InstallerSourceDialog(Gtk.Dialog): +class InstallerSourceDialog(ModelessDialog): """Show install script source""" def __init__(self, code, name, parent): - Gtk.Dialog.__init__(self, _("Install script for {}").format(name), parent=parent) + super().__init__(title=_("Install script for {}").format(name), parent=parent, border_width=0) self.set_size_request(500, 350) - self.set_border_width(0) + + ok_button = self.add_default_button(Gtk.STOCK_OK, Gtk.ResponseType.OK) + ok_button.set_border_width(10) + self.connect("response", self.on_response) self.scrolled_window = Gtk.ScrolledWindow() self.scrolled_window.set_hexpand(True) @@ -354,16 +402,13 @@ class InstallerSourceDialog(Gtk.Dialog): source_box = LogTextView(source_buffer, autoscroll=False) + self.get_content_area().set_border_width(0) self.get_content_area().add(self.scrolled_window) self.scrolled_window.add(source_box) - close_button = Gtk.Button(_("OK")) - close_button.connect("clicked", self.on_close) - self.get_content_area().add(close_button) - self.show_all() - def on_close(self, *args): # pylint: disable=unused-argument + def on_response(self, *args): self.destroy() @@ -386,7 +431,7 @@ class DontShowAgainDialog(Gtk.MessageDialog): super().__init__(type=Gtk.MessageType.WARNING, buttons=Gtk.ButtonsType.OK, parent=parent) - self.set_border_width(12) + self.set_default_response(Gtk.ResponseType.OK) self.set_markup("%s" % message) if secondary_message: self.props.secondary_use_markup = True @@ -426,20 +471,19 @@ class WineNotInstalledWarning(DontShowAgainDialog): ) -class MoveDialog(Gtk.Dialog): +class MoveDialog(ModelessDialog): __gsignals__ = { "game-moved": (GObject.SIGNAL_RUN_FIRST, None, ()), } - def __init__(self, game, destination): - super().__init__() + def __init__(self, game, destination, parent=None): + super().__init__(parent=parent, border_width=24) self.game = game self.destination = destination self.new_directory = None self.set_size_request(320, 60) - self.set_border_width(24) self.set_decorated(False) vbox = Gtk.Box.new(Gtk.Orientation.VERTICAL, 12) label = Gtk.Label(_("Moving %s to %s..." % (game, destination))) @@ -463,6 +507,6 @@ class MoveDialog(Gtk.Dialog): def on_game_moved(self, _result, error): if error: - ErrorDialog(str(error)) + ErrorDialog(str(error), parent=self) self.emit("game-moved") self.destroy() diff --git a/lutris/gui/dialogs/cache.py b/lutris/gui/dialogs/cache.py index a5de4229a7563f55ef793daff359c0b7e39e55b4..a47bff863e765d176b2a7f0950f41fa0c947813d 100644 --- a/lutris/gui/dialogs/cache.py +++ b/lutris/gui/dialogs/cache.py @@ -1,20 +1,36 @@ from gettext import gettext as _ -from gi.repository import GLib, Gtk +from gi.repository import Gtk from lutris.cache import get_cache_path, save_cache_path +from lutris.gui.dialogs import ModalDialog from lutris.gui.widgets.common import FileChooserEntry -class CacheConfigurationDialog(Gtk.Dialog): - def __init__(self): - Gtk.Dialog.__init__(self, _("Cache configuration")) +class CacheConfigurationDialog(ModalDialog): + def __init__(self, parent=None): + super().__init__( + _("Cache configuration"), + parent=parent, + flags=Gtk.DialogFlags.MODAL, + border_width=10 + ) self.timer_id = None self.set_size_request(480, 150) - self.set_border_width(12) + self.cache_path = get_cache_path() or "" self.get_content_area().add(self.get_cache_config()) + + self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) + self.add_default_button(Gtk.STOCK_OK, Gtk.ResponseType.OK) + self.show_all() + result = self.run() + + if result == Gtk.ResponseType.OK: + save_cache_path(self.cache_path) + + self.destroy() def get_cache_config(self): """Return the widgets for the cache configuration""" @@ -23,9 +39,11 @@ class CacheConfigurationDialog(Gtk.Dialog): box = Gtk.Box(spacing=12, margin_right=12, margin_left=12) label = Gtk.Label(_("Cache path")) box.pack_start(label, False, False, 0) - cache_path = get_cache_path() path_chooser = FileChooserEntry( - title=_("Set the folder for the cache path"), action=Gtk.FileChooserAction.SELECT_FOLDER, path=cache_path + title=_("Set the folder for the cache path"), + action=Gtk.FileChooserAction.SELECT_FOLDER, + path=self.cache_path, + activates_default=True ) path_chooser.entry.connect("changed", self._on_cache_path_set) box.pack_start(path_chooser, True, True, 0) @@ -42,12 +60,4 @@ class CacheConfigurationDialog(Gtk.Dialog): return prefs_box def _on_cache_path_set(self, entry): - if self.timer_id: - GLib.source_remove(self.timer_id) - self.timer_id = GLib.timeout_add(1000, self.save_cache_setting, entry.get_text()) - - def save_cache_setting(self, value): - save_cache_path(value) - GLib.source_remove(self.timer_id) - self.timer_id = None - return False + self.cache_path = entry.get_text() diff --git a/lutris/gui/dialogs/download.py b/lutris/gui/dialogs/download.py index eb00086a24530348c524ba108385cdf3f1d1ca9a..e6380b019a90e2b884206baf840757bbd879f163 100644 --- a/lutris/gui/dialogs/download.py +++ b/lutris/gui/dialogs/download.py @@ -2,16 +2,16 @@ from gettext import gettext as _ from gi.repository import Gtk +from lutris.gui.dialogs import ModalDialog from lutris.gui.widgets.download_progress_box import DownloadProgressBox -class DownloadDialog(Gtk.Dialog): +class DownloadDialog(ModalDialog): """Dialog showing a download in progress.""" - def __init__(self, url=None, dest=None, title=None, label=None, downloader=None): - Gtk.Dialog.__init__(self, title or _("Downloading file")) + def __init__(self, url=None, dest=None, title=None, label=None, downloader=None, parent=None): + super().__init__(title=title or _("Downloading file"), parent=parent, border_width=10) self.set_size_request(485, 104) - self.set_border_width(12) params = {"url": url, "dest": dest, "title": label or _("Downloading %s") % url} self.dialog_progress_box = DownloadProgressBox(params, downloader=downloader) @@ -27,7 +27,7 @@ class DownloadDialog(Gtk.Dialog): self.response(Gtk.ResponseType.OK) self.destroy() - def download_cancelled(self, _widget, data): + def download_cancelled(self, _widget): self.response(Gtk.ResponseType.CANCEL) self.destroy() diff --git a/lutris/gui/dialogs/issue.py b/lutris/gui/dialogs/issue.py index 5b3ee0055a3ea69d42005d3d30bc5209aa5bc4e3..ebe476b611672dac7b0eecb5e59c24819cc3aec0 100644 --- a/lutris/gui/dialogs/issue.py +++ b/lutris/gui/dialogs/issue.py @@ -1,13 +1,10 @@ """GUI dialog for reporting issues""" -# Standard Library import json import os from gettext import gettext as _ -# Third Party Libraries from gi.repository import Gtk -# Lutris Modules from lutris.gui.dialogs import NoticeDialog from lutris.gui.widgets.window import BaseApplicationWindow from lutris.util.linux import gather_system_info diff --git a/lutris/gui/dialogs/runner_install.py b/lutris/gui/dialogs/runner_install.py index c425c3678fc3748922fdab72d544f6f2ccb24c55..fa578d6b873b15066fa98b7f4a83b61854dab207 100644 --- a/lutris/gui/dialogs/runner_install.py +++ b/lutris/gui/dialogs/runner_install.py @@ -2,6 +2,7 @@ # pylint: disable=no-member import gettext import os +import re from collections import defaultdict from gettext import gettext as _ @@ -10,21 +11,19 @@ from gi.repository import GLib, Gtk from lutris import api, settings from lutris.database.games import get_games_by_runner from lutris.game import Game -from lutris.gui.dialogs import Dialog, ErrorDialog, QuestionDialog +from lutris.gui.dialogs import ErrorDialog, ModalDialog, ModelessDialog, QuestionDialog +from lutris.gui.widgets.utils import has_stock_icon from lutris.util import jobs, system from lutris.util.downloader import Downloader from lutris.util.extract import extract_archive from lutris.util.log import logger -class ShowAppsDialog(Dialog): +class ShowAppsDialog(ModalDialog): def __init__(self, title, parent, runner_version, apps): - super().__init__(title, parent, Gtk.DialogFlags.MODAL) - self.add_buttons( - Gtk.STOCK_OK, Gtk.ResponseType.OK - ) - - self.set_default_size(400, 500) + super().__init__(title, parent, border_width=10) + self.add_default_button(Gtk.STOCK_OK, Gtk.ResponseType.OK) + self.set_default_size(600, 400) label = Gtk.Label.new(_("Showing games using %s") % runner_version) self.vbox.add(label) @@ -49,7 +48,7 @@ class ShowAppsDialog(Dialog): self.show_all() -class RunnerInstallDialog(Dialog): +class RunnerInstallDialog(ModelessDialog): """Dialog displaying available runner version and downloads them""" COL_VER = 0 COL_ARCH = 1 @@ -58,10 +57,14 @@ class RunnerInstallDialog(Dialog): COL_PROGRESS = 4 COL_USAGE = 5 + INSTALLED_ICON_NAME = "software-installed-symbolic" \ + if has_stock_icon("software-installed-symbolic") else "wine-symbolic" + def __init__(self, title, parent, runner): - super().__init__(title, parent, 0) - self.add_buttons(_("_OK"), Gtk.ButtonsType.OK) - self.runner = runner + super().__init__(title, parent, 0, border_width=10) + self.add_default_button(Gtk.STOCK_OK, Gtk.ResponseType.OK) + self.runner_name = runner.name + self.runner_directory = runner.directory self.runner_info = {} self.installing = {} self.set_default_size(720, 540) @@ -78,7 +81,7 @@ class RunnerInstallDialog(Dialog): self.show_all() self.runner_store = Gtk.ListStore(str, str, str, bool, int, int) - jobs.AsyncCall(api.get_runners, self.runner_fetch_cb, self.runner) + jobs.AsyncCall(api.get_runners, self.runner_fetch_cb, self.runner_name) def runner_fetch_cb(self, runner_info, error): """Clear the box and display versions from runner_info""" @@ -128,11 +131,15 @@ class RunnerInstallDialog(Dialog): row.runner = runner hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) row.hbox = hbox - chk_installed = Gtk.CheckButton() - chk_installed.set_sensitive(False) - chk_installed.set_active(runner[self.COL_INSTALLED]) - hbox.pack_start(chk_installed, False, True, 0) - row.chk_installed = chk_installed + + icon = Gtk.Image.new_from_icon_name(self.INSTALLED_ICON_NAME, Gtk.IconSize.MENU) + icon.set_visible(runner[self.COL_INSTALLED]) + icon_container = Gtk.Box() + icon_container.set_size_request(16, 16) + icon_container.pack_start(icon, False, False, 0) + + hbox.pack_start(icon_container, False, True, 0) + row.icon = icon lbl_version = Gtk.Label(runner[self.COL_VER]) lbl_version.set_max_width_chars(30) @@ -155,16 +162,18 @@ class RunnerInstallDialog(Dialog): app_count = runner[self.COL_USAGE] or 0 if app_count > 0: usage_button_text = gettext.ngettext( - "_View %d game", - "_View %d games", + "View %d game", + "View %d games", app_count ) % app_count - usage_button = Gtk.Button.new_with_mnemonic(usage_button_text) - usage_button.connect("button_press_event", self.on_show_apps_usage, row) + usage_button = Gtk.LinkButton.new_with_label(usage_button_text) + usage_button.set_valign(Gtk.Align.CENTER) + usage_button.connect("clicked", self.on_show_apps_usage, row) hbox.pack_end(usage_button, False, True, 2) button = Gtk.Button() + button.set_size_request(100, -1) hbox.pack_end(button, False, True, 0) hbox.reorder_child(button, 0) row.install_uninstall_cancel_button = button @@ -177,30 +186,38 @@ class RunnerInstallDialog(Dialog): def update_listboxrow(self, row): row.install_progress.set_visible(False) - row.chk_installed.set_active(row.runner[self.COL_INSTALLED]) + + runner = row.runner + icon = row.icon + icon.set_visible(runner[self.COL_INSTALLED]) + button = row.install_uninstall_cancel_button + style_context = button.get_style_context() if row.handler_id is not None: button.disconnect(row.handler_id) row.handler_id = None - if row.runner[self.COL_VER] in self.installing: + if runner[self.COL_VER] in self.installing: + style_context.remove_class("destructive-action") button.set_label(_("Cancel")) - handler_id = button.connect("button_press_event", self.on_cancel_install, row) + handler_id = button.connect("clicked", self.on_cancel_install, row) else: - if row.runner[self.COL_INSTALLED]: + if runner[self.COL_INSTALLED]: + style_context.add_class("destructive-action") button.set_label(_("Uninstall")) - handler_id = button.connect("button_press_event", self.on_uninstall_runner, row) + handler_id = button.connect("clicked", self.on_uninstall_runner, row) else: + style_context.remove_class("destructive-action") button.set_label(_("Install")) - handler_id = button.connect("button_press_event", self.on_install_runner, row) + handler_id = button.connect("clicked", self.on_install_runner, row) row.install_uninstall_cancel_button = button row.handler_id = handler_id - def on_show_apps_usage(self, _widget, _button, row): + def on_show_apps_usage(self, _button, row): """Return grid with games that uses this wine version""" runner = row.runner runner_version = "%s-%s" % (runner[self.COL_VER], runner[self.COL_ARCH]) - runner_games = get_games_by_runner(self.runner) + runner_games = get_games_by_runner(self.runner_name) apps = [] for db_game in runner_games: if not db_game["installed"]: @@ -219,7 +236,8 @@ class RunnerInstallDialog(Dialog): def populate_store(self): """Return a ListStore populated with the runner versions""" version_usage = self.get_usage_stats() - for version_info in reversed(self.runner_info["versions"]): + ordered = sorted(self.runner_info["versions"], key=RunnerInstallDialog.get_version_sort_key) + for version_info in reversed(ordered): is_installed = os.path.exists(self.get_runner_path(version_info["version"], version_info["architecture"])) games_using = version_usage.get("%(version)s-%(architecture)s" % version_info) self.runner_store.append( @@ -229,20 +247,35 @@ class RunnerInstallDialog(Dialog): ] ) + @staticmethod + def get_version_sort_key(version): + """Generate a sorting key that sorts first on the version number part of the version, + and which breaks the version number into its components, which are parsed as integers""" + raw_version = version["version"] + # Extract version numbers from the end of the version string. + # We look for things like xx-7.2 or xxx-4.3-2. A leading period + # will be part of the version, but a leading hyphen will not. + match = re.search(r"^(.*?)\-?(\d[.\-\d]*)$", raw_version) + if match: + version_parts = [int(p) for p in match.group(2).replace("-", ".").split(".") if p] + return version_parts, raw_version, version["architecture"] + + # If we fail to extract the version, we'll wind up sorting this one to the end. + return [], raw_version, version["architecture"] + def get_installed_versions(self): """List versions available locally""" - runner_path = os.path.join(settings.RUNNER_DIR, self.runner) - if not os.path.exists(runner_path): + if not os.path.exists(self.runner_directory): return set() return { tuple(p.rsplit("-", 1)) - for p in os.listdir(runner_path) + for p in os.listdir(self.runner_directory) if "-" in p } def get_runner_path(self, version, arch): """Return the local path where the runner is/will be installed""" - return os.path.join(settings.RUNNER_DIR, self.runner, "{}-{}".format(version, arch)) + return os.path.join(self.runner_directory, "{}-{}".format(version, arch)) def get_dest_path(self, row): """Return temporary path where the runners should be downloaded to""" @@ -264,7 +297,7 @@ class RunnerInstallDialog(Dialog): else: self.install_runner(row) - def on_cancel_install(self, widget, button, row): + def on_cancel_install(self, widget, row): self.cancel_install(row) def cancel_install(self, row): @@ -277,7 +310,7 @@ class RunnerInstallDialog(Dialog): self.update_listboxrow(row) row.install_progress.set_visible(False) - def on_uninstall_runner(self, widget, button, row): + def on_uninstall_runner(self, widget, row): self.uninstall_runner(row) def uninstall_runner(self, row): @@ -287,14 +320,14 @@ class RunnerInstallDialog(Dialog): arch = runner[self.COL_ARCH] system.remove_folder(self.get_runner_path(version, arch)) runner[self.COL_INSTALLED] = False - if self.runner == "wine": + if self.runner_name == "wine": logger.debug("Clearing wine version cache") from lutris.util.wine.wine import get_wine_versions get_wine_versions.cache_clear() self.update_listboxrow(row) - def on_install_runner(self, _widget, _button, row): + def on_install_runner(self, _widget, row): self.install_runner(row) def install_runner(self, row): @@ -344,7 +377,7 @@ class RunnerInstallDialog(Dialog): def get_usage_stats(self): """Return the usage for each version""" - runner_games = get_games_by_runner(self.runner) + runner_games = get_games_by_runner(self.runner_name) version_usage = defaultdict(list) for db_game in runner_games: if not db_game["installed"]: @@ -386,7 +419,7 @@ class RunnerInstallDialog(Dialog): row.install_progress.set_fraction(0.0) row.install_progress.hide() self.update_listboxrow(row) - if self.runner == "wine": + if self.runner_name == "wine": logger.debug("Clearing wine version cache") from lutris.util.wine.wine import get_wine_versions get_wine_versions.cache_clear() diff --git a/lutris/gui/dialogs/uninstall_game.py b/lutris/gui/dialogs/uninstall_game.py index feca6aeb8a655b7621fe5a174e0959a1d47421c1..36c99a4a1ee7c8467ee437f0707ade2c45ff602c 100644 --- a/lutris/gui/dialogs/uninstall_game.py +++ b/lutris/gui/dialogs/uninstall_game.py @@ -4,19 +4,25 @@ from gi.repository import Gtk, Pango from lutris.database.games import get_games from lutris.game import Game -from lutris.gui.dialogs import Dialog, QuestionDialog +from lutris.gui.dialogs import ModalDialog, QuestionDialog from lutris.util.jobs import AsyncCall from lutris.util.log import logger from lutris.util.strings import gtk_safe, human_size from lutris.util.system import get_disk_size, is_removeable, reverse_expanduser -class UninstallGameDialog(Dialog): +class UninstallGameDialog(ModalDialog): def __init__(self, game_id, parent=None): - super().__init__(parent=parent) + super().__init__(parent=parent, border_width=10) self.set_size_request(640, 128) self.game = Game(game_id) self.delete_files = False + + self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) + self.delete_button = self.add_default_button(_("Uninstall"), Gtk.ResponseType.OK, + css_class="destructive-action") + self.connect("response", self.on_response) + container = Gtk.VBox(visible=True) self.get_content_area().add(container) @@ -31,15 +37,12 @@ class UninstallGameDialog(Dialog): self.folder_label = Gtk.Label(visible=True) self.folder_label.set_alignment(0, 0.5) - self.delete_button = Gtk.Button(_("Uninstall"), visible=True) - self.delete_button.connect("clicked", self.on_delete_clicked) - if not self.game.directory: self.folder_label.set_markup(_("No file will be deleted")) elif len(get_games(filters={"directory": self.game.directory})) > 1: self.folder_label.set_markup( _("The folder %s is used by other games and will be kept.") % self.game.directory) - elif is_removeable(self.game.directory): + elif is_removeable(self.game.directory, self.game.config.system_config): self.delete_button.set_sensitive(False) self.folder_label.set_markup(_("Calculating size…")) AsyncCall(get_disk_size, self.folder_size_cb, self.game.directory) @@ -53,17 +56,6 @@ class UninstallGameDialog(Dialog): self.confirm_delete_button.set_active(True) container.pack_start(self.confirm_delete_button, False, False, 4) - button_box = Gtk.HBox(visible=True) - button_box.set_margin_top(30) - style_context = button_box.get_style_context() - style_context.add_class("linked") - cancel_button = Gtk.Button(_("Cancel"), visible=True) - cancel_button.connect("clicked", self.on_close) - button_box.add(cancel_button) - button_box.add(self.delete_button) - container.pack_end(button_box, False, False, 0) - self.show() - def folder_size_cb(self, folder_size, error): if error: logger.error(error) @@ -79,39 +71,45 @@ class UninstallGameDialog(Dialog): ) ) - def on_close(self, _button): - self.destroy() - - def on_delete_clicked(self, button): - button.set_sensitive(False) - if not self.confirm_delete_button.get_active(): - self.delete_files = False - if self.delete_files and not hasattr(self.game.runner, "no_game_remove_warning"): - dlg = QuestionDialog( - { - "question": _( - "Please confirm.\nEverything under %s\n" - "will be deleted." - ) % gtk_safe(self.game.directory), - "title": _("Permanently delete files?"), - } - ) - if dlg.result != Gtk.ResponseType.YES: - button.set_sensitive(True) - return - if self.delete_files: - self.folder_label.set_markup(_("Uninstalling game and deleting files...")) - else: - self.folder_label.set_markup(_("Uninstalling game...")) - self.game.remove(self.delete_files) + def on_response(self, _widget, response): + if response == Gtk.ResponseType.OK: + self.delete_button.set_sensitive(False) + if not self.confirm_delete_button.get_active(): + self.delete_files = False + if self.delete_files and not hasattr(self.game.runner, "no_game_remove_warning"): + dlg = QuestionDialog( + { + "parent": self, + "question": _( + "Please confirm.\nEverything under %s\n" + "will be deleted." + ) % gtk_safe(self.game.directory), + "title": _("Permanently delete files?"), + } + ) + if dlg.result != Gtk.ResponseType.YES: + self.delete_button.set_sensitive(True) + self.stop_emission_by_name("response") + return + if self.delete_files: + self.folder_label.set_markup(_("Uninstalling game and deleting files...")) + else: + self.folder_label.set_markup(_("Uninstalling game...")) + self.game.remove(self.delete_files) self.destroy() -class RemoveGameDialog(Dialog): +class RemoveGameDialog(ModalDialog): def __init__(self, game_id, parent=None): - super().__init__(parent=parent) + super().__init__(parent=parent, border_width=10) self.set_size_request(640, 128) self.game = Game(game_id) + + self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) + self.remove_button = self.add_default_button(_("Remove"), Gtk.ResponseType.OK, + css_class="destructive-action") + self.connect("response", self.on_response) + container = Gtk.VBox(visible=True) self.get_content_area().add(container) @@ -128,25 +126,8 @@ class RemoveGameDialog(Dialog): _("Completely remove %s from the library?\nAll play time will be lost.") % self.game) container.pack_start(self.delete_label, False, False, 4) - button_box = Gtk.HBox(visible=True) - button_box.set_margin_top(30) - style_context = button_box.get_style_context() - style_context.add_class("linked") - cancel_button = Gtk.Button(_("Cancel"), visible=True) - cancel_button.connect("clicked", self.on_close) - button_box.add(cancel_button) - - self.remove_button = Gtk.Button(_("Remove"), visible=True) - self.remove_button.connect("clicked", self.on_remove_clicked) - - button_box.add(self.remove_button) - container.pack_end(button_box, False, False, 0) - self.show() - - def on_close(self, _button): - self.destroy() - - def on_remove_clicked(self, button): - button.set_sensitive(False) - self.game.delete() + def on_response(self, _widget, response): + if response == Gtk.ResponseType.OK: + self.remove_button.set_sensitive(False) + self.game.delete() self.destroy() diff --git a/lutris/gui/dialogs/webconnect_dialog.py b/lutris/gui/dialogs/webconnect_dialog.py index bc7f46cd4d4d738b92ec9813703d0d2c9a3515d1..f3cb033f19735a007cd4ede63f05b591d0b7e226 100644 --- a/lutris/gui/dialogs/webconnect_dialog.py +++ b/lutris/gui/dialogs/webconnect_dialog.py @@ -3,20 +3,22 @@ import os from gettext import gettext as _ import gi -gi.require_version("WebKit2", "4.0") +try: + gi.require_version("WebKit2", "4.1") +except (ImportError, ValueError): + gi.require_version("WebKit2", "4.0") + from gi.repository import WebKit2 -from lutris.gui.dialogs import Dialog +from lutris.gui.dialogs import ModalDialog + DEFAULT_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:100.0) Gecko/20100101 Firefox/100.0" -class WebConnectDialog(Dialog): +class WebConnectDialog(ModalDialog): """Login form for external services""" - default_width = 390 - default_height = 500 - def __init__(self, service, parent=None): self.context = WebKit2.WebContext.new() @@ -32,13 +34,13 @@ class WebConnectDialog(Dialog): super().__init__(title=service.name, parent=parent) - self.set_border_width(0) - self.set_default_size(self.default_width, self.default_height) + self.set_default_size(self.service.login_window_width, self.service.login_window_height) self.webview = WebKit2.WebView.new_with_context(self.context) self.webview.load_uri(service.login_url) self.webview.connect("load-changed", self.on_navigation) self.webview.connect("create", self.on_webview_popup) + self.vbox.set_border_width(0) # pylint: disable=no-member self.vbox.pack_start(self.webview, True, True, 0) # pylint: disable=no-member webkit_settings = self.webview.get_settings() @@ -92,12 +94,11 @@ class WebConnectDialog(Dialog): view = WebKit2.WebView.new_with_related_view(widget) view.load_uri(uri) popup_dialog = WebPopupDialog(view, parent=self) - popup_dialog.set_modal(True) - popup_dialog.show() + popup_dialog.run() return view -class WebPopupDialog(Dialog): +class WebPopupDialog(ModalDialog): """Dialog for handling web popups""" def __init__(self, webview, parent=None): @@ -110,7 +111,7 @@ class WebPopupDialog(Dialog): self.webview.connect("create", self.on_new_webview_popup) self.webview.connect("close", self.on_webview_close) self.vbox.pack_start(self.webview, True, True, 0) - self.set_border_width(0) + self.vbox.set_border_width(0) self.set_default_size(390, 500) def on_ready_webview(self, webview): diff --git a/lutris/gui/installer/file_box.py b/lutris/gui/installer/file_box.py index d4bd78338ec115fb3ce2950fa001b91f98414025..537c3bb974f87dd4a41fd8717ab4d74f4c1bef40 100644 --- a/lutris/gui/installer/file_box.py +++ b/lutris/gui/installer/file_box.py @@ -1,7 +1,6 @@ """Widgets for the installer window""" import os from gettext import gettext as _ -from urllib.parse import urlparse from gi.repository import GObject, Gtk @@ -12,7 +11,7 @@ from lutris.gui.widgets.download_progress_box import DownloadProgressBox from lutris.installer.steam_installer import SteamInstaller from lutris.util import system from lutris.util.log import logger -from lutris.util.strings import add_url_tags, gtk_safe +from lutris.util.strings import gtk_safe class InstallerFileBox(Gtk.VBox): @@ -75,7 +74,7 @@ class InstallerFileBox(Gtk.VBox): box.pack_start(download_progress, False, False, 0) return box if self.provider == "pga": - url_label = InstallerLabel("In cache: %s" % self.get_file_label(), wrap=False) + url_label = InstallerLabel("In cache: %s" % self.installer_file.get_label(), wrap=False) box.pack_start(url_label, False, False, 6) return box if self.provider == "user": @@ -102,18 +101,6 @@ class InstallerFileBox(Gtk.VBox): return steam_box raise ValueError("Invalid provider %s" % self.provider) - def get_file_label(self): - """Return a human readable label for installer files""" - url = self.installer_file.url - if url.startswith("http"): - parsed = urlparse(url) - label = _("{file} on {host}").format(file=self.installer_file.filename, host=parsed.netloc) - elif url.startswith("N/A"): - label = url[3:].lstrip(":") - else: - label = url - return add_url_tags(gtk_safe(label)) - def get_combobox_model(self): """"Return the combobox's model""" model = Gtk.ListStore(str, str) @@ -172,7 +159,7 @@ class InstallerFileBox(Gtk.VBox): """Return the label displayed before the download starts""" if self.provider == "user": box = Gtk.VBox(spacing=6) - label = InstallerLabel(self.get_file_label()) + label = InstallerLabel(self.installer_file.get_label()) label.props.can_focus = True box.pack_start(label, False, False, 0) location_entry = FileChooserEntry( @@ -189,7 +176,7 @@ class InstallerFileBox(Gtk.VBox): cache_option.connect("toggled", self.on_user_file_cached) box.pack_start(cache_option, False, False, 0) return box - return InstallerLabel(self.get_file_label()) + return InstallerLabel(self.installer_file.get_label()) def get_widgets(self): """Return the widget with the source of the file and a way to change its source""" diff --git a/lutris/gui/installerwindow.py b/lutris/gui/installerwindow.py index 689b3437f13222a21bcc041d3f4cbd92c2eaf5e7..3ba3e6c9d54e5ac26e1bbbab0d4906ba1d7926e7 100644 --- a/lutris/gui/installerwindow.py +++ b/lutris/gui/installerwindow.py @@ -4,21 +4,23 @@ from gettext import gettext as _ from gi.repository import GLib, Gtk -from lutris.exceptions import UnavailableGame +from lutris.config import LutrisConfig +from lutris.exceptions import UnavailableGameError, watch_errors from lutris.game import Game -from lutris.gui.dialogs import DirectoryDialog, InstallerSourceDialog, QuestionDialog +from lutris.gui.dialogs import DirectoryDialog, ErrorDialog, InstallerSourceDialog, QuestionDialog from lutris.gui.dialogs.cache import CacheConfigurationDialog from lutris.gui.installer.files_box import InstallerFilesBox from lutris.gui.installer.script_picker import InstallerPicker from lutris.gui.widgets.common import FileChooserEntry, InstallerLabel from lutris.gui.widgets.log_text_view import LogTextView from lutris.gui.widgets.window import BaseApplicationWindow -from lutris.installer import interpreter +from lutris.installer import InstallationKind, get_installers, interpreter from lutris.installer.errors import MissingGameDependency, ScriptingError from lutris.util import xdgshortcuts from lutris.util.log import logger from lutris.util.steam import shortcut as steam_shortcut from lutris.util.strings import add_url_tags, gtk_safe, human_size +from lutris.util.system import is_removeable class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public-methods @@ -30,7 +32,7 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public service=None, appid=None, application=None, - is_update=False + installation_kind=InstallationKind.INSTALL ): super().__init__(application=application) self.set_default_size(540, 320) @@ -40,7 +42,7 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public self.appid = appid self.install_in_progress = False self.interpreter = None - self.is_update = is_update + self.installation_kind = installation_kind self.log_buffer = None self.log_textview = None @@ -112,7 +114,7 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public def validate_scripts(self): """Auto-fixes some script aspects and checks for mandatory fields""" if not self.installers: - raise ScriptingError("No installer available") + raise ScriptingError(_("No installer available")) for script in self.installers: for item in ["description", "notes"]: script[item] = script.get(item) or "" @@ -137,10 +139,12 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public scrolledwindow.set_shadow_type(Gtk.ShadowType.ETCHED_IN) self.widget_box.pack_end(scrolledwindow, True, True, 10) + @watch_errors() def on_cache_clicked(self, _button): """Open the cache configuration dialog""" - CacheConfigurationDialog() + CacheConfigurationDialog(parent=self) + @watch_errors() def on_installer_selected(self, _widget, installer_version): """Sets the script interpreter to the correct script then proceed to install folder selection. @@ -148,30 +152,26 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public If the installed game depends on another one and it's not installed, prompt the user to install it and quit this installer. """ - self.clean_widgets() try: script = None for _script in self.installers: if _script["version"] == installer_version: script = _script self.interpreter = interpreter.ScriptInterpreter(script, self) - except MissingGameDependency as ex: dlg = QuestionDialog( { + "parent": self, "question": _("This game requires %s. Do you want to install it?") % ex.slug, "title": _("Missing dependency"), } ) if dlg.result == Gtk.ResponseType.YES: - InstallerWindow( - installers=self.installers, - service=self.service, - appid=self.appid, - application=self.application, - ) - self.destroy() + installers = get_installers(game_slug=ex.slug) + self.application.show_installer_window(installers) return + + self.clean_widgets() self.title_label.set_markup(_("Installing {}").format(gtk_safe(self.interpreter.installer.game_name))) self.select_install_folder() @@ -191,7 +191,7 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public def select_install_folder(self): """Stage where we select the install directory.""" if not self.interpreter.installer.creates_game_folder: - self.on_install_clicked(self.install_button) + self.start_install() return self.set_message(_("Select installation directory")) default_path = self.interpreter.get_default_target() @@ -202,18 +202,16 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public self.source_button.show() self.install_button.grab_focus() self.install_button.show() - # self.manual_button.hide() + @watch_errors() def on_target_changed(self, text_entry, _data=None): """Set the installation target for the game.""" self.interpreter.target_path = os.path.expanduser(text_entry.get_text()) + @watch_errors() def on_install_clicked(self, button): """Let the interpreter take charge of the next stages.""" - button.hide() - self.source_button.hide() - self.interpreter.connect("runners-installed", self.on_runners_ready) - GLib.idle_add(self.interpreter.launch_install) + self.start_install() def set_install_destination(self, default_path=None): """Display the destination chooser.""" @@ -230,8 +228,27 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public location_entry.entry.connect("changed", self.on_target_changed) self.widget_box.pack_start(location_entry, False, False, 0) + def start_install(self): + self.install_button.hide() + self.source_button.hide() + self.interpreter.connect("runners-installed", self.on_runners_ready) + GLib.idle_add(self.launch_install) + + @watch_errors() + def launch_install(self): + # This is a shim method to allow exceptions from + # the interpret to be reported via watch_errors(). + self.interpreter.launch_install() + def ask_for_disc(self, message, callback, requires): """Ask the user to do insert a CD-ROM.""" + + def wrapped_callback(*args, **kwargs): + try: + callback(*args, **kwargs) + except Exception as err: + ErrorDialog(str(err), parent=self) + self.clean_widgets() label = InstallerLabel(message) label.show() @@ -244,17 +261,18 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public self.widget_box.add(buttons_box) autodetect_button = Gtk.Button(label=_("Autodetect")) - autodetect_button.connect("clicked", callback, requires) + autodetect_button.connect("clicked", wrapped_callback, requires) autodetect_button.grab_focus() autodetect_button.show() buttons_box.pack_start(autodetect_button, True, True, 40) browse_button = Gtk.Button(label=_("Browse…")) - callback_data = {"callback": callback, "requires": requires} + callback_data = {"callback": wrapped_callback, "requires": requires} browse_button.connect("clicked", self.on_browse_clicked, callback_data) browse_button.show() buttons_box.pack_start(browse_button, True, True, 40) + @watch_errors() def on_browse_clicked(self, widget, callback_data): dialog = DirectoryDialog(_("Select the folder where the disc is mounted"), parent=self) folder = dialog.folder @@ -262,6 +280,7 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public requires = callback_data["requires"] callback(widget, requires, folder) + @watch_errors() def on_eject_clicked(self, _widget, data=None): self.interpreter.eject_wine_disc() @@ -295,27 +314,32 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public """Enable continue button if a non-empty choice is selected""" self.continue_button.set_sensitive(bool(widget.get_active_id())) + @watch_errors() def on_runners_ready(self, _widget=None): """The runners are ready, proceed with file selection""" + self.show_installer_files_screen() + + def show_installer_files_screen(self): + """Show installer screen with the file picker / downloader""" if self.interpreter.extras is None: extras = self.interpreter.get_extras() if extras: self.show_extras(extras) return try: - patch_version = self.interpreter.installer.version if self.is_update else None + if self.installation_kind == InstallationKind.UPDATE: + patch_version = self.interpreter.installer.version + else: + patch_version = None self.interpreter.installer.prepare_game_files(patch_version) - except UnavailableGame as ex: + except UnavailableGameError as ex: raise ScriptingError(str(ex)) from ex if not self.interpreter.installer.files: logger.debug("Installer doesn't require files") self.interpreter.launch_installer_commands() return - self.show_installer_files_screen() - def show_installer_files_screen(self): - """Show installer screen with the file picker / downloader""" self.clean_widgets() self.set_status(_("Please review the files needed for the installation then click 'Continue'")) installer_files_box = InstallerFilesBox(self.interpreter.installer, self) @@ -399,6 +423,7 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public self.continue_button.disconnect(self.continue_handler) self.continue_handler = self.continue_button.connect("clicked", self.on_extras_confirmed, extra_treestore) + @watch_errors() def on_extra_toggled(self, _widget, path, model): toggled_row = model[path] toggled_row_iter = model.get_iter(path) @@ -428,6 +453,7 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public heading_row[0] = all_extras_active heading_row[1] = any_extras_active + @watch_errors() def on_extras_confirmed(self, _button, extra_store): """Resume install when user has selected extras to download""" selected_extras = [] @@ -439,17 +465,19 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public extra_store.foreach(save_extra) self.interpreter.extras = selected_extras - GLib.idle_add(self.on_runners_ready) + GLib.idle_add(self.show_installer_files_screen) def on_files_ready(self, _widget, files_ready): """Toggle state of continue button based on ready state""" self.continue_button.set_sensitive(files_ready) + @watch_errors() def on_files_confirmed(self, _button, file_box): """Call this when the user confirms the install files This will start the downloads. """ self.set_status("") + self.cache_button.set_sensitive(False) self.continue_button.set_sensitive(False) try: file_box.start_all() @@ -458,6 +486,7 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public self.continue_button.set_sensitive(True) raise ScriptingError(_("Unable to get files: %s") % ex) from ex + @watch_errors() def on_files_available(self, widget): """All files are available, continue the install""" logger.info("All files are available, continuing install") @@ -467,7 +496,7 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public self.clean_widgets() self.interpreter.launch_installer_commands() - def on_install_finished(self, game_id): + def finish_install(self, game_id): # 修复游戏安装完成后 Lutris 游戏列表视图未刷新,操作响应不正确的问题 self.application.window.emit("view-updated") @@ -507,7 +536,7 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public """Remove urgency hint (flashing indicator) when window receives focus""" self.set_urgency_hint(False) - def on_install_error(self, message): + def show_install_error_message(self, message): self.clean_widgets() self.set_status(message) self.cancel_button.grab_focus() @@ -532,14 +561,14 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public self.interpreter.cleanup() self.destroy() - def on_create_desktop_shortcut_clicked(self, _widget): - self.config["create_desktop_shortcut"] = True + def on_create_desktop_shortcut_clicked(self, checkbutton): + self.config["create_desktop_shortcut"] = checkbutton.get_active() - def on_create_menu_shortcut_clicked(self, _widget): - self.config["create_menu_shortcut"] = True + def on_create_menu_shortcut_clicked(self, checkbutton): + self.config["create_menu_shortcut"] = checkbutton.get_active() - def on_create_steam_shortcut_clicked(self, _widget): - self.config["create_steam_shortcut"] = True + def on_create_steam_shortcut_clicked(self, checkbutton): + self.config["create_steam_shortcut"] = checkbutton.get_active() def create_shortcut(self, desktop=False): """Create desktop or global menu shortcuts.""" @@ -554,15 +583,22 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public def confirm_cancel(self, _widget=None): """Ask a confirmation before cancelling the install""" + widgets = [] + remove_checkbox = Gtk.CheckButton.new_with_label(_("Remove game files")) - if self.interpreter and self.interpreter.target_path: + if self.interpreter and self.interpreter.target_path and \ + self.installation_kind == InstallationKind.INSTALL and \ + is_removeable(self.interpreter.target_path, LutrisConfig().system_config): remove_checkbox.set_active(self.interpreter.game_dir_created) remove_checkbox.show() + widgets.append(remove_checkbox) + confirm_cancel_dialog = QuestionDialog( { + "parent": self, "question": _("Are you sure you want to cancel the installation?"), "title": _("Cancel installation?"), - "widgets": [remove_checkbox] + "widgets": widgets } ) if confirm_cancel_dialog.result != Gtk.ResponseType.YES: @@ -575,6 +611,7 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public self.interpreter.cleanup() # still remove temporary downloads in any case self.destroy() + @watch_errors() def on_source_clicked(self, _button): InstallerSourceDialog( self.interpreter.installer.script_pretty, @@ -582,6 +619,9 @@ class InstallerWindow(BaseApplicationWindow): # pylint: disable=too-many-public self ) + def on_watched_error(self, error): + ErrorDialog(str(error), parent=self) + def clean_widgets(self): """Cleanup before displaying the next stage.""" for child_widget in self.widget_box.get_children(): diff --git a/lutris/gui/lutriswindow.py b/lutris/gui/lutriswindow.py index b2c0d0fe7385bbfded25150613579acb53074586..e772823c58937f1ed5907e31704e2734bf2e05a3 100644 --- a/lutris/gui/lutriswindow.py +++ b/lutris/gui/lutriswindow.py @@ -9,6 +9,7 @@ from lutris import services, settings from lutris.database import categories as categories_db from lutris.database import games as games_db from lutris.database.services import ServiceGameCollection +from lutris.exceptions import watch_errors from lutris.game import Game from lutris.game_actions import GameActions from lutris.gui import dialogs @@ -69,10 +70,8 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me update_desktop_icons() load_icon_theme() self.application = application - self.window_x = settings.read_setting("window_x") - self.window_y = settings.read_setting("window_y") - if self.window_x and self.window_y: - self.move(int(self.window_x), int(self.window_y)) + self.window_x, self.window_y = self.get_position() + self.restore_window_position() self.threads_stoppers = [] self.window_size = (width, height) self.maximized = settings.read_setting("maximized") == "True" @@ -124,6 +123,7 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me GObject.add_emission_hook(Game, "game-stopped", self.on_game_stopped) GObject.add_emission_hook(Game, "game-removed", self.on_game_collection_changed) GObject.add_emission_hook(Game, "game-error", self.on_game_error) + GObject.add_emission_hook(Game, "game-notice", self.on_game_notice) def _init_actions(self): Action = namedtuple("Action", ("callback", "type", "enabled", "default", "accel")) @@ -137,7 +137,7 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me self.on_show_installed_state_change, type="b", default=self.filter_installed, - accel="h", + accel="i", ), "toggle-viewtype": Action(self.on_toggle_viewtype), "icon-type": Action(self.on_icontype_state_change, type="s", default=self.icon_type), @@ -157,6 +157,7 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me self.hidden_state_change, type="b", default=self.show_hidden_games, + accel="h", ), "open-forums": Action(lambda *x: open_uri("https://hu60.cn/q.php/bbs.forum.170.html")), "open-discord": Action(lambda *x: open_uri("https://winegame.net/about")), @@ -213,7 +214,7 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me """Hides or shows the hidden games""" action.set_state(value) settings.write_setting("show_hidden_games", str(value).lower(), section="lutris") - self.filters["hidden"] = value + self.filters["hidden"] = bool(value) self.emit("view-updated") @property @@ -412,27 +413,37 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me def show_empty_label(self): """Display a label when the view is empty""" - if self.filters.get("text"): - self.show_label(_("No games matching '%s' found ") % self.filters["text"]) + filter_text = self.filters.get("text") + if filter_text: + if self.filters.get("category") == "favorite": + self.show_label(_("Add a game matching '%s' to your favorites to see it here.") % filter_text) + elif self.filters.get("installed"): + self.show_label( + _("No installed games matching '%s' found. Press Ctrl+I to show uninstalled games.") % filter_text) + elif self.filters.get("hidden") is False: # but not if missing! + self.show_label(_("No visible games matching '%s' found. Press Ctrl+H to show hidden games.") % + filter_text) + else: + self.show_label(_("No games matching '%s' found ") % filter_text) else: if self.filters.get("category") == "favorite": self.show_label(_("Add games to your favorites to see them here.")) elif self.filters.get("installed"): - self.show_label(_("No installed games found. Press Ctrl+H to show all games.")) - # Splash screen disabled because unfinished. - # elif ( - # not self.filters.get("runner") - # and not self.filters.get("service") - # and not self.filters.get("platform") - # ): - # self.show_splash() + self.show_label(_("No installed games found. Press Ctrl+I to show uninstalled games.")) + elif self.filters.get("hidden") is False: # but not if missing! + self.show_label(_("No visible games found. Press Ctrl+H to show hidden games.")) + elif ( + not self.filters.get("runner") + and not self.filters.get("service") + and not self.filters.get("platform") + ): + self.show_splash() else: self.show_label(_("No games found")) def update_store(self, *_args, **_kwargs): self.game_store.store.clear() - for child in self.blank_overlay.get_children(): - child.destroy() + self.hide_overlay() games = self.get_games_from_filters() logger.debug("Showing %d games", len(games)) self.view.service = self.service.id if self.service else None @@ -468,8 +479,7 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me media_index = media_services.index(service.default_format) icon_type = media_services[media_index] if icon_type != self.icon_type: - self.save_icon_type(icon_type) - self.show_spinner() + GLib.idle_add(self.save_icon_type, icon_type) def show_overlay(self, widget, halign=Gtk.Align.FILL, valign=Gtk.Align.FILL): """Display a widget in the blank overlay""" @@ -485,9 +495,19 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me self.show_overlay(Gtk.Label(message, visible=True)) def show_splash(self): - image = Gtk.Image(visible=True) - image.set_from_file(os.path.join(datapath.get(), "media/splash.svg")) - self.show_overlay(image, Gtk.Align.START, Gtk.Align.START) + theme = "dark" if self.application.style_manager.is_dark else "light" + side_splash = Gtk.Image(visible=True) + side_splash.set_from_file(os.path.join(datapath.get(), "media/side-%s.svg" % theme)) + side_splash.set_alignment(0, 0) + + center_splash = Gtk.Image(visible=True) + center_splash.set_alignment(.5, .5) + center_splash.set_from_file(os.path.join(datapath.get(), "media/splash-%s.svg" % theme)) + + splash_box = Gtk.HBox(visible=True, margin_top=24) + splash_box.pack_start(side_splash, False, False, 12) + splash_box.set_center_widget(center_splash) + self.show_overlay(splash_box, Gtk.Align.FILL, Gtk.Align.FILL) def show_spinner(self): spinner = Gtk.Spinner(visible=True) @@ -571,7 +591,6 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me for child in self.games_scrollwindow.get_children(): child.destroy() self.games_scrollwindow.add(self.view) - self.view.show_all() self.update_store() @@ -589,10 +608,32 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me self.emit("view-updated") return True + def save_window_state(self): + """Saves the window's size position and state as settings.""" + width, height = self.window_size + settings.write_setting("width", width) + settings.write_setting("height", height) + if self.window_x and self.window_y: + settings.write_setting("window_x", self.window_x) + settings.write_setting("window_y", self.window_y) + settings.write_setting("maximized", self.maximized) + + def restore_window_position(self): + """Restores the window position only; we call this when showing + the window, but restore the other settings only when creating it.""" + self.window_x = settings.read_setting("window_x") + self.window_y = settings.read_setting("window_y") + if self.window_x and self.window_y: + self.move(int(self.window_x), int(self.window_y)) + def on_service_login(self, service): - AsyncCall(service.reload, None) + AsyncCall(service.reload, self._service_login_cb) return True + def _service_login_cb(self, _result, error): + if error: + dialogs.ErrorDialog(str(error), parent=self) + def on_service_logout(self, service): if self.service and service.id == self.service.id: self.emit("view-updated") @@ -627,14 +668,13 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me for stopper in self.threads_stoppers: stopper() - # Save settings - width, height = self.window_size - settings.write_setting("width", width) - settings.write_setting("height", height) - if self.window_x and self.window_y: - settings.write_setting("window_x", self.window_x) - settings.write_setting("window_y", self.window_y) - settings.write_setting("maximized", self.maximized) + @GtkTemplate.Callback + def on_hide(self, *_args): + self.save_window_state() + + @GtkTemplate.Callback + def on_show(self, *_args): + self.restore_window_position() @GtkTemplate.Callback def on_preferences_activate(self, *_args): @@ -653,7 +693,7 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me if self.search_timer_id: GLib.source_remove(self.search_timer_id) self.filters["text"] = entry.get_text().lower().strip() - self.search_timer_id = GLib.timeout_add(150, self.update_store) + self.search_timer_id = GLib.timeout_add(500, self.update_store) @GtkTemplate.Callback def on_search_entry_key_press(self, widget, event): @@ -679,6 +719,10 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me dialogs.ErrorDialog(str(error), parent=self) return True + def on_game_notice(self, game, message, secondary): + """Called when a game has sent the 'game-notice' signal""" + dialogs.NoticeDialog(message, secondary=secondary, parent=self) + @GtkTemplate.Callback def on_add_game_button_clicked(self, *_args): """Add a new game manually with the AddGameDialog.""" @@ -783,6 +827,13 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me self.update_store() else: logger.debug("Can't get DB game for %s (service: %s)", game, self.service) + + # If the update took the row out of this view's category, we'll need + # to update the view to reflect that. + selected_row = self.sidebar.get_selected_row() + if selected_row and selected_row.type == "category" and \ + selected_row.id != "all" and selected_row.id not in game.get_categories(): + self.game_store.remove_game(game.id) return True def on_game_stopped(self, game): @@ -799,6 +850,7 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me self.emit("view-updated") return True + @watch_errors() def on_game_activated(self, view, game_id): """Handles view activations (double click, enter press)""" if self.service: @@ -824,3 +876,6 @@ class LutrisWindow(Gtk.ApplicationWindow): # pylint: disable=too-many-public-me game.emit("game-launch") else: game.emit("game-install") + + def on_watched_error(self, error): + dialogs.ErrorDialog(str(error), parent=self) diff --git a/lutris/gui/views/store.py b/lutris/gui/views/store.py index 6e4f45b5c9f465f502b73c1ac929f8fe760d2d51..71830d9bc2839bea5602cfdefb68b1f6d9c63210 100644 --- a/lutris/gui/views/store.py +++ b/lutris/gui/views/store.py @@ -132,15 +132,15 @@ class GameStore(GObject.Object): return False row[COL_ID] = str(store_item.id) row[COL_SLUG] = store_item.slug - row[COL_NAME] = gtk_safe(store_item.name) + row[COL_NAME] = store_item.name if settings.SHOW_MEDIA: row[COL_ICON] = store_item.get_pixbuf() else: row[COL_ICON] = None row[COL_YEAR] = store_item.year row[COL_RUNNER] = store_item.runner - row[COL_RUNNER_HUMAN_NAME] = gtk_safe(store_item.runner_text) - row[COL_PLATFORM] = gtk_safe(store_item.platform) + row[COL_RUNNER_HUMAN_NAME] = store_item.runner_text + row[COL_PLATFORM] = store_item.platform row[COL_LASTPLAYED] = store_item.lastplayed row[COL_LASTPLAYED_TEXT] = store_item.lastplayed_text row[COL_INSTALLED] = store_item.installed diff --git a/lutris/gui/views/store_item.py b/lutris/gui/views/store_item.py index f6ab83b11db7ab31f653f3d5d620ceb027772b59..957ec8dd09efb16d68772c61c4d5f4e3baf9c8b1 100644 --- a/lutris/gui/views/store_item.py +++ b/lutris/gui/views/store_item.py @@ -107,7 +107,7 @@ class StoreItem: return get_pixbuf(image_path, self.service_media.size, is_installed=self.installed) return self.service_media.get_pixbuf_for_game( self._game_data["slug"], - self.installed + is_installed=self.installed ) @property diff --git a/lutris/gui/widgets/common.py b/lutris/gui/widgets/common.py index 9c2bb3dda29f959c5e72ad482179755c6968ed70..b4cc29768dfe54d0845d4bc022a34f0e3ae8e901 100644 --- a/lutris/gui/widgets/common.py +++ b/lutris/gui/widgets/common.py @@ -47,7 +47,8 @@ class FileChooserEntry(Gtk.Box): path=None, default_path=None, warn_if_non_empty=False, - warn_if_ntfs=False + warn_if_ntfs=False, + activates_default=False, ): super().__init__( orientation=Gtk.Orientation.VERTICAL, @@ -64,6 +65,7 @@ class FileChooserEntry(Gtk.Box): self.path_completion = Gtk.ListStore(str) self.entry = Gtk.Entry(visible=True) + self.entry.set_activates_default(activates_default) self.entry.set_completion(self.get_completion()) self.entry.connect("changed", self.on_entry_changed) if path: @@ -95,10 +97,9 @@ class FileChooserEntry(Gtk.Box): def get_filechooser_dialog(self): """Return an instance of a FileChooserNative configured for this widget""" - dialog = Gtk.FileChooserNative.new(self.title, None, self.action, _("_OK"), _("_Cancel")) + dialog = Gtk.FileChooserNative.new(self.title, self.get_toplevel(), self.action, _("_OK"), _("_Cancel")) dialog.set_create_folders(True) dialog.set_current_folder(self.get_default_folder()) - dialog.connect("response", self.on_select_file, dialog) return dialog def get_default_folder(self): @@ -115,7 +116,14 @@ class FileChooserEntry(Gtk.Box): def on_browse_clicked(self, _widget): """Browse button click callback""" file_chooser_dialog = self.get_filechooser_dialog() - file_chooser_dialog.show() + response = file_chooser_dialog.run() + + if response == Gtk.ResponseType.ACCEPT: + target_path = file_chooser_dialog.get_filename() + if target_path: + self.entry.set_text(system.reverse_expanduser(target_path)) + + file_chooser_dialog.destroy() def on_entry_changed(self, widget): """Entry changed callback""" @@ -154,15 +162,6 @@ class FileChooserEntry(Gtk.Box): )) self.pack_end(non_writable_destination_label, False, False, 10) - def on_select_file(self, dialog, response, _dialog): - """FileChooserDialog response callback""" - if response == Gtk.ResponseType.ACCEPT: - target_path = dialog.get_filename() - if target_path: - dialog.set_current_folder(target_path) - self.entry.set_text(system.reverse_expanduser(target_path)) - dialog.destroy() - def update_completion(self, current_path): """Update the auto-completion widget with the current path""" self.path_completion.clear() @@ -230,8 +229,8 @@ class EditableGrid(Gtk.Grid): super().__init__() self.set_column_homogeneous(True) self.set_row_homogeneous(True) - self.set_row_spacing(10) - self.set_column_spacing(10) + self.set_row_spacing(6) + self.set_column_spacing(6) self.liststore = Gtk.ListStore(str, str) for item in data: @@ -262,6 +261,7 @@ class EditableGrid(Gtk.Grid): self.scrollable_treelist = Gtk.ScrolledWindow() self.scrollable_treelist.set_vexpand(True) self.scrollable_treelist.add(self.treeview) + self.scrollable_treelist.set_shadow_type(Gtk.ShadowType.IN) self.attach(self.scrollable_treelist, 0, 0, 5, 5) self.attach(self.add_button, 5 - len(self.buttons), 6, 1, 1) diff --git a/lutris/gui/widgets/searchable_combobox.py b/lutris/gui/widgets/searchable_combobox.py index e5056c21b5b628900b0da04b1abd651a7118904f..ff7aadb2a86776ab2056ac9b5a47632bd0abbb75 100644 --- a/lutris/gui/widgets/searchable_combobox.py +++ b/lutris/gui/widgets/searchable_combobox.py @@ -2,6 +2,7 @@ # pylint: disable=unsubscriptable-object from gi.repository import GLib, GObject, Gtk +from lutris.gui.dialogs import ErrorDialog from lutris.util.jobs import AsyncCall @@ -64,7 +65,7 @@ class SearchableCombobox(Gtk.Bin): self.combobox.set_active_id(model[_iter][1]) def _populate_combobox_choices(self, choice_func): - AsyncCall(self._do_populate_combobox_choices, None, choice_func) + AsyncCall(self._do_populate_combobox_choices, self._populate_combobox_choices_cb, choice_func) def _do_populate_combobox_choices(self, choice_func): for choice in choice_func(): @@ -73,6 +74,10 @@ class SearchableCombobox(Gtk.Bin): entry.set_icon_from_icon_name(Gtk.EntryIconPosition.PRIMARY, None) self.combobox.set_active_id(self.initial) + def _populate_combobox_choices_cb(self, _result, error): + if error: + ErrorDialog(str(error), parent=self.get_toplevel()) + @staticmethod def _on_combobox_scroll(combobox, _event): """Prevents users from accidentally changing configuration values diff --git a/lutris/gui/widgets/sidebar.py b/lutris/gui/widgets/sidebar.py index 26c1cc4d91850f1b5cbceaf4c5f2f062fef78c4f..6b87a165ca84199c33633cb6e86a015383cd4d67 100644 --- a/lutris/gui/widgets/sidebar.py +++ b/lutris/gui/widgets/sidebar.py @@ -144,9 +144,9 @@ class ServiceSidebarRow(SidebarRow): if error: if isinstance(error, AuthTokenExpired): self.service.logout() - self.service.login() + self.service.login(parent=self.get_toplevel()) else: - ErrorDialog(str(error)) + ErrorDialog(str(error), parent=self.get_toplevel()) GLib.timeout_add(2000, self.enable_refresh_button) def enable_refresh_button(self): @@ -179,7 +179,7 @@ class OnlineServiceSidebarRow(ServiceSidebarRow): if self.service.is_authenticated(): self.service.logout() else: - self.service.login() + self.service.login(parent=self.get_toplevel()) self.create_button_box() @@ -212,7 +212,8 @@ class RunnerSidebarRow(SidebarRow): def on_manage_versions(self, *_args): """Manage runner versions""" dlg_title = _("Manage %s versions") % self.runner.name - RunnerInstallDialog(dlg_title, self.get_toplevel(), self.runner.name) + self.application.show_window(RunnerInstallDialog, title=dlg_title, + runner=self.runner, parent=self.get_toplevel()) class SidebarHeader(Gtk.Box): diff --git a/lutris/gui/widgets/status_icon.py b/lutris/gui/widgets/status_icon.py index 8151998120d19c9609811f69a011c220c2ea2129..945b6d18ef24cc415263e9676407d6dd28de9d96 100644 --- a/lutris/gui/widgets/status_icon.py +++ b/lutris/gui/widgets/status_icon.py @@ -40,7 +40,7 @@ class LutrisStatusIcon: """Whether the icon is visible""" if APP_INDICATOR_SUPPORTED: return self.icon.get_status() != AppIndicator.IndicatorStatus.PASSIVE - return self.icon.is_visible() + return self.icon.get_visible() def set_visible(self, value): """Set the visibility of the icon""" @@ -77,7 +77,18 @@ class LutrisStatusIcon: def on_activate(self, _status_icon, _event=None): """Callback to show or hide the window""" - self.application.window.present() + app_window = self.application.window + if app_window.get_visible(): + # If the wndow has any transients, hiding it will hide them too + # never to be shown again, which is broken. So we don't allow that. + windows = Gtk.Window.list_toplevels() + for w in windows: + if w.get_transient_for() == app_window: + return + + app_window.hide() + else: + app_window.show() def on_menu_popup(self, _status_icon, button, time): """Callback to show the contextual menu""" diff --git a/lutris/gui/widgets/utils.py b/lutris/gui/widgets/utils.py index 167298ac40cf7228b6cdf997511de44ca6d42e89..b5f0221f36999361e0cb5c3af110e66ee4054fdb 100644 --- a/lutris/gui/widgets/utils.py +++ b/lutris/gui/widgets/utils.py @@ -87,29 +87,40 @@ def get_stock_icon(name, size): return None -def get_icon(icon_name, icon_format="image", size=None, icon_type="runner"): - """Return an icon based on the given name, format, size and type. +def get_runtime_icon(icon_name, icon_format="image", size=None): + """Return an icon based on the given name, format, size and type. Only + the icons installed in Lutris's runtime directory are searched. Keyword arguments: icon_name -- The name of the icon to retrieve format -- The format of the icon, which should be either 'image' or 'pixbuf' (default 'image') size -- The size for the desired image (default None) - icon_type -- Retrieve either a 'runner' or 'platform' icon (default 'runner') """ - filename = icon_name.lower().replace(" ", "") + ".png" - icon_path = os.path.join(settings.RUNTIME_DIR, "icons/hicolor/64x64/apps", filename) - if not os.path.exists(icon_path): - return None - if icon_format == "image": - icon = Gtk.Image() - if size: - icon.set_from_pixbuf(get_pixbuf(icon_path, size)) - else: - icon.set_from_file(icon_path) - return icon - if icon_format == "pixbuf" and size: - return get_pixbuf(icon_path, size) - raise ValueError("Invalid arguments") + filename = icon_name.lower().replace(" ", "") + # We prefer bitmaps over SVG, because we've got some SVG icons with the + # wrong size (oops) and this avoids them. + search_directories = [ + "icons/hicolor/64x64/apps", + "icons/hicolor/24x24/apps", + "icons", + "icons/hicolor/scalable/apps", + "icons/hicolor/symbolic/apps"] + extensions = [".png", ".svg"] + for search_dir in search_directories: + for ext in extensions: + icon_path = os.path.join(settings.RUNTIME_DIR, search_dir, filename + ext) + if os.path.exists(icon_path): + if icon_format == "image": + icon = Gtk.Image() + if size: + icon.set_from_pixbuf(get_pixbuf(icon_path, size)) + else: + icon.set_from_file(icon_path) + return icon + if icon_format == "pixbuf" and size: + return get_pixbuf(icon_path, size) + raise ValueError("Invalid arguments") + return None def get_overlay(overlay_path, size): diff --git a/lutris/installer/__init__.py b/lutris/installer/__init__.py index c6a379b515e211e97ad678afbe5b7e47021cb824..98d9b13be9bae0f3c44b7ec679733fe4c09fc265 100644 --- a/lutris/installer/__init__.py +++ b/lutris/installer/__init__.py @@ -1,7 +1,9 @@ """Install script interpreter package.""" +import enum + import yaml -from lutris.api import get_game_installers +from lutris.api import get_game_installers, normalize_installer from lutris.util import system from lutris.util.log import logger @@ -10,6 +12,12 @@ AUTO_ELF_EXE = AUTO_EXE_PREFIX + "ELF_xXx_" AUTO_WIN32_EXE = AUTO_EXE_PREFIX + "WIN32_xXx_" +class InstallationKind(enum.Enum): + INSTALL = 0 + UPDATE = 1 + DLC = 2 + + def read_script(filename): """Return scripts from a local file""" logger.debug("Loading script(s) from %s", filename) @@ -25,5 +33,5 @@ def read_script(filename): def get_installers(game_slug=None, installer_file=None, revision=None): # check if installer is local or online if system.path_exists(installer_file): - return read_script(installer_file) + return [normalize_installer(i) for i in read_script(installer_file)] return get_game_installers(game_slug=game_slug, revision=revision) diff --git a/lutris/installer/commands.py b/lutris/installer/commands.py index ef88a805ea4c73e7bbb95ad95e4a24a873029574..5b32d71b626af3da7cd9bb26c3c2b0f6bce7ae39 100644 --- a/lutris/installer/commands.py +++ b/lutris/installer/commands.py @@ -14,6 +14,7 @@ from lutris import runtime from lutris.cache import get_cache_path from lutris.command import MonitoredCommand from lutris.database.games import get_game_by_field +from lutris.exceptions import UnavailableRunnerError from lutris.game import Game from lutris.installer.errors import ScriptingError from lutris.runners import import_task @@ -387,8 +388,12 @@ class CommandsMixin: return runner_name, task_name def get_wine_path(self): - """Return absolute path of wine version used during the install""" - return get_wine_version_exe(self._get_runner_version()) + """Return absolute path of wine version used during the install, but + None if the wine exe can't be located.""" + try: + return get_wine_version_exe(self._get_runner_version()) + except UnavailableRunnerError: + return None def task(self, data): """Directive triggering another function specific to a runner. diff --git a/lutris/installer/installer.py b/lutris/installer/installer.py index 42de30a0d46c54843cb9b1547717927d1df8fa14..b2a9427e37c4740af7bb1314709022f1ce1b7e8f 100644 --- a/lutris/installer/installer.py +++ b/lutris/installer/installer.py @@ -32,7 +32,7 @@ class LutrisInstaller: # pylint: disable=too-many-instance-attributes self.game_slug = installer["game_slug"] self.service = self.get_service(initial=service) self.service_appid = self.get_appid(installer, initial=appid) - self.variables = installer.get("variables", {}) + self.variables = self.script.get("variables", {}) self.files = [ InstallerFile(self.game_slug, file_id, file_meta) for file_desc in self.script.get("files", []) @@ -42,6 +42,7 @@ class LutrisInstaller: # pylint: disable=too-many-instance-attributes self.extends = self.script.get("extends") self.game_id = self.get_game_id() self.is_gog = False + self.discord_id = installer.get('discord_id') def get_service(self, initial=None): if initial: @@ -140,10 +141,8 @@ class LutrisInstaller: # pylint: disable=too-many-instance-attributes def prepare_game_files(self, patch_version=None): """Gathers necessary files before iterating through them.""" if not self.files: - logger.info("No files to prepare") return if not self.service: - logger.debug("No service to retrieve files from") return if self.service.online and not self.service.is_connected(): logger.info("Not authenticated to %s", self.service.id) @@ -183,15 +182,16 @@ class LutrisInstaller: # pylint: disable=too-many-instance-attributes if str(value).lower() == 'false': value = False if key == "launch_configs": - # launch configuration don't need substitutions at least for now. - config[key] = value + config[key] = [ + {k: self.interpreter._substitute(v) for (k, v) in _conf.items()} + for _conf in value + ] elif isinstance(value, list): config[key] = [self.interpreter._substitute(i) for i in value] elif isinstance(value, dict): config[key] = {k: self.interpreter._substitute(v) for (k, v) in value.items()} elif isinstance(value, bool): config[key] = value - else: config[key] = self.interpreter._substitute(value) return config @@ -282,6 +282,7 @@ class LutrisInstaller: # pylint: disable=too-many-instance-attributes service=service_id, service_id=self.service_appid, id=self.game_id, + discord_id=self.discord_id, ) return self.game_id diff --git a/lutris/installer/installer_file.py b/lutris/installer/installer_file.py index e1caabf616bb671d140f3db5871ea6fa63af8935..13931f61790683278c19348429b516588651ba7e 100644 --- a/lutris/installer/installer_file.py +++ b/lutris/installer/installer_file.py @@ -7,6 +7,7 @@ from lutris import cache, settings from lutris.installer.errors import ScriptingError from lutris.util import system from lutris.util.log import logger +from lutris.util.strings import add_url_tags, gtk_safe class InstallerFile: @@ -31,6 +32,13 @@ class InstallerFile: return "file://" + _url return _url + def set_url(self, url): + """Change the internal value of the URL""" + if isinstance(self._file_meta, dict): + self._file_meta["url"] = url + else: + self._file_meta = url + @property def filename(self): if isinstance(self._file_meta, dict): @@ -79,6 +87,18 @@ class InstallerFile: return "Please select file '%s'" % self.id return self.url + def get_label(self): + """Return a human readable label for installer files""" + url = self.url + if url.startswith("http"): + parsed = urlparse(url) + label = _("{file} on {host}").format(file=self.filename, host=parsed.netloc) + elif url.startswith("N/A"): + label = url[3:].lstrip(":") + else: + label = url + return add_url_tags(gtk_safe(label)) + @property def cached_filename(self): """Return the filename of the first file in the cache path""" diff --git a/lutris/installer/interpreter.py b/lutris/installer/interpreter.py index 1c084756c215f459f4f92ffd53ed1d236a65e1ef..1306dbf11e641beb092babe5fa7bc0cbc9f0ddd3 100644 --- a/lutris/installer/interpreter.py +++ b/lutris/installer/interpreter.py @@ -48,7 +48,9 @@ class ScriptInterpreter(GObject.Object, CommandsMixin): self.user_inputs = [] self.current_command = 0 # Current installer command when iterating through them self.runners_to_install = [] + self.current_resolution = DISPLAY_MANAGER.get_current_resolution() self.installer = LutrisInstaller(installer, self, service=self.service, appid=_appid) + if not self.installer.script: raise ScriptingError(_("This installer doesn't have a 'script' section")) script_errors = self.installer.get_errors() @@ -57,12 +59,15 @@ class ScriptInterpreter(GObject.Object, CommandsMixin): _("Invalid script: \n{}").format("\n".join(script_errors)), self.installer.script ) - self.current_resolution = DISPLAY_MANAGER.get_current_resolution() self._check_binary_dependencies() self._check_dependency() if self.installer.creates_game_folder: self.target_path = self.get_default_target() + # Run variable substitution on the URLs + for file in self.installer.files: + file.set_url(self._substitute(file.url)) + @property def appid(self): logger.warning("Do not access appid from interpreter") @@ -157,7 +162,6 @@ class ScriptInterpreter(GObject.Object, CommandsMixin): def get_extras(self): """Get extras and store them to move them at the end of the install""" - logger.debug("Checking if service provide extra files") if not self.service or not self.service.has_extras: self.extras = [] return self.extras @@ -301,7 +305,7 @@ class ScriptInterpreter(GObject.Object, CommandsMixin): commands = self.installer.script.get("installer", []) if exception: logger.error("Last install command failed, show error") - self.parent.on_install_error(repr(exception)) + self.parent.show_install_error_message(repr(exception)) elif self.current_command < len(commands): try: command = commands[self.current_command] @@ -369,7 +373,7 @@ class ScriptInterpreter(GObject.Object, CommandsMixin): install_complete_text = (self.installer.script.get("install_complete_text") or _("Installation completed!")) self.parent.set_status(install_complete_text) download_lutris_media(self.installer.game_slug) - self.parent.on_install_finished(game_id) + self.parent.finish_install(game_id) def cleanup(self): """Clean up install dir after a successful install""" diff --git a/lutris/migrations/__init__.py b/lutris/migrations/__init__.py index 0a52ceff66c6d29ad349f58b6e2486f57b2136b7..499f6bfe5273f961e03837a2fd83a6eee1bf1fa0 100644 --- a/lutris/migrations/__init__.py +++ b/lutris/migrations/__init__.py @@ -3,7 +3,7 @@ import importlib from lutris import settings from lutris.util.log import logger -MIGRATION_VERSION = 11 # Never decrease this number +MIGRATION_VERSION = 12 # Never decrease this number # Replace deprecated migrations with empty lists MIGRATIONS = [ @@ -11,7 +11,8 @@ MIGRATIONS = [ ["mess_to_mame"], ["migrate_hidden_ids"], ["migrate_steam_appids"], - ["migrate_banners"] + ["migrate_banners"], + ["retrieve_discord_appids"], ] diff --git a/lutris/migrations/retrieve_discord_appids.py b/lutris/migrations/retrieve_discord_appids.py new file mode 100644 index 0000000000000000000000000000000000000000..66704b9c7631ef3dadd4aab66f089ff666949303 --- /dev/null +++ b/lutris/migrations/retrieve_discord_appids.py @@ -0,0 +1,29 @@ +from lutris import settings +from lutris.api import get_api_games +from lutris.database.games import get_games, sql +from lutris.util.log import logger + + +def migrate(): + """ + Update Games that does not have a Discord ID + """ + logger.info("Updating Games Discord APP ID's") + # Get Slugs from all games + slugs_to_update = [game['slug'] for game in get_games()] + # Retrieve game data + games = get_api_games(slugs_to_update) + for game in games: + try: + if not game['discord_id']: + continue + + sql.db_update( + settings.PGA_DB, + "games", + {"discord_id": game['discord_id']}, + {"slug": game['slug']} + ) + logger.info("Updated %s", game['name']) + except KeyError: + pass diff --git a/lutris/runner_interpreter.py b/lutris/runner_interpreter.py index dcea95b5eaf153d4cd6bac0041940b318d4ca80d..cb9285b1f8012b72490bd09c2846b786ecfccfca 100644 --- a/lutris/runner_interpreter.py +++ b/lutris/runner_interpreter.py @@ -29,6 +29,10 @@ def get_launch_parameters(runner, gameplay_info): logger.info("Game launched from steam (AppId: %s)", os.environ["SteamAppId"]) env["LC_ALL"] = "" + # Set correct LC_ALL depending on user settings + if system_config["locale"] != "": + env["LC_ALL"] = system_config["locale"] + # Optimus optimus = system_config.get("optimus") if optimus == "primusrun" and system.find_executable("primusrun"): diff --git a/lutris/runners/__init__.py b/lutris/runners/__init__.py index 0bbc5fc2aacfb327851d851035a70712d36306fb..1f4fb2b5e3e32dd89dd47727abb8fe26103a2068 100644 --- a/lutris/runners/__init__.py +++ b/lutris/runners/__init__.py @@ -6,6 +6,7 @@ __all__ = [ "linux", "steam", "web", + "flatpak", # Microsoft based "wine", "dosbox", diff --git a/lutris/runners/atari800.py b/lutris/runners/atari800.py index 6074e93e14580c9ee5adebc31e42828de73f8bc0..cd96bc68b01d26c3694196d4b32aa80d1e5e2e7a 100644 --- a/lutris/runners/atari800.py +++ b/lutris/runners/atari800.py @@ -1,9 +1,7 @@ -# Standard Library import logging import os.path from gettext import gettext as _ -# Lutris Modules from lutris.config import LutrisConfig from lutris.gui.dialogs import ErrorDialog from lutris.gui.dialogs.download import DownloadDialog @@ -20,7 +18,6 @@ def get_resolutions(): return screen_resolutions -# pylint: disable=C0103 class atari800(Runner): human_name = _("Atari800") platforms = [_("Atari 8bit computers")] # FIXME try to determine the actual computer used @@ -49,12 +46,9 @@ class atari800(Runner): runner_options = [ { - "option": - "bios_path", - "type": - "directory_chooser", - "label": - _("BIOS location"), + "option": "bios_path", + "type": "directory_chooser", + "label": _("BIOS location"), "help": _( "A folder containing the Atari 800 BIOS files.\n" "They are provided by Lutris so you shouldn't have to " @@ -62,10 +56,8 @@ class atari800(Runner): ), }, { - "option": - "machine", - "type": - "choice", + "option": "machine", + "type": "choice", "choices": [ (_("Emulate Atari 800"), "atari"), (_("Emulate Atari 800 XL"), "xl"), @@ -73,10 +65,8 @@ class atari800(Runner): (_("Emulate Atari 320 XE (Rambo)"), "rambo"), (_("Emulate Atari 5200"), "5200"), ], - "default": - "atari", - "label": - _("Machine"), + "default": "atari", + "label": _("Machine"), }, { "option": "fullscreen", @@ -95,7 +85,7 @@ class atari800(Runner): def install(self, version=None, downloader=None, callback=None): - def on_runner_installed(*args): # pylint: disable=unused-argument + def on_runner_installed(*_args): config_path = system.create_folder("~/.atari800") bios_archive = os.path.join(config_path, "atari800-bioses.zip") dlg = DownloadDialog(self.bios_url, bios_archive) diff --git a/lutris/runners/commands/wine.py b/lutris/runners/commands/wine.py index ac3cc8640da96d2945d591f11f16fa0a29c41806..a6470b9ac18e24c32f53567aad54413cbec3cc10 100644 --- a/lutris/runners/commands/wine.py +++ b/lutris/runners/commands/wine.py @@ -3,9 +3,11 @@ import os import shlex import time +from gettext import gettext as _ from lutris import runtime, settings from lutris.command import MonitoredCommand +from lutris.exceptions import UnavailableRunnerError from lutris.runners import import_runner from lutris.util import linux, system from lutris.util.log import logger @@ -248,7 +250,7 @@ def wineexec( # noqa: C901 if not wine_path: wine_path = runner.get_executable() if not wine_path: - raise RuntimeError("Wine is not installed") + raise UnavailableRunnerError(_("Wine is not installed")) if not working_dir: if os.path.isfile(executable): diff --git a/lutris/runners/flatpak.py b/lutris/runners/flatpak.py new file mode 100644 index 0000000000000000000000000000000000000000..e557f186ce71658b8c9ad8b1f5c3a5b05d35fb81 --- /dev/null +++ b/lutris/runners/flatpak.py @@ -0,0 +1,161 @@ +import os +import shutil +from gettext import gettext as _ +from pathlib import Path + +from lutris.command import MonitoredCommand +from lutris.runners import NonInstallableRunnerError +from lutris.runners.runner import Runner +from lutris.util.strings import split_arguments + + +class flatpak(Runner): + """ + Runner for Flatpak applications. + """ + + description = _("Runs Flatpak applications") + platforms = [_("Linux")] + entry_point_option = "application" + human_name = _("Flatpak") + runnable_alone = False + system_options_override = [{"option": "disable_runtime", "default": True}] + install_locations = { + "system": "var/lib/flatpak/app/", + "user": f"{Path.home()}/.local/share/flatpak/app/" + } + + game_options = [ + { + "option": "appid", + "type": "string", + "label": _("Application ID"), + "help": _("The application's unique three-part identifier (tld.domain.app).") + }, + { + "option": "arch", + "type": "string", + "label": _("Architecture"), + "help": _("The architecture to run. " + "See flatpak --supported-arches for architectures supported by the host."), + "advanced": True + }, + { + "option": "branch", + "type": "string", + "label": _("Branch"), + "help": _("The branch to use."), + "advanced": True + }, + { + "option": "install_type", + "type": "string", + "label": _("Install type"), + "help": _("Can be system or user."), + "advanced": True + }, + { + "option": "args", + "type": "string", + "label": _("Args"), + "help": _("Arguments to be passed to the application.") + }, + { + "option": "command", + "type": "string", + "label": _("Command"), + "help": _("The command to run instead of the one listed in the application metadata."), + "advanced": True + }, + { + "option": "working_dir", + "type": "directory_chooser", + "label": _("Working directory"), + "help": _("The directory to run the command in. Note that this must be a directory inside the sandbox."), + "advanced": True + }, + + { + "option": "env_vars", + "type": "string", + "label": _("Environment variables"), + "help": _("Set an environment variable in the application. " + "This overrides to the Context section from the application metadata."), + "advanced": True + } + ] + + def is_installed(self): + if shutil.which("flatpak-spawn"): + return True + return bool(shutil.which("flatpak")) + + def get_executable(self): + return shutil.which("flatpak-spawn") or shutil.which("flatpak") + + def install(self, version=None, downloader=None, callback=None): + raise NonInstallableRunnerError( + _("Flatpak installation is not handled by Lutris.\n" + "Install Flatpak with the package provided by your distribution.") + ) + + def can_uninstall(self): + return False + + def uninstall(self): + pass + + @property + def game_path(self): + if shutil.which("flatpak-spawn"): + return "/" + install_type, application, arch, branch = ( + self.game_data[key] for key in ("install_type", "application", "arch", "branch") + ) + return os.path.join(self.install_locations[install_type], application, arch, branch) + + def remove_game_data(self, app_id=None, game_path=None, **kwargs): + if not self.is_installed(): + return False + command = MonitoredCommand( + [self.get_executable(), f"uninstall --app --noninteractive {app_id}"], + runner=self, + env=self.get_env(), + title=f"Uninstalling Flatpak App: {app_id}" + ) + command.start() + + def play(self): + arch = self.game_config.get("arch", "") + branch = self.game_config.get("branch", "") + args = self.game_config.get("args", "") + app_id = self.game_config.get("appid", "") + + if not app_id: + return {"error": "CUSTOM", "text": "No application specified."} + + if app_id.count(".") < 2: + return {"error": "CUSTOM", "text": "Application ID is not specified in correct format." + "Must be something like: tld.domain.app"} + + if any(x in app_id for x in ("--", "/")): + return {"error": "CUSTOM", "text": "Application ID field must not contain options or arguments."} + + command = [self.get_executable()] + + if shutil.which("flatpak-spawn"): + command.extend(["--host", "flatpak", "run"]) + else: + command.append("run") + + if arch: + command.append(f"--arch={arch}") + if branch: + command.append(f"--branch={branch}") + command.append(app_id) + if args: + command.extend(split_arguments(args)) + launch_info = { + "command": command + } + return launch_info diff --git a/lutris/runners/fsuae.py b/lutris/runners/fsuae.py index 60b3c0b270b41d4bcc072cf46f634840072b0c5c..4df107a842ae85ca0f04ba8487350871db41042a 100644 --- a/lutris/runners/fsuae.py +++ b/lutris/runners/fsuae.py @@ -1,37 +1,143 @@ -# Standard Library import os +from collections import defaultdict from gettext import gettext as _ -# Lutris Modules +from lutris import settings from lutris.runners.runner import Runner +from lutris.util import system from lutris.util.display import DISPLAY_MANAGER +AMIGAS = { + "A500": { + "name": _("Amiga 500"), + "bios_sha1": [ + "891e9a547772fe0c6c19b610baf8bc4ea7fcb785", + "c39bd9094d4e5f4e28c1411f3086950406062e87", + "90933936cce43ca9bc6bf375662c076b27e3c458", + ] + }, + "A500+": { + "name": _("Amiga 500+"), + "bios_sha1": [ + "c5839f5cb98a7a8947065c3ed2f14f5f42e334a1" + ] + }, + "A600": { + "name": _("Amiga 600"), + "bios_sha1": [ + "02843c4253bbd29aba535b0aa3bd9a85034ecde4" + ] + }, + "A1200": { + "name": _("Amiga 1200"), + "bios_sha1": [ + "e21545723fe8374e91342617604f1b3d703094f1" + ] + }, + "A3000": { + "name": _("Amiga 3000"), + "bios_sha1": [ + "f8e210d72b4c4853e0c9b85d223ba20e3d1b36ee" + ] + }, + "A4000": { + "name": _("Amiga 4000"), + "bios_sha1": [ + "5fe04842d04a489720f0f4bb0e46948199406f49", + "c3c481160866e60d085e436a24db3617ff60b5f9" + ] + }, + "A1000": { + "name": _("Amiga 1000"), + "bios_sha1": [ + "11f9e62cf299f72184835b7b2a70a16333fc0d88" + ] + }, + "CD32": { + "name": _("Amiga CD32"), + "bios_sha1": [ + "3525be8887f79b5929e017b42380a79edfee542d" + ], + "bios_ext_sha1": [ + "5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f" + ] + }, + "CDTV": { + "name": _("Commodore CDTV"), + "bios_sha1": [ + "891e9a547772fe0c6c19b610baf8bc4ea7fcb785", + "c39bd9094d4e5f4e28c1411f3086950406062e87", + "90933936cce43ca9bc6bf375662c076b27e3c458", + ], + "bios_ext_sha1": [ + "7ba40ffa17e500ed9fed041f3424bd81d9c907be" + ] + } +} + + +def get_bios_hashes(): + """Return mappings of sha1 hashes to Amiga models + The first mapping contains the kickstarts and the second one, the extensions (for CD32/CDTV) + """ + hashes = defaultdict(list) + ext_hashes = defaultdict(list) + for model, model_def in AMIGAS.items(): + for sha1_hash in model_def["bios_sha1"]: + hashes[sha1_hash].append(model) + if "bios_ext_sha1" in model_def: + for sha1_hash in model_def["bios_ext_sha1"]: + ext_hashes[sha1_hash].append(model) + return hashes, ext_hashes + + +def scan_dir_for_bios(path): + """Return a tuple of mappings of Amiga models and their corresponding kickstart file. + + Kickstart files must reside in `path` + The first mapping contains the kickstarts and the second one, the extensions (for CD32/CDTV) + """ + bios_sizes = [262144, 524288] + hashes, ext_hashes = get_bios_hashes() + found_bios = {} + found_ext = {} + incomplete_bios = [] + for file_name in os.listdir(path): + abs_path = os.path.join(path, file_name) + file_size = os.path.getsize(abs_path) + if file_size not in bios_sizes: + continue + checksum = system.get_file_checksum(abs_path, "sha1") + if checksum in hashes: + for model in hashes[checksum]: + found_bios[model] = abs_path + if checksum in ext_hashes: + for model in ext_hashes[checksum]: + found_ext[model] = abs_path + for model in found_bios: + if "bios_ext_sha1" in AMIGAS[model] and model not in found_ext: + incomplete_bios.append(model) + found_bios = {k: v for k, v in found_bios.items() if k not in incomplete_bios} + return found_bios, found_ext + class fsuae(Runner): human_name = _("FS-UAE") description = _("Amiga emulator") platforms = [ - _("Amiga 500"), - _("Amiga 500+"), - _("Amiga 600"), - _("Amiga 1000"), - _("Amiga 1200"), - _("Amiga 1200"), - _("Amiga 4000"), - _("Amiga CD32"), - _("Commodore CDTV"), - ] - model_choices = [ - (_("Amiga 500"), "A500"), - (_("Amiga 500+ with 1 MB chip RAM"), "A500+"), - (_("Amiga 600 with 1 MB chip RAM"), "A600"), - (_("Amiga 1000 with 512 KB chip RAM"), "A1000"), - (_("Amiga 1200 with 2 MB chip RAM"), "A1200"), - (_("Amiga 1200 but with 68020 processor"), "A1200/020"), - (_("Amiga 4000 with 2 MB chip RAM and a 68040"), "A4000/040"), - (_("Amiga CD32"), "CD32"), - (_("Commodore CDTV"), "CDTV"), + AMIGAS["A500"]["name"], + AMIGAS["A500+"]["name"], + AMIGAS["A600"]["name"], + AMIGAS["A1000"]["name"], + AMIGAS["A1200"]["name"], + AMIGAS["A1200"]["name"], + AMIGAS["A4000"]["name"], + AMIGAS["CD32"]["name"], + AMIGAS["CDTV"]["name"], ] + + model_choices = [(model["name"], key) for key, model in AMIGAS.items()] + cpumodel_choices = [ (_("68000"), "68000"), (_("68010"), "68010"), @@ -294,6 +400,10 @@ class fsuae(Runner): }, ] + @property + def directory(self): + return os.path.join(settings.RUNNER_DIR, "fs-uae") + def get_platform(self): model = self.runner_config.get("model") if model: diff --git a/lutris/runners/libretro.py b/lutris/runners/libretro.py index ac9151ac68793d74d2d7f0b4f4d9660ef56b17bc..239d2ec6877070ff9efda6c742f65421b54d74a1 100644 --- a/lutris/runners/libretro.py +++ b/lutris/runners/libretro.py @@ -21,7 +21,6 @@ def get_libretro_cores(): cores = [] runner_path = get_default_config_path() if not os.path.exists(runner_path): - logger.warning("No folder at %s", runner_path) return [] # Get core identifiers from info dir @@ -134,7 +133,7 @@ class libretro(Runner): return system.path_exists(self.get_executable()) def is_installed(self, core=None): - if not core and self.config and self.game_config.get("core"): + if not core and self.has_explicit_config and self.game_config.get("core"): core = self.game_config["core"] if not core or self.runner_config.get("runner_executable"): return self.is_retroarch_installed() diff --git a/lutris/runners/linux.py b/lutris/runners/linux.py index 0a241f40cf57b24c2241534d1d098878997a695e..fa3c38efcc003529d7becb952cd96d7ef5f83c52 100644 --- a/lutris/runners/linux.py +++ b/lutris/runners/linux.py @@ -85,6 +85,9 @@ class linux(Runner): return os.path.join(self.game_path, exe) return system.find_executable(exe) + def resolve_game_path(self): + return super().resolve_game_path() or os.path.dirname(self.game_exe or "") + def get_relative_exe(self): """Return a relative path if a working dir is set in the options Some games such as Unreal Gold fail to run if given the absolute path @@ -92,9 +95,13 @@ class linux(Runner): exe_path = self.game_exe working_dir = self.game_config.get("working_dir") if exe_path and working_dir: - parts = exe_path.split(os.path.expanduser(working_dir)) - if len(parts) == 2: - return "." + parts[1] + relative = os.path.relpath(exe_path, start=working_dir) + if not relative.startswith("../"): + # We can't use the working dir implicitly to start a command + # so we make it explicit with "./" + if not os.path.isabs(relative): + relative = "./" + relative + return relative return exe_path @property diff --git a/lutris/runners/runner.py b/lutris/runners/runner.py index e8f0fe0696b7721ba181269fc9b50b4d000c6b2e..65eabc9f6719d15f557dd368da6b074cc54dc7a2 100644 --- a/lutris/runners/runner.py +++ b/lutris/runners/runner.py @@ -9,7 +9,7 @@ from lutris import runtime, settings from lutris.command import MonitoredCommand from lutris.config import LutrisConfig from lutris.database.games import get_game_by_field -from lutris.exceptions import UnavailableLibraries +from lutris.exceptions import UnavailableLibrariesError from lutris.gui import dialogs from lutris.runners import RunnerInstallationError from lutris.util import system @@ -38,10 +38,13 @@ class Runner: # pylint: disable=too-many-public-methods def __init__(self, config=None): """Initialize runner.""" - self.config = config if config: - self.game_data = get_game_by_field(self.config.game_config_id, "configpath") + self.has_explicit_config = True + self._config = config + self.game_data = get_game_by_field(config.game_config_id, "configpath") else: + self.has_explicit_config = False + self._config = None self.game_data = {} def __lt__(self, other): @@ -62,30 +65,37 @@ class Runner: # pylint: disable=too-many-public-methods return self.__class__.__name__ @property - def default_config(self): - return LutrisConfig(runner_slug=self.name) + def directory(self): + return os.path.join(settings.RUNNER_DIR, self.name) + + @property + def config(self): + if not self._config: + self._config = LutrisConfig(runner_slug=self.name) + return self._config + + @config.setter + def config(self, new_config): + self._config = new_config + self.has_explicit_config = new_config is not None @property def game_config(self): """Return the cascaded game config as a dict.""" - if self.config: - return self.config.game_config - logger.warning("Accessing game config while runner wasn't given one.") - return {} + if not self.has_explicit_config: + logger.warning("Accessing game config while runner wasn't given one.") + + return self.config.game_config @property def runner_config(self): """Return the cascaded runner config as a dict.""" - if self.config: - return self.config.runner_config - return self.default_config.runner_config + return self.config.runner_config @property def system_config(self): """Return the cascaded system config as a dict.""" - if self.config: - return self.config.system_config - return self.default_config.system_config + return self.config.system_config @property def default_path(self): @@ -99,12 +109,19 @@ class Runner: # pylint: disable=too-many-public-methods if game_path: return game_path - # Default to the directory where the entry point is located. - entry_point = self.game_config.get(self.entry_point_option) - if entry_point: - return os.path.dirname(os.path.expanduser(entry_point)) + if self.has_explicit_config: + # Default to the directory where the entry point is located. + entry_point = self.game_config.get(self.entry_point_option) + if entry_point: + return os.path.dirname(os.path.expanduser(entry_point)) return "" + def resolve_game_path(self): + """Returns the path where the game is found; if game_path does not + provide a path, this may try to resolve the path by runner-specific means, + which can find things like /usr/games when applicable.""" + return self.game_path + @property def library_folders(self): """Return a list of paths where a game might be installed""" @@ -247,7 +264,7 @@ class Runner: # pylint: disable=too-many-public-methods available_libs.add(lib) unavailable_libs = set(self.require_libs) - available_libs if unavailable_libs: - raise UnavailableLibraries(unavailable_libs, self.arch) + raise UnavailableLibrariesError(unavailable_libs, self.arch) def get_run_data(self): """Return dict with command (exe & args list) and env vars (dict). @@ -379,18 +396,18 @@ class Runner: # pylint: disable=too-many-public-methods ) opts = {"downloader": downloader, "callback": callback} if self.download_url: - opts["dest"] = os.path.join(settings.RUNNER_DIR, self.name) + opts["dest"] = self.directory return self.download_and_extract(self.download_url, **opts) runner = self.get_runner_version(version) if not runner: - raise RunnerInstallationError("Failed to retrieve {} ({}) information".format(self.name, version)) + raise RunnerInstallationError(_("Failed to retrieve {} ({}) information").format(self.name, version)) if not downloader: raise RuntimeError("Missing mandatory downloader for runner %s" % self) if "wine" in self.name: opts["merge_single"] = True opts["dest"] = os.path.join( - settings.RUNNER_DIR, self.name, "{}-{}".format(runner["version"], runner["architecture"]) + self.directory, "{}-{}".format(runner["version"], runner["architecture"]) ) if self.name == "libretro" and version: @@ -417,12 +434,12 @@ class Runner: # pylint: disable=too-many-public-methods def extract(self, archive=None, dest=None, merge_single=None, callback=None): if not system.path_exists(archive): - raise RunnerInstallationError("Failed to extract {}".format(archive)) + raise RunnerInstallationError(_("Failed to extract {}").format(archive)) try: extract_archive(archive, dest, merge_single=merge_single) except ExtractFailure as ex: logger.error("Failed to extract the archive %s file may be corrupt", archive) - raise RunnerInstallationError("Failed to extract {}: {}".format(archive, ex)) from ex + raise RunnerInstallationError(_("Failed to extract {}: {}").format(archive, ex)) from ex os.remove(archive) if self.name == "wine": @@ -442,11 +459,10 @@ class Runner: # pylint: disable=too-many-public-methods system.remove_folder(game_path) def can_uninstall(self): - runner_path = os.path.join(settings.RUNNER_DIR, self.name) - return os.path.isdir(runner_path) + return os.path.isdir(self.directory) def uninstall(self): - runner_path = os.path.join(settings.RUNNER_DIR, self.name) + runner_path = self.directory if os.path.isdir(runner_path): system.remove_folder(runner_path) diff --git a/lutris/runners/steam.py b/lutris/runners/steam.py index 007fb392284b20c028269fd80a9ee0fb24adae6e..0c5b590dce4021a46fc1e55965e125407593fbda 100644 --- a/lutris/runners/steam.py +++ b/lutris/runners/steam.py @@ -4,6 +4,7 @@ import subprocess from gettext import gettext as _ from lutris.command import MonitoredCommand +from lutris.exceptions import UnavailableRunnerError from lutris.runners import NonInstallableRunnerError from lutris.runners.runner import Runner from lutris.util import linux, system @@ -238,11 +239,11 @@ class steam(Runner): return steamapps_paths[0] def install(self, version=None, downloader=None, callback=None): - raise NonInstallableRunnerError( + raise NonInstallableRunnerError(_( "Steam for Linux installation is not handled by Lutris.\n" "Please go to " "http://steampowered.com" - " or install Steam with the package provided by your distribution." + " or install Steam with the package provided by your distribution.") ) def install_game(self, appid, generate_acf=False): @@ -252,7 +253,7 @@ class steam(Runner): acf_content = to_vdf(acf_data) steamapps_path = self.get_default_steamapps_path() if not steamapps_path: - raise RuntimeError("Could not find Steam path, is Steam installed?") + raise UnavailableRunnerError(_("Could not find Steam path, is Steam installed?")) acf_path = os.path.join(steamapps_path, "appmanifest_%s.acf" % appid) with open(acf_path, "w", encoding='utf-8') as acf_file: acf_file.write(acf_content) @@ -297,11 +298,11 @@ class steam(Runner): "env": self.get_env(), } - def remove_game_data(self, appid=None, **kwargs): + def remove_game_data(self, app_id=None, **kwargs): if not self.is_installed(): return False command = MonitoredCommand( - [self.get_executable(), "steam://uninstall/%s" % (appid or self.appid)], + [self.get_executable(), "steam://uninstall/%s" % (app_id or self.appid)], runner=self, env=self.get_env(), ) diff --git a/lutris/runners/wine.py b/lutris/runners/wine.py index e3b7bca7304581eef7b6b8b8a66bfbe0a1aa6b7e..d413aaa5de9b862ea35c7834d92e91cf21e38dec 100644 --- a/lutris/runners/wine.py +++ b/lutris/runners/wine.py @@ -21,6 +21,7 @@ from lutris.util.wine.d3d_extras import D3DExtrasManager from lutris.util.wine.dgvoodoo2 import dgvoodoo2Manager from lutris.util.wine.dxvk import DXVKManager from lutris.util.wine.dxvk_nvapi import DXVKNVAPIManager +from lutris.util.wine.extract_icon import PEFILE_AVAILABLE, ExtractIcon from lutris.util.wine.prefix import DEFAULT_DLL_OVERRIDES, WinePrefixManager, find_prefix from lutris.util.wine.vkd3d import VKD3DManager from lutris.util.wine.wine import ( @@ -487,10 +488,9 @@ class wine(Runner): @property def context_menu_entries(self): """Return the contexual menu entries for wine""" - menu_entries = [("wineexec", _("Run EXE inside Wine prefix"), self.run_wineexec)] - if "Proton" not in self.get_version(): - menu_entries.append(("winecfg", _("Wine configuration"), self.run_winecfg)) - menu_entries += [ + return [ + ("wineexec", _("Run EXE inside Wine prefix"), self.run_wineexec), + ("winecfg", _("Wine configuration"), self.run_winecfg), ("wineshell", _("Open Bash terminal"), self.run_wine_terminal), ("wineconsole", _("Open Wine console"), self.run_wineconsole), ("wine-regedit", _("Wine registry"), self.run_regedit), @@ -498,7 +498,6 @@ class wine(Runner): ("winetricks", _("Winetricks"), self.run_winetricks), ("winecpl", _("Wine Control Panel"), self.run_winecpl), ] - return menu_entries @property def prefix_path(self): @@ -855,9 +854,7 @@ class wine(Runner): # Always false to runner.get_env, the default value # of os_env is inverted in the wine class, # the OS env is read later. - env = super().get_env(False, disable_runtime=disable_runtime) - if os_env: - env.update(os.environ.copy()) + env = super().get_env(os_env, disable_runtime=disable_runtime) show_debug = self.runner_config.get("show_debug", "-all") if show_debug != "inherit": env["WINEDEBUG"] = show_debug @@ -947,7 +944,7 @@ class wine(Runner): # Set this to 1 to enable access to more RAM for 32bit applications launch_info["env"]["WINE_LARGE_ADDRESS_AWARE"] = "1" if not is_vulkan_supported(): - if not display_vulkan_error(True): + if not display_vulkan_error(on_launch=True): return {"error": "VULKAN_NOT_FOUND"} if not game_exe or not system.path_exists(game_exe): @@ -1020,3 +1017,36 @@ class wine(Runner): # Relative path return path + + def extract_icon_exe(self, game_slug): + """Extracts the 128*128 icon from EXE and saves it, if not resizes the biggest icon found. + returns true if an icon is saved, false if not""" + try: + wantedsize = (128, 128) + pathtoicon = settings.ICON_PATH + "/lutris_" + game_slug + ".png" + if not self.game_exe or os.path.exists(pathtoicon) or not PEFILE_AVAILABLE: + return False + + extractor = ExtractIcon(self.game_exe) + groups = extractor.get_group_icons() + + icons = [] + biggestsize = (0, 0) + biggesticon = -1 + for i in range(len(groups[0])): + icons.append(extractor.export(groups[0], i)) + if icons[i].size > biggestsize: + biggesticon = i + biggestsize = icons[i].size + elif icons[i].size == wantedsize: + icons[i].save(pathtoicon) + return True + + if biggesticon >= 0: + resized = icons[biggesticon].resize(wantedsize) + resized.save(pathtoicon) + return True + except Exception as err: + logger.exception("Failed to extract exe icon: %s", err) + + return False diff --git a/lutris/runners/yuzu.py b/lutris/runners/yuzu.py index a21c55416d2daa9eefa8639187e02aff66648aba..de881c99ea3edb7ade52ffe791c9f33a06c7c2c3 100644 --- a/lutris/runners/yuzu.py +++ b/lutris/runners/yuzu.py @@ -35,7 +35,12 @@ class yuzu(Runner): "label": _("Title keys"), "type": "file", "help": _("File containing the title keys."), - } + }, { + "option": "fullscreen", + "label": _("Fullscreen"), + "type": "bool", + "default": True, + }, ] @property @@ -50,10 +55,15 @@ class yuzu(Runner): def play(self): """Run the game.""" arguments = [self.get_executable()] + + fullscreen = self.runner_config.get("fullscreen") + if fullscreen: + arguments.append("-f") + rom = self.game_config.get("main_file") or "" if not system.path_exists(rom): return {"error": "FILE_NOT_FOUND", "file": rom} - arguments.append(rom) + arguments += ["-g", rom] return {"command": arguments} def _update_key(self, key_type): diff --git a/lutris/runtime.py b/lutris/runtime.py index 0f804231279e3e047233b2ff21ce6a7349320e89..9d1dc9ecf89f63ae0c76edc017171ec230e52b1e 100644 --- a/lutris/runtime.py +++ b/lutris/runtime.py @@ -6,7 +6,7 @@ import time from gi.repository import GLib from lutris import settings -from lutris.util import http, jobs, system +from lutris.util import http, jobs, system, update_cache from lutris.util.downloader import Downloader from lutris.util.extract import extract_archive from lutris.util.linux import LINUX_SYSTEM @@ -187,12 +187,28 @@ class Runtime: class RuntimeUpdater: """Class handling the runtime updates""" - current_updates = 0 + cancelled = False status_updater = None + downloaders = {} + + def __init__(self, force=False): + self.force = force + + def update_runtimes(self): + """Update runtime components""" + runtime_call = update_cache.get_last_call("runtime") + if self.force or not runtime_call or runtime_call > 3600 * 12: + components_to_update = self.update() + if components_to_update: + while self.downloaders: + time.sleep(0.3) + if self.cancelled: + return + update_cache.write_date_to_cache("runtime") def is_updating(self): """Return True if the update process is running""" - return self.current_updates > 0 + return bool(self.downloaders) def update(self): """Launch the update process""" @@ -204,8 +220,13 @@ class RuntimeUpdater: runtime = Runtime(remote_runtime["name"], self) downloader = runtime.download(remote_runtime) if downloader: - self.current_updates += 1 - return self.current_updates + self.downloaders[runtime] = downloader + return len(self.downloaders) + + def cancel(self): + self.cancelled = True + for downloader in self.downloaders: + downloader.cancel() @staticmethod def _iter_remote_runtimes(): @@ -244,8 +265,8 @@ class RuntimeUpdater: def notify_finish(self, runtime): """A runtime has finished downloading""" logger.debug("Runtime %s is now updated and available", runtime.name) - self.current_updates -= 1 - if self.current_updates == 0: + del self.downloaders[runtime] + if not self.downloaders: logger.info("Runtime is fully updated.") diff --git a/lutris/services/__init__.py b/lutris/services/__init__.py index 5f90e277718024fff6a8f453a338cb94a9769516..817943f58984f80c9bd4464be2d521c665c26777 100644 --- a/lutris/services/__init__.py +++ b/lutris/services/__init__.py @@ -2,10 +2,11 @@ import os from lutris import settings +from lutris.services.amazon import AmazonService from lutris.services.battlenet import BattleNetService -from lutris.services.bethesda import BethesdaService from lutris.services.dolphin import DolphinService from lutris.services.egs import EpicGamesStoreService +from lutris.services.flathub import FlathubService from lutris.services.gog import GOGService from lutris.services.humblebundle import HumbleBundleService from lutris.services.itchio import ItchIoService @@ -32,6 +33,7 @@ def get_services(): "egs": EpicGamesStoreService, "origin": OriginService, "ubisoft": UbisoftConnectService, + "amazon": AmazonService } if not LINUX_SYSTEM.is_flatpak: _services["xdg"] = XDGService @@ -49,10 +51,9 @@ SERVICES = get_services() # Those services are not yet ready to be used WIP_SERVICES = { "battlenet": BattleNetService, - "bethesda": BethesdaService, "itchio": ItchIoService, "mame": MAMEService, - + "flathub": FlathubService } if os.environ.get("LUTRIS_ENABLE_ALL_SERVICES"): diff --git a/lutris/services/amazon.py b/lutris/services/amazon.py new file mode 100644 index 0000000000000000000000000000000000000000..0d98941b3a33de9ca867da3f016368d828c55b23 --- /dev/null +++ b/lutris/services/amazon.py @@ -0,0 +1,653 @@ +"""Module for handling the Amazon service""" +import base64 +import hashlib +import json +import lzma +import os +import secrets +import struct +import time +import uuid +from gettext import gettext as _ +from urllib.parse import parse_qs, urlencode, urlparse + +from lutris import settings +from lutris.exceptions import AuthenticationError, UnavailableGameError +from lutris.services.base import OnlineService +from lutris.services.service_game import ServiceGame +from lutris.services.service_media import ServiceMedia +from lutris.util import system +from lutris.util.amazon.sds_proto2 import CompressionAlgorithm, HashAlgorithm, Manifest, ManifestHeader +from lutris.util.http import HTTPError, Request +from lutris.util.log import logger +from lutris.util.strings import slugify + + +class AmazonBanner(ServiceMedia): + """Game logo""" + service = "amazon" + size = (200, 112) + dest_path = os.path.join(settings.CACHE_DIR, "amazon/banners") + file_pattern = "%s.jpg" + file_format = "jpeg" + api_field = "image" + url_pattern = "%s" + + def get_media_url(self, details): + return details["product"]["productDetail"]["details"]["logoUrl"] + + +class AmazonGame(ServiceGame): + """Representation of a Amazon game""" + service = "amazon" + + @classmethod + def new_from_amazon_game(cls, amazon_game): + """Return a Amazon game instance from the API info""" + service_game = AmazonGame() + service_game.appid = str(amazon_game["id"]) + service_game.slug = slugify(amazon_game["product"]["title"]) + service_game.name = amazon_game["product"]["title"] + service_game.details = json.dumps(amazon_game) + return service_game + + +class AmazonService(OnlineService): + """Service class for Amazon""" + + id = "amazon" + name = _("Amazon Prime Gaming") + icon = "amazon" + has_extras = False + drm_free = False + medias = { + "banner": AmazonBanner + } + default_format = "banner" + + login_window_width = 400 + login_window_height = 710 + + marketplace_id = "ATVPDKIKX0DER" + user_agent = "com.amazon.agslauncher.win/2.1.7437.6" + + amazon_api = "https://api.amazon.com" + amazon_sds = "https://sds.amazon.com" + amazon_gaming_graphql = "https://gaming.amazon.com/graphql" + + client_id = None + serial = None + verifier = None + + redirect_uri = "https://www.amazon.com/?" + + cookies_path = os.path.join(settings.CACHE_DIR, ".amazon.auth") + user_path = os.path.join(settings.CACHE_DIR, ".amazon.user") + cache_path = os.path.join(settings.CACHE_DIR, "amazon-library.json") + + locale = "en-US" + + is_loading = False + + @property + def credential_files(self): + return [self.user_path, self.cookies_path] + + @property + def login_url(self): + """Return authentication URL""" + self.verifier = self.generate_code_verifier() + challenge = self.generate_challange(self.verifier) + + self.serial = self.generate_device_serial() + self.client_id = self.generate_client_id(self.serial) + + arguments = { + "openid.ns": "http://specs.openid.net/auth/2.0", + "openid.claimed_id": "http://specs.openid.net/auth/2.0/identifier_select", + "openid.identity": "http://specs.openid.net/auth/2.0/identifier_select", + "openid.mode": "checkid_setup", + "openid.oa2.scope": "device_auth_access", + "openid.ns.oa2": "http://www.amazon.com/ap/ext/oauth/2", + "openid.oa2.response_type": "code", + "openid.oa2.code_challenge_method": "S256", + "openid.oa2.client_id": f"device:{self.client_id}", + "language": "en_US", + "marketPlaceId": self.marketplace_id, + "openid.return_to": "https://www.amazon.com", + "openid.pape.max_auth_age": 0, + "openid.assoc_handle": "amzn_sonic_games_launcher", + "pageId": "amzn_sonic_games_launcher", + "openid.oa2.code_challenge": challenge, + } + + return "https://amazon.com/ap/signin?" + urlencode(arguments) + + def login_callback(self, url): + """Get authentication token from Amazon""" + if url.find("openid.oa2.authorization_code") > 0: + logger.info("Got authorization code") + + # Parse auth code + parsed = urlparse(url) + query = parse_qs(parsed.query) + auth_code = query["openid.oa2.authorization_code"][0] + + user_data = self.register_device(auth_code) + user_data["token_obtain_time"] = time.time() + + self.save_user_data(user_data) + + self.emit("service-login") + + def is_connected(self): + """Return whether the user is authenticated and if the service is available""" + if not self.is_authenticated(): + return False + + return self.check_connection() + + def load(self): + """Load the user game library from the Amazon API""" + if self.is_loading: + logger.warning("Amazon games are already loading") + return + if not self.is_connected(): + logger.error("User not connected to Amazon") + return + self.is_loading = True + try: + games = [AmazonGame.new_from_amazon_game(game) for game in self.get_library()] + for game in games: + game.save() + except: + logger.error("Unable to get games library") + games = None + + self.is_loading = False + return games + + def save_user_data(self, user_data): + """Save the user data file""" + with open(self.user_path, "w", encoding='utf-8') as user_file: + user_file.write(json.dumps(user_data)) + + def load_user_data(self): + """Load the user data file""" + user_data = None + + if not os.path.exists(self.user_path): + raise AuthenticationError(_("No Amazon user data available, please log in again")) + + with open(self.user_path, "r", encoding='utf-8') as user_file: + user_data = json.load(user_file) + + return user_data + + def generate_code_verifier(self) -> bytes: + code_verifier = secrets.token_bytes(32) + code_verifier = base64.urlsafe_b64encode(code_verifier).rstrip(b"=") + logger.info("Generated code_verifier: %s", code_verifier) + return code_verifier + + def generate_challange(self, code_verifier: bytes) -> bytes: + challenge_hash = hashlib.sha256(code_verifier) + challenge = base64.urlsafe_b64encode(challenge_hash.digest()).rstrip(b"=") + logger.info("Generated challange: %s", challenge) + return challenge + + def generate_device_serial(self) -> str: + serial = uuid.UUID(int=uuid.getnode()).hex.upper() + logger.info("Generated serial: %s", serial) + return serial + + def generate_client_id(self, serial) -> str: + serialEx = f"{serial}#A2UMVHOX7UP4V7" + clientId = serialEx.encode("ascii") + clientIdHex = clientId.hex() + logger.info("Generated client_id: %s", clientIdHex) + return clientIdHex + + def register_device(self, code): + """Register current device and return the user data""" + logger.info("Registerring a device. ID: %s", self.client_id) + data = { + "auth_data": { + "authorization_code": code, + "client_domain": "DeviceLegacy", + "client_id": self.client_id, + "code_algorithm": "SHA-256", + "code_verifier": self.verifier.decode("utf-8"), + "use_global_authentication": False, + }, + "registration_data": { + "app_name": "AGSLauncher for Windows", + "app_version": "1.0.0", + "device_model": "Windows", + "device_name": None, + "device_serial": self.serial, + "device_type": "A2UMVHOX7UP4V7", + "domain": "Device", + "os_version": "10.0.19044.0", + }, + "requested_extensions": ["customer_info", "device_info"], + "requested_token_type": ["bearer", "mac_dms"], + "user_context_map": {}, + } + + url = f"{self.amazon_api}/auth/register" + request = Request(url) + + try: + request.post(json.dumps(data).encode()) + except HTTPError as ex: + logger.error("Failed http request %s", url) + raise AuthenticationError(_("Unable to register device, please log in again")) from ex + + res_json = request.json + logger.info("Succesfully registered a device") + user_data = res_json["response"]["success"] + return user_data + + def is_token_expired(self): + """Check if the stored token is expired""" + user_data = self.load_user_data() + + token_obtain_time = user_data["token_obtain_time"] + expires_in = user_data["tokens"]["bearer"]["expires_in"] + + if not token_obtain_time or not expires_in: + raise AuthenticationError(_("Invalid token info found, please log in again")) + + return time.time() > token_obtain_time + int(expires_in) + + def refresh_token(self): + """Refresh the token""" + url = f"{self.amazon_api}/auth/token" + logger.info("Refreshing token") + + user_data = self.load_user_data() + + headers = { + "Accept": "application/json", + "Accept-Language": "en_US", + "User-Agent": self.user_agent, + "Content-Type": "application/json", + "charset": "utf-8", + } + + refresh_token = user_data["tokens"]["bearer"]["refresh_token"] + request_data = { + "source_token": refresh_token, + "source_token_type": "refresh_token", + "requested_token_type": "access_token", + "app_name": "AGSLauncher for Windows", + "app_version": "1.0.0", + } + + request = Request(url, headers=headers) + + try: + request.post(json.dumps(request_data).encode()) + except HTTPError as ex: + logger.error("Failed http request %s", url) + raise AuthenticationError(_("Unable to refresh token, please log in again")) from ex + + res_json = request.json + + user_data["tokens"]["bearer"]["access_token"] = res_json["access_token"] + user_data["tokens"]["bearer"]["expires_in"] = res_json["expires_in"] + user_data["token_obtain_time"] = time.time() + + self.save_user_data(user_data) + + def get_access_token(self): + """Return the access token and refresh the session if required""" + if self.is_token_expired(): + self.refresh_token() + + user_data = self.load_user_data() + access_token = user_data["tokens"]["bearer"]["access_token"] + + return access_token + + def check_connection(self): + """Check if the connection with Amazon is available""" + + try: + access_token = self.get_access_token() + except Exception: + return False + + headers = { + "Accept": "application/json", + "Accept-Language": "en_US", + "User-Agent": self.user_agent, + "Authorization": f"bearer {access_token}", + } + + url = f"{self.amazon_api}/user/profile" + request = Request(url, headers=headers) + + try: + request.get() + except HTTPError: + # Do not raise exception here, should be managed from the caller + logger.error("Failed http request %s", url) + return False + + return True + + def get_library(self): + """Return the user's library of Amazon games""" + if system.path_exists(self.cache_path): + logger.debug("Returning cached Amazon library") + with open(self.cache_path, "r", encoding='utf-8') as amazon_cache: + return json.load(amazon_cache) + + access_token = self.get_access_token() + + user_data = self.load_user_data() + serial = user_data["extensions"]["device_info"]["device_serial_number"] + + games = [] + nextToken = None + while True: + request_data = self.get_sync_request_data(serial, nextToken) + + json_data = self.request_sds( + "com.amazonaws.gearbox." + "softwaredistribution.service.model." + "SoftwareDistributionService.GetEntitlementsV2", + access_token, + request_data, + ) + + if not json_data: + return + + games.extend(json_data["entitlements"]) + + if "nextToken" not in json_data: + break + + logger.info("Got next token in response, making next request") + nextToken = json_data["nextToken"] + + with open(self.cache_path, "w", encoding='utf-8') as amazon_cache: + json.dump(games, amazon_cache) + + return games + + def get_sync_request_data(self, serial, nextToken=None): + request_data = { + "Operation": "GetEntitlementsV2", + "clientId": "Sonic", + "syncPoint": None, + "nextToken": nextToken, + "maxResults": 50, + "productIdFilter": None, + "keyId": "d5dc8b8b-86c8-4fc4-ae93-18c0def5314d", + "hardwareHash": hashlib.sha256(serial.encode()).hexdigest().upper(), + } + + return request_data + + def request_sds(self, target, token, body): + headers = { + "X-Amz-Target": target, + "x-amzn-token": token, + "User-Agent": self.user_agent, + "UserAgent": self.user_agent, + "Content-Type": "application/json", + "Content-Encoding": "amz-1.0", + } + + url = f"{self.amazon_sds}/amazon/" + request = Request(url, headers=headers) + + try: + request.post(json.dumps(body).encode()) + except HTTPError: + # Do not raise exception here, should be managed from the caller + logger.error("Failed http request %s", url) + return + + return request.json + + def get_game_manifest_info(self, game_id): + """Get a game manifest information""" + access_token = self.get_access_token() + + request_data = { + "adgGoodId": game_id, + "previousVersionId": None, + "keyId": "d5dc8b8b-86c8-4fc4-ae93-18c0def5314d", + "Operation": "GetDownloadManifestV3", + } + + response = self.request_sds( + "com.amazonaws.gearbox." + "softwaredistribution.service.model." + "SoftwareDistributionService.GetDownloadManifestV3", + access_token, + request_data, + ) + + if not response: + logger.error("There was an error getting game manifest: %s", game_id) + raise UnavailableGameError(_( + "Unable to get game manifest info, please check your Amazon credentials and internet connectivity")) + + return response + + def get_game_manifest(self, manifest_info): + """Get a game manifest""" + headers = { + "User-Agent": self.user_agent, + "UserAgent": self.user_agent + } + + url = manifest_info["downloadUrls"][0] + request = Request(url, headers=headers) + + try: + request.get() + except HTTPError as ex: + logger.error("Failed http request %s", url) + raise UnavailableGameError(_( + "Unable to get game manifest, please check your Amazon credentials and internet connectivity")) from ex + + content = request.content + + header_size = struct.unpack(">I", content[:4])[0] + + header = ManifestHeader() + header.decode(content[4: 4 + header_size]) + + if header.compression.algorithm == CompressionAlgorithm.none: + raw_manifest = content[4 + header_size:] + elif header.compression.algorithm == CompressionAlgorithm.lzma: + raw_manifest = lzma.decompress(content[4 + header_size:]) + else: + logger.error("Unknown compression algorithm found in manifest") + raise UnavailableGameError(_( + "Unknown compression algorithm found in manifest, " + "please check your Amazon credentials and internet connectivity")) + + manifest = Manifest() + manifest.decode(raw_manifest) + + return manifest + + def get_game_patches(self, game_id, version, file_list): + """Get game files""" + access_token = self.get_access_token() + + request_data = { + "Operation": "GetPatches", + "versionId": version, + "fileHashes": file_list, + "deltaEncodings": ["FUEL_PATCH", "NONE"], + "adgGoodId": game_id, + } + + response = self.request_sds( + "com.amazonaws.gearbox." + "softwaredistribution.service.model." + "SoftwareDistributionService.GetPatches", + access_token, + request_data, + ) + + if not response: + logger.error("There was an error getting patches: %s", game_id) + raise UnavailableGameError(_( + "Unable to get the patches of game, " + "please check your Amazon credentials and internet connectivity"), game_id) + + return response["patches"] + + def structure_manifest_data(self, manifest): + """Transform the manifest to more convenient data structures""" + files = [] + directories = [] + hashes = [] + hashpairs = [] + for __, package in enumerate(manifest.packages): + for __, file in enumerate(package.files): + file_hash = file.hash.value.hex() + + hashes.append(file_hash) + files.append({"path": file.path.decode().replace("\\", "/"), "size": file.size, "url": None}) + + hashpairs.append(dict( + sourceHash=None, + targetHash=dict(value=file_hash, + algorithm=HashAlgorithm.get_name(file.hash.algorithm)), + )) + for __, directory in enumerate(package.dirs): + if directory.path is not None: + directories.append(directory.path.decode().replace("\\", "/")) + + file_dict = dict(zip(hashes, files)) + + return file_dict, directories, hashpairs + + def get_game_files(self, game_id): + """Get the game file list""" + + manifest_info = self.get_game_manifest_info(game_id) + manifest = self.get_game_manifest(manifest_info) + + file_dict, directories, hashpairs = self.structure_manifest_data(manifest) + + game_patches = self.get_game_patches(game_id, manifest_info["versionId"], hashpairs) + for __, patch in enumerate(game_patches): + file_dict[patch["patchHash"]["value"]]["url"] = patch["downloadUrls"][0] + + return file_dict, directories + + def get_exe_and_game_args(self, fuel_url): + """Get and parse the fuel.json file""" + headers = { + "User-Agent": self.user_agent, + "UserAgent": self.user_agent + } + + request = Request(fuel_url, headers=headers) + + try: + request.get() + except HTTPError as ex: + logger.error("Failed http request %s", fuel_url) + raise UnavailableGameError(_( + "Unable to get fuel.json file, please check your Amazon credentials and internet connectivity")) from ex + + res_json = request.json + + if res_json["Main"] is None or res_json["Main"]["Command"] is None: + return None, None + + game_cmd = res_json["Main"]["Command"].replace("\\", "/") + game_args = "" + + if "Args" in res_json["Main"] and res_json["Main"]["Args"]: + for arg in res_json["Main"]["Args"]: + game_args += arg if game_args == "" else " " + arg + + return game_cmd, game_args + + def get_game_cmd_line(self, fuel_url): + """Get the executable path and the arguments for run the game""" + game_cmd = None + game_args = None + + if fuel_url is not None: + game_cmd, game_args = self.get_exe_and_game_args(fuel_url) + + if game_cmd is None: + game_cmd = "_xXx_AUTO_WIN32_xXx_" + + if game_args is None: + game_args = "" + + return game_cmd, game_args + + def generate_installer(self, db_game): + """Generate a installer for the Amazon game""" + details = json.loads(db_game["details"]) + + files = [] + installer = [ + {"task": {"name": "create_prefix"}}, + {"mkdir": "$GAMEDIR/drive_c/game"}] + + file_dict, directories = self.get_game_files(details["id"]) + + for __, directory in enumerate(directories): + installer.append({"mkdir": f"$GAMEDIR/drive_c/game/{directory}"}) + + fuel_url = None + + for file_hash, file in file_dict.items(): + file_name = os.path.basename(file["path"]) + files.append({ + file_hash: { + "url": file["url"], + "filename": file_name, + "provider": "download" + } + }) + + file_path = os.path.dirname(file["path"]) + installer.append({"move": { + "description": _("Installing file: %s") % file_name, + "src": file_hash, + "dst": f"$GAMEDIR/drive_c/game/{file_path}" + }}) + + if file_name == "fuel.json": + fuel_url = file["url"] + + game_cmd, game_args = self.get_game_cmd_line(fuel_url) + logger.info("game cmd line: %s %s", game_cmd, game_args) + + return { + "name": details["product"]["title"], + "version": _("Amazon Prime Gaming"), + "slug": slugify(details["product"]["title"]), + "game_slug": slugify(details["product"]["title"]), + "runner": "wine", + "script": { + "game": { + "exe": f"$GAMEDIR/drive_c/game/{game_cmd}", + "args": game_args, + "prefix": "$GAMEDIR", + "working_dir": "$GAMEDIR/drive_c/game" + }, + "system": {}, + "files": files, + "installer": installer + } + } diff --git a/lutris/services/base.py b/lutris/services/base.py index 9c580d003b4535cb8fd6f13d3e9833058696bf36..32a21e0859b3f972850e7f07c7698fe629bf00dc 100644 --- a/lutris/services/base.py +++ b/lutris/services/base.py @@ -1,6 +1,7 @@ """Generic service utilities""" import os import shutil +from gettext import gettext as _ from gi.repository import Gio, GObject @@ -8,11 +9,14 @@ from lutris import api, settings from lutris.api import get_game_installers from lutris.config import write_game_config from lutris.database import sql -from lutris.database.games import add_game, get_games +from lutris.database.games import add_game, get_game_by_field, get_games from lutris.database.services import ServiceGameCollection from lutris.game import Game +from lutris.gui.dialogs import NoticeDialog from lutris.gui.dialogs.webconnect_dialog import WebConnectDialog from lutris.gui.views.media_loader import download_media +from lutris.gui.widgets.utils import BANNER_SIZE, ICON_SIZE +from lutris.installer import get_installers from lutris.services.service_media import ServiceMedia from lutris.util import system from lutris.util.cookies import WebkitCookieJar @@ -27,26 +31,40 @@ class AuthTokenExpired(Exception): class LutrisBanner(ServiceMedia): service = 'lutris' - size = (184, 69) + size = BANNER_SIZE dest_path = settings.BANNER_PATH file_pattern = "%s.jpg" + file_format = "jpeg" api_field = 'banner_url' class LutrisIcon(LutrisBanner): - size = (32, 32) + size = ICON_SIZE dest_path = settings.ICON_PATH file_pattern = "winegame_%s.png" + file_format = "png" api_field = 'icon_url' + @property + def custom_media_storage_size(self): + return (128, 128) + + def update_desktop(self): + system.update_desktop_icons() + class LutrisCoverart(ServiceMedia): service = 'lutris' size = (264, 352) file_pattern = "%s.jpg" + file_format = "jpeg" dest_path = settings.COVERART_PATH api_field = 'coverart' + @property + def config_ui_size(self): + return (66, 88) + class LutrisCoverartMedium(LutrisCoverart): size = (176, 234) @@ -82,12 +100,29 @@ class BaseService(GObject.Object): return self.id def run(self): - """Override this method to run a launcher""" - logger.warning("This service doesn't run anything") + """Launch the game client""" + launcher = self.get_launcher() + if launcher: + launcher.emit("game-launch") def is_launchable(self): + if self.client_installer: + return get_game_by_field(self.client_installer, "slug") return False + def get_launcher(self): + if not self.client_installer: + return + db_launcher = get_game_by_field(self.client_installer, "slug") + if db_launcher: + return Game(db_launcher["id"]) + + def is_launcher_installed(self): + launcher = self.get_launcher() + if not launcher: + return False + return launcher.is_installed + def reload(self): """Refresh the service's games""" self.emit("service-games-load") @@ -276,16 +311,26 @@ class OnlineService(BaseService): cache_path = NotImplemented requires_login_page = False + login_window_width = 390 + login_window_height = 500 + @property def credential_files(self): """Return a list of all files used for authentication""" return [self.cookies_path] def login(self, parent=None): + if self.client_installer and not self.is_launcher_installed(): + NoticeDialog( + _("This service requires a game launcher. The following steps will install it.\n" + "Once the client is installed, you can login to %s.") % self.name) + application = Gio.Application.get_default() + installers = get_installers(game_slug=self.client_installer) + application.show_installer_window(installers) + return logger.debug("Connecting to %s", self.name) dialog = WebConnectDialog(self, parent) - dialog.set_modal(True) - dialog.show() + dialog.run() def is_authenticated(self): """Return whether the service is authenticated""" diff --git a/lutris/services/bethesda.py b/lutris/services/bethesda.py deleted file mode 100644 index 76e9131b44d7e36c8b96255040e2e3353b4d03ff..0000000000000000000000000000000000000000 --- a/lutris/services/bethesda.py +++ /dev/null @@ -1,14 +0,0 @@ -"""Bethesda service. -Not ready yet. -""" -from gettext import gettext as _ - -from lutris.services.base import OnlineService - - -class BethesdaService(OnlineService): - """Service class for Battle.net""" - - id = "bethesda" - name = _("Bethesda") - icon = "bethesda" diff --git a/lutris/services/dolphin.py b/lutris/services/dolphin.py index a1b928c507c7704e416675fc464536a854ab30a1..f1b1b313218bd5a54e9d03946c93670a7dd4ba93 100644 --- a/lutris/services/dolphin.py +++ b/lutris/services/dolphin.py @@ -18,6 +18,7 @@ class DolphinBanner(ServiceMedia): source = "local" size = (96, 32) file_pattern = "%s.png" + file_format = "jpeg" dest_path = os.path.join(settings.CACHE_DIR, "dolphin/banners/small") diff --git a/lutris/services/egs.py b/lutris/services/egs.py index da30a8141bade9ffaa80b537726382dc27b09c69..508bc3062636860c2b1476e7fd06c47b773b907d 100644 --- a/lutris/services/egs.py +++ b/lutris/services/egs.py @@ -34,6 +34,7 @@ class DieselGameMedia(ServiceMedia): service = "egs" remote_size = (200, 267) file_pattern = "%s.jpg" + file_format = "jpeg" min_logo_x = 300 min_logo_y = 150 @@ -107,6 +108,7 @@ class DieselGameBoxLogo(DieselGameMedia): size = (200, 100) remote_size = size file_pattern = "%s.png" + file_format = "png" visible = False dest_path = os.path.join(settings.CACHE_DIR, "egs/game_logo") api_field = "DieselGameBoxLogo" @@ -150,7 +152,9 @@ class EpicGamesStoreService(OnlineService): cookies_path = os.path.join(settings.CACHE_DIR, ".egs.auth") token_path = os.path.join(settings.CACHE_DIR, ".egs.token") cache_path = os.path.join(settings.CACHE_DIR, "egs-library.json") - login_url = "https://www.epicgames.com/id/login?redirectUrl=https://www.epicgames.com/id/api/redirect" + login_url = ("https://www.epicgames.com/id/login?redirectUrl=" + "https%3A//www.epicgames.com/id/api/redirect%3F" + "clientId%3D34a02cf8f4414e29b15921876da36f9a%26responseType%3Dcode") redirect_uri = "https://www.epicgames.com/id/api/redirect" oauth_url = 'https://account-public-service-prod03.ol.epicgames.com' catalog_url = 'https://catalog-public-service-prod06.ol.epicgames.com' @@ -200,28 +204,9 @@ class EpicGamesStoreService(OnlineService): logger.debug("Login to EGS successful") logger.debug(content) content_json = json.loads(content.decode()) - session_id = content_json["sid"] - _session = requests.session() - _session.headers.update({ - 'X-Epic-Event-Action': 'login', - 'X-Epic-Event-Category': 'login', - 'X-Epic-Strategy-Flags': '', - 'X-Requested-With': 'XMLHttpRequest', - 'User-Agent': self.user_agent - }) - - _session.get('https://www.epicgames.com/id/api/set-sid', params={'sid': session_id}) - _session.get('https://www.epicgames.com/id/api/csrf') - response = _session.post( - 'https://www.epicgames.com/id/api/exchange/generate', - headers={'X-XSRF-TOKEN': _session.cookies['XSRF-TOKEN']} - ) - - if response.status_code != 200: - logger.error("Failed to connec to EGS (Status %s): %s", response.status_code, response.json()) - return + session_id = content_json["authorizationCode"] - self.start_session(response.json()['code']) + self.start_session(authorization_code=session_id) self.emit("service-login") def resume_session(self): @@ -235,21 +220,24 @@ class EpicGamesStoreService(OnlineService): raise RuntimeError(response_content) return response_content - def start_session(self, exchange_code=None): + def start_session(self, exchange_code=None, authorization_code=None): if exchange_code: - grant_type = 'exchange_code' - token = exchange_code + params = dict(grant_type='exchange_code', + exchange_code=exchange_code, + token_type='eg1') + elif authorization_code: + params = dict(grant_type='authorization_code', + code=authorization_code, + token_type='eg1') else: - grant_type = 'refresh_token' - token = self.session_data["refresh_token"] + params = dict(grant_type='refresh_token', + refresh_token=self.session_data["refresh_token"], + + token_type='eg1') response = self.session.post( 'https://account-public-service-prod03.ol.epicgames.com/account/api/oauth/token', - data={ - 'grant_type': grant_type, - grant_type: token, - 'token_type': 'eg1' - }, + data=params, auth=self.http_basic_auth ) if response.status_code >= 500: diff --git a/lutris/services/flathub.py b/lutris/services/flathub.py new file mode 100644 index 0000000000000000000000000000000000000000..6cf1ed937232c3cb3f940f8d015816b3b7ad6e76 --- /dev/null +++ b/lutris/services/flathub.py @@ -0,0 +1,204 @@ +import json +import os +import subprocess +from gettext import gettext as _ +from pathlib import Path + +import requests +from gi.repository import Gio + +from lutris import settings +from lutris.services.base import BaseService +from lutris.services.service_game import ServiceGame +from lutris.services.service_media import ServiceMedia +from lutris.util import system +from lutris.util.log import logger +from lutris.util.strings import slugify + + +class FlathubBanner(ServiceMedia): + """Standard size of a Flathub banner""" + service = "flathub" + size = (128, 128) + dest_path = os.path.join(settings.CACHE_DIR, "flathub/banners") + file_pattern = "%s.png" + file_format = "png" + url_field = 'iconDesktopUrl' + + def get_media_url(self, details): + return details.get(self.url_field) + + +class FlathubGame(ServiceGame): + """Representation of a Flathub game""" + service = "flathub" + + @classmethod + def new_from_flathub_game(cls, flathub_game): + """Return a Flathub game instance from the API info""" + service_game = FlathubGame() + service_game.appid = flathub_game["flatpakAppId"] + service_game.slug = slugify(flathub_game["name"]) + service_game.lutris_slug = slugify(flathub_game["name"]) + service_game.name = flathub_game["name"] + service_game.details = { + "summary": flathub_game["summary"], + "version": flathub_game["currentReleaseVersion"] + } + service_game.runner = "flatpak" + service_game.details = json.dumps(flathub_game) + return service_game + + +class FlathubService(BaseService): + """Service class for Flathub""" + + id = "flathub" + name = _("Flathub") + icon = "flathub" + medias = { + "banner": FlathubBanner + } + default_format = "banner" + api_url = "https://flathub.org/api/v1/apps/category/Game" + cache_path = os.path.join(settings.CACHE_DIR, "flathub-library.json") + + is_loading = False + branch = "stable" + arch = "x86_64" + install_type = "system" # can be either system (default) or user + install_locations = { + "system": "var/lib/flatpak/app/", + "user": f"{Path.home()}/.local/share/flatpak/app/" + } + runner = "flatpak" + game_class = FlathubGame + + def wipe_game_cache(self): + """Wipe the game cache, allowing it to be reloaded""" + if system.path_exists(self.cache_path): + logger.debug("Deleting %s cache %s", self.id, self.cache_path) + os.remove(self.cache_path) + super().wipe_game_cache() + + def load(self): + """Load the available games from Flathub""" + if self.is_loading: + logger.warning("Flathub games are already loading") + return + self.is_loading = True + response = requests.get(self.api_url) + entries = response.json() + # seen = set() + flathub_games = [] + for game in entries: + # if game["flatpakAppId"] in seen: + # continue + flathub_games.append(FlathubGame.new_from_flathub_game(game)) + # seen.add(game["flatpakAppId"]) + for game in flathub_games: + game.save() + self.is_loading = False + return flathub_games + + def install(self, db_game): + """Install a Flathub game""" + app_id = db_game["appid"] + logger.debug("Installing %s from service %s", app_id, self.id) + # Check if Flathub repo is active on the system + if not self.is_flathub_remote_active(): + logger.error("Flathub is not configured on the system. Visit https://flatpak.org/setup/ for instructions.") + return + # Check if game is already installed + if app_id in self.get_installed_apps(): + logger.debug("%s is already installed.", app_id) + return + # Install the game + service_installers = self.get_installers_from_api(app_id) + if not service_installers: + service_installers = [self.generate_installer(db_game)] + application = Gio.Application.get_default() + application.show_installer_window(service_installers, service=self, appid=app_id) + + @staticmethod + def get_installed_apps(): + """Get list of installed Flathub apps""" + try: + process = subprocess.run(["flatpak", "list", "--app", "--columns=application"], + capture_output=True, check=True, encoding="utf-8", text=True, timeout=5.0) + return process.stdout.splitlines() or [] + except (TimeoutError, subprocess.CalledProcessError) as err: + logger.exception("Error occurred while getting installed flatpak apps: %s", err) + return [] + + def is_flathub_remote_active(self): + """Check if Flathub is configured and enabled as a flatpak repository""" + remotes = self.get_active_remotes() + for remote in remotes: + if 'flathub' in remote.values(): + return True + return False + + @staticmethod + def get_active_remotes(): + """Get a list of dictionaries containing name, title and url""" + try: + process = subprocess.run(["flatpak", "remotes", "--columns=name,title,url"], + capture_output=True, check=True, encoding="utf-8", text=True, timeout=5.0) + entries = [] + for line in process.stdout.splitlines(): + cols = line.split("\t") + entries.append({ + "name": cols[0].lower(), + "title": cols[1].lower(), + "url": cols[2] + }) + return entries + except (TimeoutError, subprocess.CalledProcessError) as err: + logger.exception("Error occurred while getting installed flatpak apps: %s", err) + return [] + + def generate_installer(self, db_game): + # TODO: Add options for user to select arch, branch and install_type + return { + "appid": db_game["appid"], + "game_slug": slugify(db_game["name"]), + "slug": slugify(db_game["name"]) + "-" + self.id, + "name": db_game["name"], + "version": "Flathub", + "runner": self.runner, + "script": { + "game": { + "appid": db_game["appid"], + "arch": self.arch, + "branch": self.branch, + "install_type": self.install_type + }, + "system": { + "disable_runtime": True + }, + "require-binaries": "flatpak", + "installer": [ + { + "execute": + { + "file": "flatpak", + "args": f"install --app --noninteractive flathub " + f"app/{db_game['appid']}/{self.arch}/{self.branch}", + "disable_runtime": True + } + } + ] + } + } + + def get_game_directory(self, _installer): + install_type, application, arch, branch = (_installer["script"]["game"][key] for key in + ("install_type", "application", "arch", "branch")) + return os.path.join(self.install_locations[install_type], application, arch, branch) + + # def add_installed_games(self): + # process = subprocess.run(["flatpak", "list", "--app", "--columns=application,arch,branch,installation,name"], + # capture_output=True, check=True, encoding="utf-8", text=True) + # for line in process.stdout.splitlines(): + # cols = line.split("\t") diff --git a/lutris/services/gog.py b/lutris/services/gog.py index 94dad24b2195aab6ca0d39ed8391dca60c92fd3c..25512cfa23c4b13fb71b46f5e783d795d96c48d6 100644 --- a/lutris/services/gog.py +++ b/lutris/services/gog.py @@ -9,7 +9,7 @@ from urllib.parse import parse_qsl, urlencode, urlparse from lxml import etree from lutris import settings -from lutris.exceptions import AuthenticationError, UnavailableGame +from lutris.exceptions import AuthenticationError, UnavailableGameError from lutris.installer import AUTO_ELF_EXE, AUTO_WIN32_EXE from lutris.installer.installer_file import InstallerFile from lutris.services.base import OnlineService @@ -27,6 +27,7 @@ class GogSmallBanner(ServiceMedia): size = (100, 60) dest_path = os.path.join(settings.CACHE_DIR, "gog/banners/small") file_pattern = "%s.jpg" + file_format = "jpeg" api_field = "image" url_pattern = "https:%s_prof_game_100x60.jpg" @@ -177,7 +178,8 @@ class GOGService(OnlineService): request = Request(url) try: request.get() - except HTTPError: + except HTTPError as http_error: + logger.error(http_error) logger.error("Failed to get token, check your GOG credentials.") logger.warning("Clearing existing credentials") self.logout() @@ -300,9 +302,9 @@ class GOGService(OnlineService): response = self.make_api_request(downlink) except HTTPError as ex: logger.error("HTTP error: %s", ex) - raise UnavailableGame from ex + raise UnavailableGameError(_("The download of '%s' failed.") % downlink) from ex if not response: - raise UnavailableGame + raise UnavailableGameError(_("The download of '%s' failed.") % downlink) for field in ("checksum", "downlink"): field_url = response[field] parsed = urlparse(field_url) @@ -430,7 +432,7 @@ class GOGService(OnlineService): _installer = gog_installers[0] return self.query_download_links(_installer) except HTTPError as err: - raise UnavailableGame("Couldn't load the download links for this game") from err + raise UnavailableGameError(_("Couldn't load the download links for this game")) from err def get_patch_files(self, installer, installer_file_id): logger.debug("Getting patches for %s", installer.version) @@ -476,14 +478,14 @@ class GOGService(OnlineService): "checksum_url": installer_file.get("checksum_url") })) if not file_id_provided: - raise UnavailableGame("Unable to determine correct file to launch installer") + raise UnavailableGameError(_("Unable to determine correct file to launch installer")) return files def get_installer_files(self, installer, installer_file_id): try: downloads = self.get_downloads(installer.service_appid) except HTTPError as err: - raise UnavailableGame("Couldn't load the downloads for this game") from err + raise UnavailableGameError(_("Couldn't load the downloads for this game")) from err links = self._get_installer_links(installer, downloads) if links: files = self._format_links(installer, installer_file_id, links) diff --git a/lutris/services/humblebundle.py b/lutris/services/humblebundle.py index 9be84f6e6bacc683b2da3a8ef487020281358566..35bbb00ce6b4c0cb4b791ec12668b2af7c4a70cd 100644 --- a/lutris/services/humblebundle.py +++ b/lutris/services/humblebundle.py @@ -5,7 +5,7 @@ import os from gettext import gettext as _ from lutris import settings -from lutris.exceptions import UnavailableGame +from lutris.exceptions import UnavailableGameError from lutris.installer import AUTO_ELF_EXE, AUTO_WIN32_EXE from lutris.installer.installer_file import InstallerFile from lutris.services.base import OnlineService @@ -23,6 +23,7 @@ class HumbleBundleIcon(ServiceMedia): size = (70, 70) dest_path = os.path.join(settings.CACHE_DIR, "humblebundle/icons") file_pattern = "%s.png" + file_format = "png" api_field = "icon" @@ -220,9 +221,9 @@ class HumbleBundleService(OnlineService): link = get_humble_download_link(installer.service_appid, installer.runner) except Exception as ex: logger.exception("Failed to get Humble Bundle game: %s", ex) - raise UnavailableGame from ex + raise UnavailableGameError(_("The download URL for the game could not be determined.")) from ex if not link: - raise UnavailableGame("No game found on Humble Bundle") + raise UnavailableGameError(_("No game found on Humble Bundle")) filename = link.split("?")[0].split("/")[-1] return [ InstallerFile(installer.game_slug, installer_file_id, { diff --git a/lutris/services/origin.py b/lutris/services/origin.py index df6131971ecdc1a50c08f45a0ebec3f70e511279..f1e91a388876838dcbe7030d5d8233f071e975e1 100644 --- a/lutris/services/origin.py +++ b/lutris/services/origin.py @@ -2,11 +2,13 @@ import json import os import random +import ssl import urllib.parse from gettext import gettext as _ from xml.etree import ElementTree import requests +import urllib3 from gi.repository import Gio from lutris import settings @@ -21,6 +23,8 @@ from lutris.services.service_media import ServiceMedia from lutris.util.log import logger from lutris.util.strings import slugify +SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION = 1 << 18 + class OriginLauncher: manifests_paths = "ProgramData/Origin/LocalContent" @@ -47,6 +51,7 @@ class OriginLauncher: class OriginPackArtSmall(ServiceMedia): service = "origin" file_pattern = "%s.jpg" + file_format = "jpeg" size = (63, 89) dest_path = os.path.join(settings.CACHE_DIR, "origin/pack-art-small") api_field = "packArtSmall" @@ -80,6 +85,43 @@ class OriginGame(ServiceGame): return origin_game +class LegacyRenegotiationHTTPAdapter(requests.adapters.HTTPAdapter): + """Allow insecure SSL/TLS protocol renegotiation in an HTTP request. + + By default, OpenSSL v3 expects that servers support RFC 5746. Unfortunately, + accounts.ea.com does not support this TLS extension (from 2010!), causing + OpenSSL to refuse to connect. This `requests` HTTP Adapter configures + OpenSSL to allow "unsafe legacy renegotiation", allowing EA Origin to + connect. This is only intended as a temporary workaround, and should be + removed as soon as accounts.ea.com is updated to support RFC 5746. + + Using this adapter will reduce the security of the connection. However, the + impact should be relatively minimal this is only used to connect to EA + services. See CVE-2009-3555 for more details. + + See #4235 for more information. + """ + + def init_poolmanager(self, connections, maxsize, block=False, **pool_kwargs): + """Override the default PoolManager to allow insecure renegotiation.""" + # Based off of the default function from `requests`. + self._pool_connections = connections + self._pool_maxsize = maxsize + self._pool_block = block + + ssl_context = ssl.create_default_context() + ssl_context.options |= SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION + + self.poolmanager = urllib3.PoolManager( + num_pools=connections, + maxsize=maxsize, + block=block, + strict=True, + ssl_context=ssl_context, + **pool_kwargs, + ) + + class OriginService(OnlineService): """Service class for EA Origin""" @@ -111,6 +153,7 @@ class OriginService(OnlineService): super().__init__() self.session = requests.session() + self.session.mount("https://", LegacyRenegotiationHTTPAdapter()) self.access_token = self.load_access_token() @property @@ -272,6 +315,8 @@ class OriginService(OnlineService): logger.debug("Installed %s Origin games", installed_games) def install_from_origin(self, origin_game, manifest): + if "id" not in manifest: + return offer_id = manifest["id"].split("@")[0] logger.debug("Installing Origin game %s", offer_id) service_game = ServiceGameCollection.get_game("origin", offer_id) diff --git a/lutris/services/service_media.py b/lutris/services/service_media.py index 8ec5df0449899055912ef83ba36df7f566a258d9..aac87316fec8a3e3ee36ec0206121a01f4de547e 100644 --- a/lutris/services/service_media.py +++ b/lutris/services/service_media.py @@ -23,6 +23,7 @@ class ServiceMedia: small_size = None dest_path = None file_pattern = NotImplemented + file_format = NotImplemented api_field = NotImplemented url_pattern = "%s" @@ -41,9 +42,12 @@ class ServiceMedia: """Whether the icon for the specified slug exists locally""" return system.path_exists(self.get_absolute_path(slug)) - def get_pixbuf_for_game(self, slug, is_installed=True): + def get_pixbuf_for_game(self, slug, size=None, is_installed=True): + if not size: + size = self.size + image_abspath = self.get_absolute_path(slug) - return get_pixbuf(image_abspath, self.size, fallback=get_default_icon(self.size), is_installed=is_installed) + return get_pixbuf(image_abspath, size, fallback=get_default_icon(size), is_installed=is_installed) def get_media_url(self, details): if self.api_field not in details: @@ -87,5 +91,19 @@ class ServiceMedia: except HTTPError as ex: logger.error("Failed to download %s: %s", url, ex) + @property + def custom_media_storage_size(self): + """The size this media is stored in when customized; we accept + whatever we get when we download the media, however.""" + return self.size + + @property + def config_ui_size(self): + """The size this media should be shown at when in the configuration UI.""" + return self.size + + def update_desktop(self): + """Update the desktop, if this media type appears there. Most don't.""" + def render(self): """Used if the media requires extra processing""" diff --git a/lutris/services/steam.py b/lutris/services/steam.py index 5eb0c140e13a7a59e715fd1de5de25244c0c3ab1..c11b4b271f81e3a61eac47e78ad1a40100a2cf92 100644 --- a/lutris/services/steam.py +++ b/lutris/services/steam.py @@ -26,6 +26,7 @@ class SteamBanner(ServiceMedia): size = (184, 69) dest_path = os.path.join(settings.CACHE_DIR, "steam/banners") file_pattern = "%s.jpg" + file_format = "jpeg" api_field = "appid" url_pattern = "http://cdn.akamai.steamstatic.com/steam/apps/%s/capsule_184x69.jpg" @@ -35,6 +36,7 @@ class SteamCover(ServiceMedia): size = (200, 300) dest_path = os.path.join(settings.CACHE_DIR, "steam/covers") file_pattern = "%s.jpg" + file_format = "jpeg" api_field = "appid" url_pattern = "http://cdn.steamstatic.com/steam/apps/%s/library_600x900.jpg" @@ -44,6 +46,7 @@ class SteamBannerLarge(ServiceMedia): size = (460, 215) dest_path = os.path.join(settings.CACHE_DIR, "steam/header") file_pattern = "%s.jpg" + file_format = "jpeg" api_field = "appid" url_pattern = "https://cdn.cloudflare.steamstatic.com/steam/apps/%s/header.jpg" @@ -197,7 +200,7 @@ class SteamService(BaseService): steam_game = Game(game_id) if not steam_game.playtime: steam_game.remove(no_signal=True) - steam_game.delete() + steam_game.delete(no_signal=True) stats["deduped"] += 1 logger.debug("%s Steam games deduplicated", stats["deduped"]) diff --git a/lutris/services/ubisoft.py b/lutris/services/ubisoft.py index 58febb6210e847f35e85a2546edd3469bf5c968b..697fb961a1ad7a7df3ffe190cd6ec648e1451175 100644 --- a/lutris/services/ubisoft.py +++ b/lutris/services/ubisoft.py @@ -31,6 +31,7 @@ class UbisoftCover(ServiceMedia): size = (160, 186) dest_path = os.path.join(settings.CACHE_DIR, "ubisoft/covers") file_pattern = "%s.jpg" + file_format = "jpeg" api_field = "id" url_pattern = "https://ubiservices.cdn.ubi.com/%s/spaceCardAsset/boxArt_mobile.jpg?imwidth=320" @@ -83,6 +84,8 @@ class UbisoftConnectService(OnlineService): runner = "wine" client_installer = "ubisoft-connect" browser_size = (460, 690) + login_window_width = 460 + login_window_height = 690 cookies_path = os.path.join(settings.CACHE_DIR, "ubisoft/.auth") token_path = os.path.join(settings.CACHE_DIR, "ubisoft/.token") cache_path = os.path.join(settings.CACHE_DIR, "ubisoft/library/") @@ -120,14 +123,6 @@ class UbisoftConnectService(OnlineService): self.emit("service-login") return (user_data['userId'], user_data['username']) - def run(self): - db_game = get_game_by_field(self.client_installer, "slug") - game = Game(db_game["id"]) - game.emit("game-launch") - - def is_launchable(self): - return get_game_by_field(self.client_installer, "slug") - def is_connected(self): return self.is_authenticated() diff --git a/lutris/services/xdg.py b/lutris/services/xdg.py index 0598f026bca21037a8889e627c1a3ebf8834e1db..ce8b28f3c4da9385a06ad0e0bef93019b924afa5 100644 --- a/lutris/services/xdg.py +++ b/lutris/services/xdg.py @@ -36,6 +36,7 @@ class XDGMedia(ServiceMedia): size = (64, 64) dest_path = os.path.join(settings.CACHE_DIR, "xdg/icons") file_pattern = "%s.png" + file_format = "png" class XDGService(BaseService): diff --git a/lutris/settings.py b/lutris/settings.py index 75ac92e9a895bedaf637fd466d812978ea529857..c96134ed7be592cf9c374cac9b50b843ee10f910 100644 --- a/lutris/settings.py +++ b/lutris/settings.py @@ -47,7 +47,6 @@ GAME_URL = SITE_URL + "/games/%s/" RUNTIME_URL = SITE_URL + "/api/runtimes" STEAM_API_KEY = sio.read_setting("steam_api_key") or "34C9698CEB394AB4401D65927C6B3752" -DISCORD_CLIENT_ID = sio.read_setting("discord_client_id") or "618290412402114570" SHOW_MEDIA = os.environ.get("LUTRIS_HIDE_MEDIA") != "1" and sio.read_setting("hide_media") != 'True' diff --git a/lutris/startup.py b/lutris/startup.py index 5504a5b0a267437d1dc75ce57169f6c06596b9c9..f2ca5eb44591f642318ed9d2719b33617f13ad53 100644 --- a/lutris/startup.py +++ b/lutris/startup.py @@ -1,7 +1,6 @@ """Check to run at program start""" import os import sqlite3 -import time from gettext import gettext as _ from lutris import runners, settings @@ -181,7 +180,7 @@ def init_lutris(): syncdb() except sqlite3.DatabaseError as err: raise RuntimeError( - "Failed to open database file in %s. Try renaming this file and relaunch Lutris" % + _("Failed to open database file in %s. Try renaming this file and relaunch Lutris") % settings.PGA_DB ) from err for service in DEFAULT_SERVICES: @@ -190,26 +189,30 @@ def init_lutris(): cleanup_games() -def update_runtime(force=False): - """Update runtime components""" - runtime_call = update_cache.get_last_call("runtime") - if force or not runtime_call or runtime_call > 3600 * 12: - runtime_updater = RuntimeUpdater() - components_to_update = runtime_updater.update() - if components_to_update: - while runtime_updater.current_updates: - time.sleep(0.3) - update_cache.write_date_to_cache("runtime") - for dll_manager_class in (DXVKManager, DXVKNVAPIManager, VKD3DManager, D3DExtrasManager, dgvoodoo2Manager): - key = dll_manager_class.__name__ - key_call = update_cache.get_last_call(key) - if force or not key_call or key_call > 3600 * 6: - dll_manager = dll_manager_class() - dll_manager.upgrade() - update_cache.write_date_to_cache(key) - media_call = update_cache.get_last_call("media") - if force or not media_call or media_call > 3600 * 24: - sync_media() - update_all_artwork() - update_cache.write_date_to_cache("media") - logger.info("Startup complete") +class StartupRuntimeUpdater(RuntimeUpdater): + """Due to circular reference problems, we need to keep all these interesting + references here, out of runtime.py""" + dll_manager_classes = [DXVKManager, DXVKNVAPIManager, VKD3DManager, D3DExtrasManager, dgvoodoo2Manager] + + def update_runtimes(self): + super().update_runtimes() + for dll_manager_class in self.dll_manager_classes: + if self.cancelled: + break + key = dll_manager_class.__name__ + key_call = update_cache.get_last_call(key) + if self.force or not key_call or key_call > 3600 * 6: + dll_manager = dll_manager_class() + dll_manager.upgrade() + update_cache.write_date_to_cache(key) + + if not self.cancelled: + media_call = update_cache.get_last_call("media") + if self.force or not media_call or media_call > 3600 * 24: + sync_media() + update_all_artwork() + update_cache.write_date_to_cache("media") + + if self.cancelled: + logger.info("Runtime update cancelled") + logger.info("Startup complete") diff --git a/lutris/sysoptions.py b/lutris/sysoptions.py index 088a65e41016831a72cd0515c7a25a282e69dea1..5a941646b07cbbf11febd692dbebf8deb383d7e0 100644 --- a/lutris/sysoptions.py +++ b/lutris/sysoptions.py @@ -7,7 +7,7 @@ from gettext import gettext as _ from lutris import runners from lutris.util import linux, system -from lutris.util.display import DISPLAY_MANAGER, SCREEN_SAVER_INHIBITOR, USE_DRI_PRIME +from lutris.util.display import DISPLAY_MANAGER, SCREEN_SAVER_INHIBITOR, USE_DRI_PRIME, has_graphic_adapter_description VULKAN_DATA_DIRS = [ "/usr/local/etc/vulkan", # standard site-local location @@ -30,6 +30,24 @@ def get_resolution_choices(): return resolution_choices +def get_locale_choices(): + """Return list of available locales as label, value tuples + suitable for inclusion in drop-downs. + """ + locales = system.get_locale_list() + + # adds "(recommended)" string to utf8 locales + locales_humanized = locales.copy() + for index, locale in enumerate(locales_humanized): + if "utf8" in locale: + locales_humanized[index] += " " + _("(recommended)") + + locale_choices = list(zip(locales_humanized, locales)) + locale_choices.insert(0, (_("System"), "")) + + return locale_choices + + def get_output_choices(): """Return list of outputs for drop-downs""" displays = DISPLAY_MANAGER.get_display_names() @@ -64,15 +82,13 @@ def get_optirun_choices(): return choices -def get_gpu_vendor_cmd(nvidia_files): +def get_gpu_vendor_cmd(is_nvidia): """Run glxinfo command to get vendor based on certain conditions""" - glxinfocmd = "glxinfo | grep -i opengl | grep -i vendor" - - if USE_DRI_PRIME == 1: - glxinfocmd = "DRI_PRIME=1 glxinfo | grep -i opengl | grep -i vendor" - elif nvidia_files == 1: - glxinfocmd = "__GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep -i opengl | grep -i vendor" - return glxinfocmd + if is_nvidia: + return "__GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep -i opengl | grep -i vendor" + if USE_DRI_PRIME: + return "DRI_PRIME=1 glxinfo | grep -i opengl | grep -i vendor" + return "glxinfo | grep -i opengl | grep -i vendor" def get_vk_icd_choices(): @@ -108,19 +124,30 @@ def get_vk_icd_choices(): amdvlk_files = ":".join(amdvlk) amdvlkpro_files = ":".join(amdvlkpro) - glxinfocmd = get_gpu_vendor_cmd(0) - if nvidia_files: - glxinfocmd = get_gpu_vendor_cmd(1) + intel_name = _("Auto: Intel Open Source (MESA: ANV)") + amdradv_name = _("Auto: AMD RADV Open Source (MESA: RADV)") + nvidia_name = _("Auto: Nvidia Proprietary") + + glxinfocmd = get_gpu_vendor_cmd(bool(nvidia_files)) with subprocess.Popen(glxinfocmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) as glxvendorget: glxvendor = glxvendorget.communicate()[0].decode("utf-8") default_gpu = glxvendor if "Intel" in default_gpu: - choices = [(_("Auto: Intel Open Source (MESA: ANV)"), intel_files)] + choices = [(intel_name, intel_files)] elif "AMD" in default_gpu: - choices = [(_("Auto: AMD RADV Open Source (MESA: RADV)"), amdradv_files)] + choices = [(amdradv_name, amdradv_files)] elif "NVIDIA" in default_gpu: - choices = [(_("Auto: Nvidia Proprietary"), nvidia_files)] + choices = [(nvidia_name, nvidia_files)] + elif USE_DRI_PRIME: + # We have multiple video chipsets, pick something that is instlaled if possible; + # we prefer NVIDIA and AMD over Intel, because don't we all? + if bool(nvidia_files) and has_graphic_adapter_description("NVIDIA"): + choices = [(nvidia_name, nvidia_files)] + elif bool(amdradv_files) and has_graphic_adapter_description("AMD"): + choices = [(amdradv_name, amdradv_files)] + elif bool(intel_files) and has_graphic_adapter_description("Intel"): + choices = [(intel_name, intel_files)] if intel_files: choices.append(("Intel Open Source (MESA: ANV)", intel_files)) @@ -135,6 +162,7 @@ def get_vk_icd_choices(): choices.append(("AMDVLK Open source", amdvlk_files)) if amdvlkpro_files: choices.append(("AMDGPU-PRO Proprietary", amdvlkpro_files)) + choices.append((_("Unspecified (Use System Default)"), "")) return choices @@ -405,6 +433,17 @@ system_options = [ # pylint: disable=invalid-name "Choose from the list of detected terminal apps or enter " "the terminal's command or path."), }, + { + "option": "locale", + "type": "choice", + "label": _("Locale"), + "choices": ( + get_locale_choices() + ), + "default": "", + "advanced": False, + "help": _("Can be used to force certain locale for an app. Fixes encoding issues in legacy software."), + }, { "option": "env", "type": "mapping", diff --git a/lutris/util/amazon/__init__.py b/lutris/util/amazon/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/lutris/util/amazon/protobuf_decoder.py b/lutris/util/amazon/protobuf_decoder.py new file mode 100644 index 0000000000000000000000000000000000000000..f1bf5ac6be08759741753d21602b776a88395418 --- /dev/null +++ b/lutris/util/amazon/protobuf_decoder.py @@ -0,0 +1,265 @@ +import struct +from io import BytesIO + +# for the record: +# - int32 = signed varint +# - int64 = signed varint +# - enum = signed varint +# - uint32 = unsigned varint +# - uint64 = unsigned varint +# - sint32 = zigzag signed varint +# - sint64 = zigzag signed varint + +# https://developers.google.com/protocol-buffers/docs/encoding +# 0 Varint int32, int64, uint32, uint64, sint32, sint64, bool, enum +# 1 64-bit fixed64, sfixed64, double +# 2 Length-delimited string, bytes, embedded messages, packed repeated fields +# 3 Start group groups (deprecated) +# 4 End group groups (deprecated) +# 5 32-bit fixed32, sfixed32, float + + +class PrimativeType: + @staticmethod + def decode(data): + raise NotImplementedError() + + +class type_double(PrimativeType): + wire_type = 1 + + @staticmethod + def decode(data): + # data = 64-bit + val, = struct.unpack(" 0x7fffffffffffffff: + x -= (1 << 64) + x |= ~((1 << bits) - 1) + else: + x &= (1 << bits) - 1 + return x + + # zigzag conversion from google + # https://github.com/google/protobuf/blob/master/python/google/protobuf/internal/wire_format.py + + @staticmethod + def zigzag_to_long(x): + if not x & 0x1: + return x >> 1 + return (x >> 1) ^ (~0) + + @staticmethod + def read_tag(stream): + var = Message.read_varint(stream) + field_number = var >> 3 + wire_type = var & 7 + + if wire_type == 0: + data = Message.read_varint(stream) + elif wire_type == 1: + data = stream.read(8) + elif wire_type == 2: + length = Message.read_varint(stream) + data = stream.read(length) + elif wire_type in (3, 4): + raise NotImplementedError("groups are deprecated") + elif wire_type == 5: + data = stream.read(4) + else: + raise Exception("unknown wire type (%d)" % wire_type) + return (field_number, wire_type, data) + + def lookup_id(self, _id): + for _, i in enumerate(self.__lookup__): + if i[3] == _id: + return i + + def decode(self, s: bytes): + + f = BytesIO(s) + while f.tell() < len(s): + field_number, _, data = self.read_tag(f) + field = self.lookup_id(field_number) + if not field: + continue + + field_multiplicity, field_type, field_name, _ = field + if issubclass(field_type, PrimativeType): + value = field_type.decode(data) + elif issubclass(field_type, Message): + value = field_type() + value.decode(data) + else: + raise Exception("field type must be a subclass of PrimativeType or Message") + + if field_multiplicity == "repeated": + if getattr(self, field_name) is None: + # if not isinstance(getattr(self, field_name), list): + # ? what if the attribute was already filled with data ? + setattr(self, field_name, []) + getattr(self, field_name).append(value) + else: + setattr(self, field_name, value) + + def __lookup__(self): + return diff --git a/lutris/util/amazon/sds_proto2.py b/lutris/util/amazon/sds_proto2.py new file mode 100644 index 0000000000000000000000000000000000000000..e7cb84bea75ae6b59e6193fc992922dd212ae5d6 --- /dev/null +++ b/lutris/util/amazon/sds_proto2.py @@ -0,0 +1,109 @@ +from lutris.util.amazon.protobuf_decoder import ( + Message, type_bool, type_bytes, type_enum, type_int64, type_string, type_uint32 +) + + +class CompressionAlgorithm: + none = 0 + lzma = 1 + + +class HashAlgorithm: + sha256 = 0 + shake128 = 1 + + @staticmethod + def get_name(algorithm): + if algorithm == HashAlgorithm.sha256: + return "SHA256" + + if algorithm == HashAlgorithm.shake128: + return "SHAKE128" + + return None + + +class SignatureAlgorithm: + sha256_with_rsa = 0 + + +class CompressionSettings(Message): + algorithm = CompressionAlgorithm.none + + def __init__(self): + self.__lookup__ = [("optional", type_enum, "algorithm", 1)] + + +class Dir(Message): + path = None + mode = None + + def __init__(self): + self.__lookup__ = [("optional", type_string, "path", 1), + ("optional", type_uint32, "mode", 2)] + + +class File(Message): + path = None + mode = None + size = None + created = None + hash = None + hidden = None + system = None + + def __init__(self): + self.__lookup__ = [("optional", type_string, "path", 1), + ("optional", type_uint32, "mode", 2), + ("optional", type_int64, "size", 3), + ("optional", type_string, "created", 4), + ("optional", Hash, "hash", 5), + ("optional", type_bool, "hidden", 6), + ("optional", type_bool, "system", 7)] + + +class Hash(Message): + algorithm = HashAlgorithm.sha256 + value = None + + def __init__(self): + self.__lookup__ = [("optional", type_enum, "algorithm", 1), + ("optional", type_bytes, "value", 2)] + + +class Manifest(Message): + packages = None + + def __init__(self): + self.__lookup__ = [("repeated", Package, "packages", 1)] + + +class ManifestHeader(Message): + compression = None + hash = None + signature = None + + def __init__(self): + self.__lookup__ = [("optional", CompressionSettings, "compression", 1), + ("optional", Hash, "hash", 2), + ("optional", Signature, "signature", 3)] + + +class Package(Message): + name = None + files = None + dirs = None + + def __init__(self): + self.__lookup__ = [("optional", type_string, "name", 1), + ("repeated", File, "files", 2), + ("repeated", Dir, "dirs", 3)] + + +class Signature(Message): + algorithm = SignatureAlgorithm.sha256_with_rsa + value = None + + def __init__(self): + self.__lookup__ = [("optional", type_enum, "algorithm", 1), + ("optional", type_bytes, "value", 2)] diff --git a/lutris/util/discord/__init__.py b/lutris/util/discord/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..14169873bad9f4ac3ca0dde88bbecd27cd2ff169 --- /dev/null +++ b/lutris/util/discord/__init__.py @@ -0,0 +1,3 @@ +__all__ = ['client'] + +from .rpc import client diff --git a/lutris/util/discord/base.py b/lutris/util/discord/base.py new file mode 100644 index 0000000000000000000000000000000000000000..221bd886eb30ab045ab8ffd156abf4a85cecc956 --- /dev/null +++ b/lutris/util/discord/base.py @@ -0,0 +1,30 @@ +""" +Discord Rich Presence Base Objects + +""" +from abc import ABCMeta + + +class DiscordRichPresenceBase(metaclass=ABCMeta): + """ + Discord Rich Presence Interface + + """ + + def update(self, discord_id: str) -> None: + raise NotImplementedError() + + def clear(self) -> None: + raise NotImplementedError() + + +class DiscordRPCNull(DiscordRichPresenceBase): + """ + Null client for disabled Discord RPC + """ + + def update(self, discord_id: str) -> None: + pass + + def clear(self) -> None: + pass diff --git a/lutris/util/discord/client.py b/lutris/util/discord/client.py new file mode 100644 index 0000000000000000000000000000000000000000..461e07b90f6997e24896bd9cd16b4f9b8beaf15e --- /dev/null +++ b/lutris/util/discord/client.py @@ -0,0 +1,35 @@ +from pypresence import Presence + +from lutris.util.discord.base import DiscordRichPresenceBase + + +class DiscordRichPresenceClient(DiscordRichPresenceBase): + rpc = None # Presence Object + + def __init__(self): + self.playing = None + self.rpc = None + + def update(self, discord_id): + if self.rpc is not None: + # Clear the old RPC before creating a new one + self.clear() + + # Create a new Presence object with the desired app id + self.rpc = Presence(discord_id) + # Connect to discord endpoint + self.rpc.connect() + # Trigger an update making the status available + self.rpc.update() + + def clear(self): + if self.rpc is None: + # Skip already deleted rpc + return + # Clear and Close Presence connection + self.rpc.clear() + self.rpc.close() + # Clear Presence Object + self.rpc = None + # Clear Internal Reference + self.playing = None diff --git a/lutris/util/discord/rpc.py b/lutris/util/discord/rpc.py new file mode 100644 index 0000000000000000000000000000000000000000..ba26baae5749dfb88f218862e3aa410065beb378 --- /dev/null +++ b/lutris/util/discord/rpc.py @@ -0,0 +1,18 @@ +""" +Discord Rich Presence Loader + +This will enable DiscordRichPresenceClient if pypresence is installed. +Otherwise, it will provide a dummy client that does nothing +""" + + +from lutris.util.discord.base import DiscordRPCNull + +try: + from lutris.util.discord.client import DiscordRichPresenceClient +except ImportError: + # If PyPresence is not present, and ImportError will raise, so we provide dummy client + client = DiscordRPCNull() +else: + # PyPresence is present, so we provide the client + client = DiscordRichPresenceClient() diff --git a/lutris/util/display.py b/lutris/util/display.py index 828a5c6bff17b2d437894e8ff5676d5aca157060..a9625cc309cfc43b391b504ad5b0044e70d72f4d 100644 --- a/lutris/util/display.py +++ b/lutris/util/display.py @@ -5,6 +5,7 @@ import os import subprocess import gi + try: gi.require_version("GnomeDesktop", "3.0") from gi.repository import GnomeDesktop @@ -54,6 +55,14 @@ def restore_gamma(): logger.warning("you do not have permission to call xgamma") +def has_graphic_adapter_description(match_text): + """Returns True if a graphics adapter is found with 'match_text' in its description.""" + for adapter in _get_graphics_adapters(): + if match_text in adapter[1]: + return True + return False + + def _get_graphics_adapters(): """Return the list of graphics cards available on a system diff --git a/lutris/util/extract.py b/lutris/util/extract.py index 1133aa963ebfa6bccd121370c4be9be12f2f3b09..31815b80374550da030748f21387abfec2834a29 100644 --- a/lutris/util/extract.py +++ b/lutris/util/extract.py @@ -87,6 +87,8 @@ def guess_extractor(path): extractor = "exe" elif path.endswith(".deb"): extractor = "deb" + elif path.endswith(".AppImage"): + extractor = "AppImage" else: extractor = None return extractor @@ -113,6 +115,8 @@ def get_archive_opener(extractor): opener = "exe" elif extractor == "deb": opener = "deb" + elif extractor == "AppImage": + opener = "AppImage" else: opener = "7zip" return opener, mode @@ -187,6 +191,8 @@ def _do_extract(archive, dest, opener, mode=None, extractor=None): extract_gog(archive, dest) elif opener == "deb": extract_deb(archive, dest) + elif opener == "AppImage": + extract_AppImage(archive, dest) else: handler = opener(archive, mode) handler.extractall(dest) @@ -233,6 +239,13 @@ def extract_deb(archive, dest): break +def extract_AppImage(path, dest): + """This is really here to prevent 7-zip from extracting the AppImage; + we want to just use this sort of file as-is.""" + system.create_folder(dest) + shutil.copy(path, dest) + + def extract_gog(path, dest): if check_inno_exe(path): decompress_gog(path, dest) diff --git a/lutris/util/http.py b/lutris/util/http.py index 4ed009c4b5b89bae4eb9bf857674e8bb2f548bf7..6ea59a9d4b2290fc099aaab67ead8ead70e8dd86 100644 --- a/lutris/util/http.py +++ b/lutris/util/http.py @@ -2,17 +2,22 @@ import json import os import socket +import ssl import urllib.error import urllib.parse import urllib.request from ssl import CertificateError +import certifi + from lutris.settings import PROJECT, SITE_URL, VERSION, read_setting from lutris.util import system from lutris.util.log import logger DEFAULT_TIMEOUT = read_setting("default_http_timeout") or 30 +ssl._create_default_https_context = lambda: ssl.create_default_context(cafile=certifi.where()) + class HTTPError(Exception): """Exception raised on request failures""" @@ -79,10 +84,10 @@ class Request: def user_agent(self): return "{} {}".format(PROJECT, VERSION) - def get(self, data=None): - logger.debug("GET %s", self.url) + def _request(self, method, data=None): + logger.debug("%s %s", method, self.url) try: - req = urllib.request.Request(url=self.url, data=data, headers=self.headers) + req = urllib.request.Request(url=self.url, data=data, headers=self.headers, method=method) except ValueError as ex: raise HTTPError("Failed to create HTTP request to %s: %s" % (self.url, ex)) from ex try: @@ -126,8 +131,11 @@ class Request: return yield chunk - def post(self, data): - raise NotImplementedError + def get(self, data=None): + return self._request("GET", data) + + def post(self, data=None): + return self._request("POST", data) def write_to_file(self, path): content = self.content diff --git a/lutris/util/jobs.py b/lutris/util/jobs.py index 57947d5ca1993ad054313a3e2500f6569dff5865..2eb27f1a4e3ecc2e96ffc333ada7b11f3592b767 100644 --- a/lutris/util/jobs.py +++ b/lutris/util/jobs.py @@ -63,7 +63,7 @@ def thread_safe_call(func): def _make_idle_safe(function): """Wrap a function in another, which just discards its result. - GLib.idle_add may call the function again if it returns True, + GLib.idle_add may call the function again if it returns True, but this wrapper only returns false.""" def discarding_result(*args, **kwargs): function(*args, **kwargs) diff --git a/lutris/util/joypad.py b/lutris/util/joypad.py index a1cc9a7927e8e0323766948ea1c0c1a9623d8dbb..2076b9d890563f1eb40fe437f5136909ef43139c 100644 --- a/lutris/util/joypad.py +++ b/lutris/util/joypad.py @@ -10,6 +10,11 @@ try: import evdev except ImportError: evdev = None +except AttributeError as err: + # 'evdev' versions 1.5 and earlier are incompatible with Python 3.11 + # and produce this exception; we won't be able to use these. + logger.exception("python3-evdev failed to load, and won't be available: %s", err) + evdev = None def get_devices(): diff --git a/lutris/util/process_watcher.py b/lutris/util/process_watcher.py index a3c609515794187b5306d0e89352e5259a32b36f..509fd041252a40da8ef10c2d90b38d859f3ef2ef 100644 --- a/lutris/util/process_watcher.py +++ b/lutris/util/process_watcher.py @@ -25,6 +25,8 @@ SYSTEM_PROCESSES = { "mscorsvw.exe", "iexplore.exe", "winedbg.exe", + "tabtip.exe", + "conhost.exe", } diff --git a/lutris/util/savesync.py b/lutris/util/savesync.py new file mode 100644 index 0000000000000000000000000000000000000000..fca9d60194eab4657396ac59b9a1a63500d201c1 --- /dev/null +++ b/lutris/util/savesync.py @@ -0,0 +1,21 @@ +import os +import shutil +from time import time + +from lutris import settings +from lutris.util.log import logger + + +def sync_saves(game): + saves_path = settings.read_setting("saves_path") + if not saves_path: + return + game_saves_path = game.config.game_level["game"].get("saves") + if not os.path.isabs(game_saves_path): + return + if os.path.isdir(game_saves_path): + dest_path = os.path.join(saves_path, game.slug) + os.makedirs(dest_path, exist_ok=True) + shutil.copytree(game_saves_path, os.path.join(dest_path, str(int(time())))) + else: + logger.warning("Save path type not supported yet") diff --git a/lutris/util/steam/shortcut.py b/lutris/util/steam/shortcut.py index 1b71ab2116038ed672abd21327f534d65a7b650e..855d3ce0e80dbb8530555803955e82f5dfa3f583 100644 --- a/lutris/util/steam/shortcut.py +++ b/lutris/util/steam/shortcut.py @@ -5,7 +5,7 @@ import re import shutil from lutris.game import Game -from lutris.util import resources +from lutris.util import resources, system from lutris.util.linux import LINUX_SYSTEM from lutris.util.log import logger from lutris.util.steam import vdf @@ -138,15 +138,16 @@ def set_artwork(game): source_banner = resources.get_banner_path(game.slug) target_cover = os.path.join(artwork_path, "{}p.jpg".format(shortcut_id)) target_banner = os.path.join(artwork_path, "{}_hero.jpg".format(shortcut_id)) - try: - shutil.copyfile(source_cover, target_cover) - except FileNotFoundError as ex: - logger.error("Failed to copy cover to %s: %s", target_cover, ex) - - try: - shutil.copyfile(source_banner, target_banner) - except FileNotFoundError as ex: - logger.error("Failed to copy banner to %s: %s", target_banner, ex) + if not system.path_exists(target_cover, exclude_empty=True): + try: + shutil.copyfile(source_cover, target_cover) + except FileNotFoundError as ex: + logger.error("Failed to copy cover to %s: %s", target_cover, ex) + if not system.path_exists(target_banner, exclude_empty=True): + try: + shutil.copyfile(source_banner, target_banner) + except FileNotFoundError as ex: + logger.error("Failed to copy banner to %s: %s", target_banner, ex) def update_all_artwork(): diff --git a/lutris/util/system.py b/lutris/util/system.py index 2d934bfa21ee73d7b6948955148d8b22c692c868..b7553b9f95b5bb5de36722f2022c530be8be6756 100644 --- a/lutris/util/system.py +++ b/lutris/util/system.py @@ -9,6 +9,7 @@ import stat import string import subprocess from gettext import gettext as _ +from pathlib import Path from gi.repository import Gio, GLib @@ -214,7 +215,22 @@ def merge_folders(source, destination): if "dirs_exist_ok" in sig.parameters: shutil.copytree(source, destination, symlinks=False, ignore_dangling_symlinks=True, dirs_exist_ok=True) else: - shutil.copytree(source, destination, symlinks=False, ignore_dangling_symlinks=True) + source = os.path.abspath(source) + for (dirpath, dirnames, filenames) in os.walk(source): + source_relpath = dirpath[len(source):].strip("/") + dst_abspath = os.path.join(destination, source_relpath) + for dirname in dirnames: + new_dir = os.path.join(dst_abspath, dirname) + logger.debug("creating dir: %s", new_dir) + try: + os.mkdir(new_dir) + except OSError: + pass + for filename in filenames: + # logger.debug("Copying %s", filename) + if not os.path.exists(dst_abspath): + os.makedirs(dst_abspath) + shutil.copy(os.path.join(dirpath, filename), os.path.join(dst_abspath, filename), follow_symlinks=False) def remove_folder(path): @@ -223,7 +239,7 @@ def remove_folder(path): """ if not os.path.exists(path): logger.warning("Non existent path: %s", path) - return + return False logger.debug("Removing folder %s", path) if os.path.samefile(os.path.expanduser("~"), path): raise RuntimeError("Lutris tried to erase home directory!") @@ -255,8 +271,9 @@ def list_unique_folders(folders): return unique_dirs.values() -def is_removeable(path): - """Check if a folder is safe to remove (not system or home, ...)""" +def is_removeable(path, system_config): + """Check if a folder is safe to remove (not system or home, ...). This needs the + system config dict so it can check the default game path, too.""" if not path_exists(path): return False @@ -270,6 +287,12 @@ def is_removeable(path): return False if len(parts) == 3 and parts[2] in PROTECTED_HOME_FOLDERS: return False + + if system_config: + default_game_path = system_config.get("game_path") + if path_contains(path, default_game_path, resolve_symlinks=False): + return False + return True @@ -324,6 +347,24 @@ def reverse_expanduser(path): return path +def path_contains(parent, child, resolve_symlinks=False): + """Tests if a child path is actually within a parent directory + or a subdirectory of it. Resolves relative paths, and ~, and + optionally symlinks.""" + + if parent is None or child is None: + return False + + resolved_parent = Path(os.path.abspath(os.path.expanduser(parent))) + resolved_child = Path(os.path.abspath(os.path.expanduser(child))) + + if resolve_symlinks: + resolved_parent = resolved_parent.resolve() + resolved_child = resolved_child.resolve() + + return resolved_child == resolved_parent or resolved_parent in resolved_child.parents + + def path_exists(path, check_symlinks=False, exclude_empty=False): """Wrapper around system.path_exists that doesn't crash with empty values @@ -386,6 +427,21 @@ def get_disk_size(path): return total_size +def get_locale_list(): + """Return list of available locales""" + try: + with subprocess.Popen(['locale', '-a'], stdout=subprocess.PIPE) as locale_getter: + output = locale_getter.communicate() + locales = output[0].decode('ASCII').split() # locale names use only ascii characters + except FileNotFoundError: + lang = os.environ.get('LANG', '') + if lang: + locales = [lang] + else: + locales = [] + return locales + + def get_running_pid_list(): """Return the list of PIDs from processes currently running""" return [int(p) for p in os.listdir("/proc") if p[0].isdigit()] @@ -435,3 +491,12 @@ def get_mountpoint_drives(): def get_drive_for_path(path): """Return the physical drive a file is located on""" return get_mountpoint_drives().get(find_mount_point(path)) + + +def set_keyboard_layout(layout): + setxkbmap_command = ["setxkbmap", "-model", "pc101", layout, "-print"] + xkbcomp_command = ["xkbcomp", "-", os.environ.get("DISPLAY", ":0")] + with subprocess.Popen(xkbcomp_command, stdin=subprocess.PIPE) as xkbcomp: + with subprocess.Popen(setxkbmap_command, env=os.environ, stdout=xkbcomp.stdin) as setxkbmap: + setxkbmap.communicate() + xkbcomp.communicate() diff --git a/lutris/util/ubisoft/client.py b/lutris/util/ubisoft/client.py index 26df98e54ecfccb7abf2c1fd52c2af0bef987293..4a1a93227770dd05dbcaebf9aff37180f6780264 100644 --- a/lutris/util/ubisoft/client.py +++ b/lutris/util/ubisoft/client.py @@ -9,7 +9,7 @@ from gettext import gettext as _ import requests from lutris.util.log import logger -from lutris.util.ubisoft.consts import CHROME_USERAGENT, CLUB_APPID, UBISOFT_APPID +from lutris.util.ubisoft.consts import CHROME_USERAGENT, CLUB_APPID def parse_date(date_str): @@ -105,7 +105,7 @@ class UbisoftConnectClient(): def _do_options_request(self): self._do_request('options', "https://public-ubiservices.ubi.com/v3/profiles/sessions", headers={ "Origin": "https://connect.ubisoft.com", - "Referer": f"https://connect.ubisoft.com/login?appId={UBISOFT_APPID}", + "Referer": "https://connect.ubisoft.com/", "User-Agent": CHROME_USERAGENT, }) diff --git a/lutris/util/ubisoft/consts.py b/lutris/util/ubisoft/consts.py index f1d0f8f400617fa2c68468d2c7112359a9693104..3e54233d413598840ddaaccaabfdbe566280ffac 100644 --- a/lutris/util/ubisoft/consts.py +++ b/lutris/util/ubisoft/consts.py @@ -12,11 +12,10 @@ CHROME_USERAGENT = ( "Chrome/72.0.3626.121 Safari/537.36" ) -CLUB_GENOME_ID = "fbd6791c-a6c6-4206-a75e-77234080b87b" -UBISOFT_APPID = "b8fde481-327d-4031-85ce-7c10a202a700" +CLUB_GENOME_ID = "85c31714-0941-4876-a18d-2c7e9dce8d40" CLUB_APPID = "314d4fef-e568-454a-ae06-43e3bece12a6" LOGIN_URL = ( - f"https://connect.ubisoft.com/login?appId={UBISOFT_APPID}&genomeId={CLUB_GENOME_ID}" + f"https://connect.ubisoft.com/login?appId={CLUB_APPID}&genomeId={CLUB_GENOME_ID}" "&lang=en-US&nextUrl=https:%2F%2Fconnect.ubisoft.com%2Fready" ) diff --git a/lutris/util/ubisoft/parser.py b/lutris/util/ubisoft/parser.py index 997bb9190a22399dfc16eed5c34bc1b864d1dbd5..dc66a9def7216dff0ccabe5fc03c5564d080800a 100644 --- a/lutris/util/ubisoft/parser.py +++ b/lutris/util/ubisoft/parser.py @@ -273,6 +273,8 @@ class UbisoftParser(object): def _get_registry_properties_from_yaml(self, game_yaml): game_registry_path = '' exe = '' + if 'online' not in game_yaml['root']['start_game']: + return None, None registry_path = game_yaml['root']['start_game']['online']['executables'][0]['working_directory']['register'] game_registry_path = registry_path try: diff --git a/lutris/util/wine/extract_icon.py b/lutris/util/wine/extract_icon.py new file mode 100644 index 0000000000000000000000000000000000000000..cc1883f01c234c1269105fd40631b0dd405a356a --- /dev/null +++ b/lutris/util/wine/extract_icon.py @@ -0,0 +1,143 @@ +# pylint: disable=no-member +import struct +from io import BytesIO + +try: + import pefile + PEFILE_AVAILABLE = True +except ImportError: + pefile = None + PEFILE_AVAILABLE = False + +from PIL import Image + +# From https://github.com/firodj/extract-icon-py + + +class ExtractIcon(object): + GRPICONDIRENTRY_format = ('GRPICONDIRENTRY', + ('B,Width', 'B,Height', 'B,ColorCount', 'B,Reserved', + 'H,Planes', 'H,BitCount', 'I,BytesInRes', 'H,ID')) + GRPICONDIR_format = ('GRPICONDIR', + ('H,Reserved', 'H,Type', 'H,Count')) + RES_ICON = 1 + RES_CURSOR = 2 + + def __init__(self, filepath): + self.pe = pefile.PE(filepath) + + def find_resource_base(self, res_type): + rt_base_idx = [entry.id for + entry in self.pe.DIRECTORY_ENTRY_RESOURCE.entries].index( + pefile.RESOURCE_TYPE[res_type] + ) + + if rt_base_idx is not None: + return self.pe.DIRECTORY_ENTRY_RESOURCE.entries[rt_base_idx] + + return None + + def find_resource(self, res_type, res_index): + rt_base_dir = self.find_resource_base(res_type) + + if res_index < 0: + try: + idx = [entry.id for entry in rt_base_dir.directory.entries].index(-res_index) + except: + return None + else: + idx = res_index if res_index < len(rt_base_dir.directory.entries) else None + + if idx is None: + return None + + test_res_dir = rt_base_dir.directory.entries[idx] + res_dir = test_res_dir + if test_res_dir.struct.DataIsDirectory: + # another Directory + # probably language take the first one + res_dir = test_res_dir.directory.entries[0] + if res_dir.struct.DataIsDirectory: + # Ooooooooooiconoo no !! another Directory !!! + return None + + return res_dir + + def get_group_icons(self): + rt_base_dir = self.find_resource_base('RT_GROUP_ICON') + groups = [] + for res_index in range(0, len(rt_base_dir.directory.entries)): + grp_icon_dir_entry = self.find_resource('RT_GROUP_ICON', res_index) + + if not grp_icon_dir_entry: + continue + + data_rva = grp_icon_dir_entry.data.struct.OffsetToData + size = grp_icon_dir_entry.data.struct.Size + data = self.pe.get_memory_mapped_image()[data_rva:data_rva + size] + file_offset = self.pe.get_offset_from_rva(data_rva) + + grp_icon_dir = pefile.Structure(self.GRPICONDIR_format, file_offset=file_offset) + grp_icon_dir.__unpack__(data) + + if grp_icon_dir.Reserved != 0 or grp_icon_dir.Type != self.RES_ICON: + continue + offset = grp_icon_dir.sizeof() + + entries = [] + for _idx in range(0, grp_icon_dir.Count): + grp_icon = pefile.Structure(self.GRPICONDIRENTRY_format, file_offset=file_offset + offset) + grp_icon.__unpack__(data[offset:]) + offset += grp_icon.sizeof() + entries.append(grp_icon) + + groups.append(entries) + return groups + + def get_icon(self, index): + icon_entry = self.find_resource('RT_ICON', -index) + if not icon_entry: + return None + + data_rva = icon_entry.data.struct.OffsetToData + size = icon_entry.data.struct.Size + data = self.pe.get_memory_mapped_image()[data_rva:data_rva + size] + + return data + + def export_raw(self, entries, index=None): + if index is not None: + entries = entries[index:index + 1] + + ico = struct.pack('not be " +"duplicated." +msgstr "" + +#: lutris/game_actions.py:223 +msgid "Duplicate game?" +msgstr "" + +#: lutris/game_actions.py:284 msgid "This game has no installation directory" msgstr "Dieses Spiel hat keinen Installationsverzeichnis" -#: lutris/game_actions.py:218 +#: lutris/game_actions.py:288 #, python-format msgid "" "Can't open %s \n" @@ -291,62 +323,63 @@ msgstr "" "Kann %s nicht öffnen\n" "Der Ordner existiert nicht." -#: lutris/game.py:166 +#: lutris/game.py:178 msgid "Error the runner is not installed" msgstr "Fehler: Starter ist nicht installiert" -#: lutris/game.py:168 +#: lutris/game.py:180 msgid "A bios file is required to run this game" msgstr "Damit das Spiel läuft, wird eine BIOS-Datei benötigt" -#: lutris/game.py:172 +#: lutris/game.py:184 msgid "The file {} could not be found" msgstr "Die Datei {} konnte nicht gefunden werden" -#: lutris/game.py:174 +#: lutris/game.py:186 msgid "" "This game has no executable set. The install process didn't finish properly." msgstr "" "Dieses Spiel hat keine gesetzte ausführbare Binärdatei. Der " "Installationsprozess konnte nicht vollständig abgeschlossen werden." -#: lutris/game.py:178 +#: lutris/game.py:189 #, python-format msgid "The file %s is not executable" msgstr "Die Datei %s ist nicht ausführbar" -#: lutris/game.py:180 +#: lutris/game.py:191 #, python-format msgid "The path '%s' is not set. please set it in the options." msgstr "Der Pfad '%s' is nicht gesetzt. Bitte setzte ihn in den Einstellungen." -#: lutris/game.py:183 +#: lutris/game.py:193 #, python-format msgid "Unhandled error: %s" msgstr "Unbehandelter Fehler: %s" -#: lutris/game.py:286 -msgid "Tried to launch a game that isn't installed. (Who'd you do that?)" +#: lutris/game.py:298 +#, fuzzy +msgid "Tried to launch a game that isn't installed." msgstr "" "Es wurde versucht ein Spiel zu starten, was nicht installiert ist. (Warum?)" -#: lutris/game.py:289 +#: lutris/game.py:300 lutris/game.py:417 msgid "Invalid game configuration: Missing runner" msgstr "Ungültige Spielkonfiguration: Fehlender Starter" -#: lutris/game.py:294 -msgid "Runner not installed." -msgstr "Starter nicht installiert." - -#: lutris/game.py:300 +#: lutris/game.py:309 msgid "Runtime currently updating" msgstr "Laufzeit wird aktualisiert" -#: lutris/game.py:300 +#: lutris/game.py:309 msgid "Game might not work as expected" msgstr "Spiel könnte nicht wie erwartet funktionieren" -#: lutris/game.py:383 +#: lutris/game.py:342 +msgid "Unable to find Xephyr, install it or disable the Xephyr option" +msgstr "" + +#: lutris/game.py:398 #, python-format msgid "" "The selected terminal application could not be launched:\n" @@ -355,15 +388,16 @@ msgstr "" "Das gewählte Konsolenprogramm konnte nicht gestartet werden:\n" "%s" -#: lutris/game.py:429 -msgid "An error prevented the game from running" -msgstr "Ein Fehler hat die Ausführung des Spiels verhindert" +#. The 'file' sort of gameplay_info cannot be made to use a configuration +#: lutris/game.py:434 +msgid "The runner could not find a command to apply the configuration to." +msgstr "" -#: lutris/game.py:585 +#: lutris/game.py:635 msgid "Error lauching the game:\n" msgstr "Fehler beim Starten des Spiels:\n" -#: lutris/game.py:677 +#: lutris/game.py:727 #, python-format msgid "" "Error: Missing shared library.\n" @@ -374,7 +408,7 @@ msgstr "" "\n" "%s" -#: lutris/game.py:683 +#: lutris/game.py:733 msgid "" "Error: A different Wine version is already using the same Wine prefix." msgstr "" @@ -426,50 +460,69 @@ msgstr "Manuell ein lokal vorhandenes Spiel konfigurieren" msgid "Add games to Lutris" msgstr "Spiel zu Lutris hinzufügen" -#: lutris/gui/addgameswindow.py:144 +#: lutris/gui/addgameswindow.py:126 +msgid "Search Lutris.net" +msgstr "" + +#: lutris/gui/addgameswindow.py:149 msgid "Select folder to scan" msgstr "Ordner zum Durchsuchen lassen auswählen" -#: lutris/gui/addgameswindow.py:202 +#: lutris/gui/addgameswindow.py:223 msgid "No results" msgstr "Keine Ergebnisse" -#: lutris/gui/addgameswindow.py:204 +#: lutris/gui/addgameswindow.py:225 #, python-brace-format msgid "Showing {count} results" msgstr "Zeige {count} Ergebnisse an" -#: lutris/gui/addgameswindow.py:206 +#: lutris/gui/addgameswindow.py:227 #, python-brace-format msgid "{total_count} results, only displaying first {count}" msgstr "{total_count} Ergebnisse. Nur die ersten {count} anzeigen" -#: lutris/gui/addgameswindow.py:222 +#: lutris/gui/addgameswindow.py:243 msgid "Select setup file" msgstr "Installationsdatei auswählen" -#: lutris/gui/addgameswindow.py:228 +#: lutris/gui/addgameswindow.py:245 +#, fuzzy +msgid "Game name" +msgstr "Spielinfo" + +#: lutris/gui/addgameswindow.py:249 msgid "Continue" msgstr "Fortfahren" -#: lutris/gui/addgameswindow.py:258 +#: lutris/gui/addgameswindow.py:257 +#, fuzzy +msgid "Setup file" +msgstr "Datei auswählen" + +#: lutris/gui/addgameswindow.py:266 +#, fuzzy +msgid "Select the setup file" +msgstr "Installationsdatei auswählen" + +#: lutris/gui/addgameswindow.py:279 msgid "Select a Lutris installer" msgstr "Lutris-Installationsskript auswählen" -#: lutris/gui/application.py:81 +#: lutris/gui/application.py:87 msgid "" "Running Lutris as root is not recommended and may cause unexpected issues" msgstr "" "Lutris als root zu nutzen wird nicht empfohlen. Unerwartete Fehler könnten " "auftreten" -#: lutris/gui/application.py:91 +#: lutris/gui/application.py:97 msgid "Your Linux distribution is too old. Lutris won't function properly." msgstr "" "Ihre Linux-Verteilung ist zu alt. Lutris wird nicht ordnungsgemäß " "funktionieren." -#: lutris/gui/application.py:96 +#: lutris/gui/application.py:102 msgid "" "Run a game directly by adding the parameter lutris:rungame/game-identifier.\n" "If several games share the same identifier you can use the numerical ID " @@ -484,83 +537,125 @@ msgstr "" "numerische-kennung hinzufügen.\n" "Zum installieren eines Spiels fügen Sie lutris:install/spielkennung hinzu." -#: lutris/gui/application.py:109 +#: lutris/gui/application.py:115 msgid "Print the version of Lutris and exit" msgstr "Die Version von Lutris ausgeben und beenden" -#: lutris/gui/application.py:117 +#: lutris/gui/application.py:123 msgid "Show debug messages" msgstr "Meldungen für die Fehlersuche ausgeben" -#: lutris/gui/application.py:125 +#: lutris/gui/application.py:131 msgid "Install a game from a yml file" msgstr "Ein Spiel von einer yml-Datei installieren" -#: lutris/gui/application.py:133 +#: lutris/gui/application.py:139 msgid "Generate a bash script to run a game without the client" msgstr "Generiere einen Bash-Skript zum Ausführen des Spiels ohne Klient" -#: lutris/gui/application.py:141 +#: lutris/gui/application.py:147 msgid "Execute a program with the Lutris Runtime" msgstr "Programm mit der Lutris-Laufzeit ausführen" -#: lutris/gui/application.py:149 +#: lutris/gui/application.py:155 msgid "List all games in database" msgstr "Alle Spiele aus der Datenbank listen" -#: lutris/gui/application.py:157 +#: lutris/gui/application.py:163 msgid "Only list installed games" msgstr "Nur installierte Spiele listen" -#: lutris/gui/application.py:165 +#: lutris/gui/application.py:171 msgid "List available Steam games" msgstr "Verfügbare Steam-Spiele listen" -#: lutris/gui/application.py:173 +#: lutris/gui/application.py:179 msgid "List all known Steam library folders" msgstr "Liste alle bekannten Steam-Bibliothek-Ordner" -#: lutris/gui/application.py:181 +#: lutris/gui/application.py:187 +#, fuzzy +msgid "List all known runners" +msgstr "Starter installieren" + +#: lutris/gui/application.py:195 +#, fuzzy +msgid "List all known Wine versions" +msgstr "Andere Version installieren" + +#: lutris/gui/application.py:203 +#, fuzzy +msgid "Install a Runner" +msgstr "Starter installieren" + +#: lutris/gui/application.py:211 +#, fuzzy +msgid "Uninstall a Runner" +msgstr "Starter installieren" + +#: lutris/gui/application.py:219 +msgid "Export a game" +msgstr "" + +#: lutris/gui/application.py:227 +msgid "Import a game" +msgstr "" + +#: lutris/gui/application.py:235 +msgid "Destination path for export" +msgstr "" + +#: lutris/gui/application.py:243 msgid "Display the list of games in JSON format" msgstr "Spieleliste im JSON-Format anzeigen" -#: lutris/gui/application.py:189 +#: lutris/gui/application.py:251 msgid "Reinstall game" msgstr "Spiel neuinstallieren" -#: lutris/gui/application.py:192 +#: lutris/gui/application.py:254 msgid "Submit an issue" msgstr "Fehler mitteilen" -#: lutris/gui/application.py:198 +#: lutris/gui/application.py:260 msgid "URI to open" msgstr "URI zum Öffnen" -#: lutris/gui/application.py:378 +#: lutris/gui/application.py:489 #, python-format msgid "%s is not a valid URI" msgstr "%s ist keine gültige URI" -#: lutris/gui/application.py:398 +#: lutris/gui/application.py:509 #, python-format msgid "Failed to download %s" msgstr "Fehler beim Herunterladen von %s" -#: lutris/gui/application.py:406 +#: lutris/gui/application.py:517 #, python-brace-format msgid "download {url} to {file} started" msgstr "{url} herunterladen nach {file} gestartet" -#: lutris/gui/application.py:417 +#: lutris/gui/application.py:528 #, python-format msgid "No such file: %s" msgstr "Keine Datei derart: %s" -#: lutris/gui/application.py:532 +#: lutris/gui/application.py:645 #, python-format msgid "There is no installer available for %s." msgstr "Es ist kein Installationsskript für %s verfügbar." +#: lutris/gui/application.py:655 +#, fuzzy +msgid "No updates found" +msgstr "Kein Spiel gefunden" + +#: lutris/gui/application.py:665 +#, fuzzy +msgid "No DLC found" +msgstr "Kein Spiel gefunden" + #: lutris/gui/config/add_game.py:11 msgid "Add a new game" msgstr "Neues Spiel hinzufügen" @@ -610,18 +705,18 @@ msgstr "Dateien" msgid "Select files" msgstr "Dateien auswählen" -#: lutris/gui/config/boxes.py:512 lutris/gui/dialogs/__init__.py:132 -#: lutris/gui/dialogs/__init__.py:159 lutris/gui/dialogs/issue.py:74 -#: lutris/gui/widgets/common.py:99 +#: lutris/gui/config/boxes.py:511 +msgid "_Add" +msgstr "_Hinzufügen" + +#: lutris/gui/config/boxes.py:512 lutris/gui/dialogs/__init__.py:134 +#: lutris/gui/dialogs/__init__.py:161 lutris/gui/dialogs/issue.py:75 +#: lutris/gui/widgets/common.py:98 #: lutris/gui/widgets/download_progress_box.py:47 msgid "_Cancel" msgstr "A_bbrechen" -#: lutris/gui/config/boxes.py:514 -msgid "_Add" -msgstr "_Hinzufügen" - -#: lutris/gui/config/boxes.py:644 +#: lutris/gui/config/boxes.py:640 msgid "" "If modified, these options supersede the same options from the base runner " "configuration." @@ -629,7 +724,7 @@ msgstr "" "Wenn hier Optionen modifiziert werden, ersetzen diese die selben Optionen " "bei der Konfiguration des Basis-Starters." -#: lutris/gui/config/boxes.py:665 +#: lutris/gui/config/boxes.py:661 msgid "" "If modified, these options supersede the same options from the base runner " "configuration, which themselves supersede the global preferences." @@ -638,7 +733,7 @@ msgstr "" "bei der Konfiguration des Basis-Starters, der wiederum die allgemeinen " "Einstellungen ersetzt." -#: lutris/gui/config/boxes.py:671 +#: lutris/gui/config/boxes.py:667 msgid "" "If modified, these options supersede the same options from the global " "preferences." @@ -706,11 +801,14 @@ msgstr "Optionen des Starters" msgid "System options" msgstr "Systemeinstellungen" +#. Advanced settings checkbox #: lutris/gui/config/common.py:322 msgid "Show advanced options" msgstr "Zeige erweiterte Optionen" -#: lutris/gui/config/common.py:330 lutris/gui/dialogs/uninstall_game.py:60 +#: lutris/gui/config/common.py:330 lutris/gui/dialogs/__init__.py:268 +#: lutris/gui/dialogs/runner_install.py:186 +#: lutris/gui/dialogs/uninstall_game.py:60 #: lutris/gui/dialogs/uninstall_game.py:135 #: lutris/gui/widgets/download_progress_box.py:95 msgid "Cancel" @@ -757,7 +855,7 @@ msgstr "" msgid "Please choose a custom image" msgstr "Bitte wähle ein benutzerdefiniertes Bild" -#: lutris/gui/config/common.py:498 +#: lutris/gui/config/common.py:494 msgid "Images" msgstr "Bilder" @@ -794,11 +892,11 @@ msgstr "WineGame-einstellungen" msgid "Interface" msgstr "Benutzeroberfläche" -#: lutris/gui/config/preferences_dialog.py:27 lutris/gui/widgets/sidebar.py:260 +#: lutris/gui/config/preferences_dialog.py:27 lutris/gui/widgets/sidebar.py:271 msgid "Runners" msgstr "Starter" -#: lutris/gui/config/preferences_dialog.py:28 lutris/gui/widgets/sidebar.py:259 +#: lutris/gui/config/preferences_dialog.py:28 lutris/gui/widgets/sidebar.py:270 msgid "Sources" msgstr "Quellen" @@ -810,17 +908,17 @@ msgstr "Hardware-Informationen" msgid "Global options" msgstr "Globale Einstellungen" -#: lutris/gui/config/runner_box.py:89 lutris/gui/widgets/sidebar.py:203 +#: lutris/gui/config/runner_box.py:90 lutris/gui/widgets/sidebar.py:214 #, python-format msgid "Manage %s versions" msgstr "Verwalte %s-Versionen" -#: lutris/gui/config/runner_box.py:120 +#: lutris/gui/config/runner_box.py:121 #, python-format msgid "Do you want to uninstall %s?" msgstr "Wollen Sie %s deinstallieren?" -#: lutris/gui/config/runner_box.py:121 +#: lutris/gui/config/runner_box.py:122 #, python-format msgid "This will remove %s and all associated data." msgstr "Dies wird %s und alle dazugehörigen Daten entfernen." @@ -899,59 +997,59 @@ msgstr "Lade Datei herunter" msgid "Downloading %s" msgstr "Herunterladen %s" -#: lutris/gui/dialogs/__init__.py:132 lutris/gui/dialogs/__init__.py:159 -#: lutris/gui/dialogs/issue.py:74 lutris/gui/dialogs/runner_install.py:33 -#: lutris/gui/widgets/common.py:99 +#: lutris/gui/dialogs/__init__.py:133 lutris/gui/dialogs/__init__.py:160 +#: lutris/gui/dialogs/issue.py:74 lutris/gui/dialogs/runner_install.py:63 +#: lutris/gui/widgets/common.py:98 msgid "_OK" msgstr "_OK" -#: lutris/gui/dialogs/__init__.py:150 +#: lutris/gui/dialogs/__init__.py:151 msgid "Please choose a file" msgstr "Wähle eine Datei aus" -#: lutris/gui/dialogs/__init__.py:179 +#: lutris/gui/dialogs/__init__.py:181 msgid "Checking for runtime updates, please wait…" msgstr "Suche nach Aktualisierungen für die Laufzeitumgebung; bitte warten…" -#: lutris/gui/dialogs/__init__.py:210 +#: lutris/gui/dialogs/__init__.py:212 #, python-format msgid "%s is already installed" msgstr "%s ist bereits installiert" -#: lutris/gui/dialogs/__init__.py:219 +#: lutris/gui/dialogs/__init__.py:221 msgid "Launch game" msgstr "Spiel starten" -#: lutris/gui/dialogs/__init__.py:223 +#: lutris/gui/dialogs/__init__.py:225 msgid "Install the game again" msgstr "Spiel noch einmal installieren" -#: lutris/gui/dialogs/__init__.py:227 lutris/gui/dialogs/__init__.py:263 -#: lutris/gui/dialogs/__init__.py:345 +#: lutris/gui/dialogs/__init__.py:229 lutris/gui/dialogs/__init__.py:272 +#: lutris/gui/dialogs/__init__.py:360 msgid "OK" msgstr "OK" -#: lutris/gui/dialogs/__init__.py:246 +#: lutris/gui/dialogs/__init__.py:248 msgid "Select game to launch" msgstr "Wähle das zu startende Spiel aus" -#: lutris/gui/dialogs/__init__.py:318 +#: lutris/gui/dialogs/__init__.py:333 msgid "Login failed" msgstr "Anmeldung fehlgeschlagen" -#: lutris/gui/dialogs/__init__.py:329 +#: lutris/gui/dialogs/__init__.py:344 msgid "Install script for {}" msgstr "Skript für {} installieren" -#: lutris/gui/dialogs/__init__.py:381 +#: lutris/gui/dialogs/__init__.py:396 msgid "Do not display this message again." msgstr "Diese Meldung nicht erneut anzeigen." -#: lutris/gui/dialogs/__init__.py:402 +#: lutris/gui/dialogs/__init__.py:417 msgid "Wine is not installed on your system." msgstr "Wine ist auf Ihren System nicht installiert." -#: lutris/gui/dialogs/__init__.py:404 +#: lutris/gui/dialogs/__init__.py:419 msgid "" "Having Wine installed on your system guarantees that Wine builds from Lutris " "will have all required dependencies.\n" @@ -965,7 +1063,7 @@ msgstr "" "Bitte folge die Anweisungen im Lutris-Wiki zum installieren von Wine." -#: lutris/gui/dialogs/__init__.py:430 +#: lutris/gui/dialogs/__init__.py:445 #, python-format msgid "Moving %s to %s..." msgstr "Verschiebe %s nach %s..." @@ -992,58 +1090,74 @@ msgstr "_Speichern" msgid "Select a location to save the issue" msgstr "Wähle einen Ort zum Speichern des Problemberichts" -#: lutris/gui/dialogs/issue.py:90 +#: lutris/gui/dialogs/issue.py:91 #, python-format msgid "Issue saved in %s" msgstr "Problembericht gespeichert in %s" -#: lutris/gui/dialogs/runner_install.py:41 +#: lutris/gui/dialogs/runner_install.py:29 +#, python-format +msgid "Showing games using %s" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:71 #, python-format msgid "Waiting for response from %s" msgstr "Warte auf Rückmeldung von %s" -#: lutris/gui/dialogs/runner_install.py:57 +#: lutris/gui/dialogs/runner_install.py:87 #, python-format msgid "Unable to get runner versions: %s" msgstr "Nicht in der Lage die Version des Starters zu ermitteln: %s" -#: lutris/gui/dialogs/runner_install.py:71 +#: lutris/gui/dialogs/runner_install.py:101 msgid "Unable to get runner versions from winegame.net" msgstr "Nicht in der Lage die Version des Starters auf winegame.net zu ermitteln" -#: lutris/gui/dialogs/runner_install.py:80 +#: lutris/gui/dialogs/runner_install.py:108 #, python-format msgid "%s version management" msgstr "%s Versionsverwaltung" -#: lutris/gui/dialogs/runner_install.py:139 -#, python-format -msgid "In use by %d game" -msgid_plural "In use by %d games" -msgstr[0] "In Nutzung von %d Spiel" -msgstr[1] "In Nutzung von %d Spielen" +#: lutris/gui/dialogs/runner_install.py:158 +#, fuzzy, python-format +msgid "_View %d game" +msgid_plural "_View %d games" +msgstr[0] "Neues Spiel" +msgstr[1] "Neues Spiel" -#: lutris/gui/dialogs/runner_install.py:141 -msgid "Not in use" -msgstr "Nicht in Nutzung" +#: lutris/gui/dialogs/runner_install.py:190 +#: lutris/gui/dialogs/uninstall_game.py:34 +msgid "Uninstall" +msgstr "Deinstallieren" -#: lutris/gui/dialogs/runner_install.py:173 +#: lutris/gui/dialogs/runner_install.py:214 +#, fuzzy +msgid "Wine version usage" +msgstr "Wine-Version" + +#: lutris/gui/dialogs/runner_install.py:256 msgid "Do you want to cancel the download?" msgstr "Wollen Sie das Herunterladen abbrechen?" -#: lutris/gui/dialogs/runner_install.py:174 +#: lutris/gui/dialogs/runner_install.py:257 msgid "Download starting" msgstr "Herunterladen gestartet" -#: lutris/gui/dialogs/runner_install.py:231 +#: lutris/gui/dialogs/runner_install.py:307 +#, fuzzy, python-format +msgid "Version %s is not longer available" +msgstr "Es ist kein Installationsskript für %s verfügbar." + +#: lutris/gui/dialogs/runner_install.py:332 msgid "Downloading…" msgstr "Lädt herunter…" -#: lutris/gui/dialogs/runner_install.py:234 +#: lutris/gui/dialogs/runner_install.py:335 msgid "Extracting…" msgstr "Entpacken…" -#: lutris/gui/dialogs/runner_install.py:269 +#: lutris/gui/dialogs/runner_install.py:377 msgid "Failed to retrieve the runner archive" msgstr "Das Abrufen des Archives von Startern ist fehlgeschlagen" @@ -1052,10 +1166,6 @@ msgstr "Das Abrufen des Archives von Startern ist fehlgeschlagen" msgid "Uninstall %s" msgstr "Deinstalliere %s" -#: lutris/gui/dialogs/uninstall_game.py:34 -msgid "Uninstall" -msgstr "Deinstallieren" - #: lutris/gui/dialogs/uninstall_game.py:38 msgid "No file will be deleted" msgstr "Keine Datei wird gelöscht" @@ -1116,7 +1226,7 @@ msgstr "" "%s vollständig von der Bibliothek entfernen?\n" "Die ganze Spielzeit wird verloren gehen." -#: lutris/gui/dialogs/webconnect_dialog.py:92 +#: lutris/gui/dialogs/webconnect_dialog.py:106 msgid "Loading..." msgstr "Lädt..." @@ -1130,6 +1240,25 @@ msgstr "Steam-Spiel {appid}" msgid "{file} on {host}" msgstr "{file} auf {host}" +#: lutris/gui/installer/file_box.py:121 +msgid "Download" +msgstr "Herunterladen" + +#: lutris/gui/installer/file_box.py:123 +#, fuzzy +msgid "Use Cache" +msgstr "Nutze Zwischenspeicher" + +#: lutris/gui/installer/file_box.py:125 lutris/runners/steam.py:29 +#: lutris/services/steam.py:73 +msgid "Steam" +msgstr "Steam" + +#: lutris/gui/installer/file_box.py:126 +#, fuzzy +msgid "Select File" +msgstr "Datei auswählen" + #: lutris/gui/installer/file_box.py:187 msgid "Cache file for future installations" msgstr "Zwischenspeicherdatei für zukünftige Installationen" @@ -1138,125 +1267,133 @@ msgstr "Zwischenspeicherdatei für zukünftige Installationen" msgid "Source:" msgstr "Quelle:" -#: lutris/gui/installerwindow.py:63 +#: lutris/gui/installerwindow.py:65 msgid "Cache" msgstr "Zwischenspeicher" -#: lutris/gui/installerwindow.py:74 +#: lutris/gui/installerwindow.py:76 msgid "Abort and revert the installation" msgstr "Installation abbrechen und rückgängig machen" -#: lutris/gui/installerwindow.py:76 +#: lutris/gui/installerwindow.py:78 msgid "_Eject" msgstr "_Auswerfen" -#: lutris/gui/installerwindow.py:77 +#: lutris/gui/installerwindow.py:79 msgid "_View source" msgstr "_Quelle ansehen" -#: lutris/gui/installerwindow.py:78 +#: lutris/gui/installerwindow.py:80 msgid "_Install" msgstr "_Installieren" -#: lutris/gui/installerwindow.py:79 +#: lutris/gui/installerwindow.py:81 msgid "_Continue" msgstr "_Fortfahren" -#: lutris/gui/installerwindow.py:80 +#: lutris/gui/installerwindow.py:82 msgid "_Launch" msgstr "_Starten" -#: lutris/gui/installerwindow.py:81 +#: lutris/gui/installerwindow.py:83 msgid "_Close" msgstr "_Schließen" -#: lutris/gui/installerwindow.py:120 +#: lutris/gui/installerwindow.py:122 #, python-format msgid "Missing field \"%s\" in install script" msgstr "Fehlendes Feld \"%s\" im Installationsskript" -#: lutris/gui/installerwindow.py:126 +#: lutris/gui/installerwindow.py:128 #, python-format msgid "Install %s" msgstr "Installiere %s" -#: lutris/gui/installerwindow.py:166 +#: lutris/gui/installerwindow.py:162 #, python-format msgid "This game requires %s. Do you want to install it?" msgstr "Dieses Spiel benötigt %s. Wollen Sie es installieren?" -#: lutris/gui/installerwindow.py:167 +#: lutris/gui/installerwindow.py:163 msgid "Missing dependency" msgstr "Fehlende Abhängigkeiten" -#: lutris/gui/installerwindow.py:179 +#: lutris/gui/installerwindow.py:175 msgid "Installing {}" msgstr "Installiert {}" -#: lutris/gui/installerwindow.py:195 +#: lutris/gui/installerwindow.py:196 msgid "Select installation directory" msgstr "Wähle Installationsverzeichnis" -#: lutris/gui/installerwindow.py:245 +#: lutris/gui/installerwindow.py:246 msgid "Autodetect" msgstr "Automatisch erkennen" -#: lutris/gui/installerwindow.py:251 +#: lutris/gui/installerwindow.py:252 msgid "Browse…" msgstr "Durchsuchen…" -#: lutris/gui/installerwindow.py:258 +#: lutris/gui/installerwindow.py:259 msgid "Select the folder where the disc is mounted" msgstr "Ordner wählen, wo die Platte eingehängt ist" -#: lutris/gui/installerwindow.py:318 +#: lutris/gui/installerwindow.py:320 msgid "" "Please review the files needed for the installation then click 'Continue'" msgstr "" "Bitte prüfe die Dateien, die für die Installation benötigt werden und klicke " "auf 'Fortfahren'" -#: lutris/gui/installerwindow.py:421 +#: lutris/gui/installerwindow.py:358 +msgid "" +"This game has extra content. \n" +"Select which one you want and they will be available in the 'extras' folder " +"where the game is installed." +msgstr "" + +#: lutris/gui/installerwindow.py:459 #, python-format msgid "Unable to get files: %s" msgstr "Nicht in der Lage die Dateien zu erhalten: %s" -#: lutris/gui/installerwindow.py:505 +#: lutris/gui/installerwindow.py:554 msgid "Remove game files" msgstr "Entferne Spieldateien" -#: lutris/gui/installerwindow.py:511 +#: lutris/gui/installerwindow.py:560 msgid "Are you sure you want to cancel the installation?" msgstr "Sind Sie sicher, dass Sie die Installation abbrechen wollen?" -#: lutris/gui/installerwindow.py:512 +#: lutris/gui/installerwindow.py:561 msgid "Cancel installation?" msgstr "Installation abbrechen?" -#: lutris/gui/lutriswindow.py:346 +#: lutris/gui/lutriswindow.py:345 #, python-format msgid "Connect your %s account to access your games" msgstr "Verbinden Sie Ihren %s-Konto für den Zugriff auf Ihre Spiele" -#: lutris/gui/lutriswindow.py:417 +#: lutris/gui/lutriswindow.py:416 #, python-format msgid "No games matching '%s' found " msgstr "Keine Spiele gefunden, die mit '%s' übereinstimmen " -#: lutris/gui/lutriswindow.py:420 +#: lutris/gui/lutriswindow.py:419 msgid "Add games to your favorites to see them here." msgstr "Fügen Sie Ihre Spiele zu den Favoriten hinzu um sie hier zu sehen." -#: lutris/gui/lutriswindow.py:422 +#: lutris/gui/lutriswindow.py:421 msgid "No installed games found. Press Ctrl+H to show all games." msgstr "" "Keine installierte Spiele gefunden. Drücke Strg+H damit alle gezeigt werden." -#: lutris/gui/lutriswindow.py:424 +#: lutris/gui/lutriswindow.py:430 msgid "No games found" msgstr "Kein Spiel gefunden" #: lutris/gui/views/list.py:48 lutris/runners/dolphin.py:26 +#: lutris/runners/scummvm.py:178 msgid "Platform" msgstr "Plattform" @@ -1264,7 +1401,7 @@ msgstr "Plattform" msgid "Browse..." msgstr "Durchsuchen..." -#: lutris/gui/widgets/common.py:137 +#: lutris/gui/widgets/common.py:136 msgid "" "Warning! The selected path is located on a drive formatted by " "Windows.\n" @@ -1275,7 +1412,7 @@ msgstr "" "Spiele und Programme, die auf einem Windows-Laufwerk installiert wurden " "werden gewöhnlich nicht funktionieren." -#: lutris/gui/widgets/common.py:145 +#: lutris/gui/widgets/common.py:144 msgid "" "Warning! The selected path contains files. Installation might not " "work properly." @@ -1283,18 +1420,18 @@ msgstr "" "Warnung! Der ausgewählte Pfad enthält Dateien. Die Installation " "funktioniert möglicherweise nicht richtig." -#: lutris/gui/widgets/common.py:153 +#: lutris/gui/widgets/common.py:152 msgid "" "Warning The destination folder is not writable by the current user." msgstr "" "Warnung Der Zielordner ist für den aktuellen Nutzer nicht " "beschreibbar." -#: lutris/gui/widgets/common.py:255 +#: lutris/gui/widgets/common.py:254 msgid "Add" msgstr "Hinzufügen" -#: lutris/gui/widgets/common.py:259 +#: lutris/gui/widgets/common.py:258 msgid "Delete" msgstr "Löschen" @@ -1312,7 +1449,7 @@ msgid "{downloaded:0.2f} / {size:0.2f}MB ({speed:0.2f}MB/s), {time} remaining" msgstr "" "{downloaded:0.2f} / {size:0.2f}MB ({speed:0.2f}MB/s), {time} verbleibend" -#: lutris/gui/widgets/game_bar.py:140 +#: lutris/gui/widgets/game_bar.py:150 #, python-format msgid "" "Platform:\n" @@ -1321,7 +1458,7 @@ msgstr "" "Plattform:\n" "%s" -#: lutris/gui/widgets/game_bar.py:149 +#: lutris/gui/widgets/game_bar.py:159 #, python-format msgid "" "Time played:\n" @@ -1330,7 +1467,7 @@ msgstr "" "Spielzeit:\n" "%s" -#: lutris/gui/widgets/game_bar.py:158 +#: lutris/gui/widgets/game_bar.py:168 #, python-format msgid "" "Last played:\n" @@ -1339,51 +1476,51 @@ msgstr "" "Zuletzt gespielt:\n" "%s" -#: lutris/gui/widgets/game_bar.py:194 +#: lutris/gui/widgets/game_bar.py:204 msgid "Launching" msgstr "Startet" -#: lutris/gui/widgets/sidebar.py:127 lutris/gui/widgets/sidebar.py:155 +#: lutris/gui/widgets/sidebar.py:128 lutris/gui/widgets/sidebar.py:161 msgid "Reload" msgstr "Neuladen" -#: lutris/gui/widgets/sidebar.py:156 +#: lutris/gui/widgets/sidebar.py:160 lutris/gui/widgets/sidebar.py:204 +msgid "Run" +msgstr "Starten" + +#: lutris/gui/widgets/sidebar.py:162 msgid "Disconnect" msgstr "Trennen" -#: lutris/gui/widgets/sidebar.py:157 +#: lutris/gui/widgets/sidebar.py:163 msgid "Connect" msgstr "Verbinden" -#: lutris/gui/widgets/sidebar.py:188 +#: lutris/gui/widgets/sidebar.py:199 msgid "Manage Versions" msgstr "Versionen verwalten" -#: lutris/gui/widgets/sidebar.py:193 -msgid "Run" -msgstr "Starten" - -#: lutris/gui/widgets/sidebar.py:258 +#: lutris/gui/widgets/sidebar.py:269 msgid "Library" msgstr "Bibliothek" -#: lutris/gui/widgets/sidebar.py:261 +#: lutris/gui/widgets/sidebar.py:272 msgid "Platforms" msgstr "Plattformen" -#: lutris/gui/widgets/sidebar.py:304 +#: lutris/gui/widgets/sidebar.py:316 lutris/util/system.py:27 msgid "Games" msgstr "Spiele" -#: lutris/gui/widgets/sidebar.py:313 +#: lutris/gui/widgets/sidebar.py:325 msgid "Recent" msgstr "Zuletzt" -#: lutris/gui/widgets/sidebar.py:322 +#: lutris/gui/widgets/sidebar.py:334 msgid "Favorites" msgstr "Favoriten" -#: lutris/gui/widgets/sidebar.py:330 +#: lutris/gui/widgets/sidebar.py:342 msgid "Running" msgstr "Läuft" @@ -1401,8 +1538,8 @@ msgid "One of {params} parameter is mandatory for the {cmd} command" msgstr "" "Einer der \"{params}\"-Parameter ist obligatorisch für den {cmd}-Befehl" -#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:117 -#: lutris/installer/interpreter.py:140 +#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:123 +#: lutris/installer/interpreter.py:146 msgid " or " msgstr " oder " @@ -1424,26 +1561,26 @@ msgstr "" "Parameterdateien und -befehle können nicht gleichzeitig genutzt werden für " "die Ausführung des Befehles" -#: lutris/installer/commands.py:131 +#: lutris/installer/commands.py:138 msgid "No parameters supplied to execute command." msgstr "Keine Parameter mitgegeben für die Ausführung des Befehles." -#: lutris/installer/commands.py:145 +#: lutris/installer/commands.py:152 #, python-format msgid "Unable to find executable %s" msgstr "Ausführbares Programm %s wurde nicht gefunden" -#: lutris/installer/commands.py:178 +#: lutris/installer/commands.py:186 #, python-format msgid "%s does not exist" msgstr "%s existiert nicht" -#: lutris/installer/commands.py:184 +#: lutris/installer/commands.py:192 #, python-format msgid "Extracting %s" msgstr "Entpacke %s" -#: lutris/installer/commands.py:226 +#: lutris/installer/commands.py:234 msgid "" "Insert or mount game disc and click Autodetect or\n" "use Browse if the disc is mounted on a non standard location." @@ -1451,7 +1588,7 @@ msgstr "" "Lege die Spielplatte ein und klicke auf \"Automatisch erkennen\" oder nutze\n" "\"Durchsuchen\", wenn die Platte an einem nicht üblichen Ort eingehängt ist." -#: lutris/installer/commands.py:230 +#: lutris/installer/commands.py:238 #, python-format msgid "" "\n" @@ -1466,17 +1603,17 @@ msgstr "" "Bild, welches die folgende Datei oder Verzeichnis beinhaltet:\n" "%s" -#: lutris/installer/commands.py:272 +#: lutris/installer/commands.py:280 #, python-format msgid "Source does not exist: %s" msgstr "Quelle existiert nicht: %s" -#: lutris/installer/commands.py:298 +#: lutris/installer/commands.py:306 #, python-format msgid "Invalid source for 'move' operation: %s" msgstr "Ungültige Quelle für die Verschiebungsoperation: %s" -#: lutris/installer/commands.py:317 +#: lutris/installer/commands.py:325 #, python-brace-format msgid "" "Can't move {src} \n" @@ -1485,34 +1622,34 @@ msgstr "" "Kann {src} nicht nach \n" "{dst} verschieben" -#: lutris/installer/commands.py:324 +#: lutris/installer/commands.py:332 #, python-format msgid "Rename error, source path does not exist: %s" msgstr "Umbenennungsfehler, Quellpfad existiert noch nicht: %s" -#: lutris/installer/commands.py:331 +#: lutris/installer/commands.py:339 #, python-format msgid "Rename error, destination already exists: %s" msgstr "Umbenennungsfehler, Ziel existiert bereits: %s" -#: lutris/installer/commands.py:347 +#: lutris/installer/commands.py:355 msgid "Missing parameter src" msgstr "Fehlender Parameter src" -#: lutris/installer/commands.py:350 +#: lutris/installer/commands.py:358 msgid "Wrong value for 'src' param" msgstr "Falscher Wert für \"src\"-Parameter" -#: lutris/installer/commands.py:354 +#: lutris/installer/commands.py:362 msgid "Wrong value for 'dst' param" msgstr "Falscher Wert für \"dst\"-Parameter" -#: lutris/installer/commands.py:435 +#: lutris/installer/commands.py:451 #, python-format msgid "Command exited with code %s" msgstr "Befehl beendet mit dem Code %s" -#: lutris/installer/commands.py:453 +#: lutris/installer/commands.py:469 #, python-format msgid "Wrong value for write_file mode: '%s'" msgstr "Falscher Wert für Dateischreibmodus: \"%s\"" @@ -1535,19 +1672,19 @@ msgstr "Ungültige Prüfsumme, erwartetes Format (Typ:Hashwert) " msgid " checksum mismatch " msgstr " Prüfsumme stimmt nicht überein " -#: lutris/installer/installer.py:163 +#: lutris/installer/installer.py:179 msgid "Game config key must be a string" msgstr "Tastenkonfiguration des Spiels muss eine Zeichenkette (String) sein" -#: lutris/installer/installer.py:212 +#: lutris/installer/installer.py:228 msgid "Invalid 'game' section" msgstr "Ungültiger \"game\"-Bereich" -#: lutris/installer/interpreter.py:52 +#: lutris/installer/interpreter.py:53 msgid "This installer doesn't have a 'script' section" msgstr "Dieses Installationsskript hat keinen \"script\"-Bereich" -#: lutris/installer/interpreter.py:56 +#: lutris/installer/interpreter.py:57 msgid "" "Invalid script: \n" "{}" @@ -1555,38 +1692,38 @@ msgstr "" "Ungültiges Skript: \n" "{}" -#: lutris/installer/interpreter.py:117 lutris/installer/interpreter.py:120 +#: lutris/installer/interpreter.py:123 lutris/installer/interpreter.py:126 #, python-format msgid "This installer requires %s on your system" msgstr "Dieses Installationsskript benötigt %s auf Ihrem System" -#: lutris/installer/interpreter.py:133 +#: lutris/installer/interpreter.py:139 msgid "You need to install {} before" msgstr "{} müssen Sie vorher installieren" -#: lutris/installer/interpreter.py:180 +#: lutris/installer/interpreter.py:187 msgid "Lutris does not have the necessary permissions to install to path:" msgstr "Lutris hat nicht die nötigen Rechte um in diesen Pfad zu installieren:" -#: lutris/installer/interpreter.py:264 +#: lutris/installer/interpreter.py:271 #, python-format msgid "Invalid runner provided %s" msgstr "Ungültiger Starter angegeben: %s" -#: lutris/installer/interpreter.py:285 +#: lutris/installer/interpreter.py:297 msgid "Installing game data" msgstr "Installiere Spieldaten" -#: lutris/installer/interpreter.py:297 +#: lutris/installer/interpreter.py:309 msgid "Installer commands are not formatted correctly" msgstr "Befehl des Installationsskriptes ist nicht korrekt formatiert" -#: lutris/installer/interpreter.py:329 +#: lutris/installer/interpreter.py:342 #, python-format msgid "The command \"%s\" does not exist." msgstr "Der Befehl \"%s\" existiert nicht." -#: lutris/installer/interpreter.py:346 +#: lutris/installer/interpreter.py:363 #, python-format msgid "" "The executable at path %s can't be found, please check the destination " @@ -1598,7 +1735,7 @@ msgstr "" "Einige Teile des Installationsprozesses wurden möglicherweise nicht " "erfolgreich abgeschlossen." -#: lutris/installer/interpreter.py:352 +#: lutris/installer/interpreter.py:369 msgid "Installation completed!" msgstr "Installation abgeschlossen!" @@ -1624,7 +1761,7 @@ msgid "Atari 400, 800 and XL emulator" msgstr "Atari 400, 800 and XL-Emulator" #: lutris/runners/atari800.py:41 lutris/runners/jzintv.py:19 -#: lutris/runners/libretro.py:73 lutris/runners/mame.py:78 +#: lutris/runners/libretro.py:74 lutris/runners/mame.py:78 #: lutris/runners/mednafen.py:57 lutris/runners/mupen64plus.py:20 #: lutris/runners/o2em.py:45 lutris/runners/openmsx.py:17 #: lutris/runners/osmose.py:21 lutris/runners/snes9x.py:27 @@ -1679,12 +1816,12 @@ msgstr "Maschine" #: lutris/runners/atari800.py:85 lutris/runners/easyrpg.py:144 #: lutris/runners/hatari.py:72 lutris/runners/jzintv.py:43 -#: lutris/runners/libretro.py:93 lutris/runners/mame.py:157 +#: lutris/runners/libretro.py:94 lutris/runners/mame.py:157 #: lutris/runners/mednafen.py:74 lutris/runners/mupen64plus.py:28 #: lutris/runners/o2em.py:75 lutris/runners/osmose.py:34 #: lutris/runners/pcsx2.py:26 lutris/runners/pico8.py:38 #: lutris/runners/redream.py:25 lutris/runners/reicast.py:42 -#: lutris/runners/residualvm.py:39 lutris/runners/scummvm.py:46 +#: lutris/runners/residualvm.py:39 lutris/runners/scummvm.py:76 #: lutris/runners/snes9x.py:36 lutris/runners/vice.py:57 msgid "Fullscreen" msgstr "Vollbild" @@ -1730,10 +1867,14 @@ msgstr "Deaktiviere die graphische Benutzeroberfläche." msgid "Batch" msgstr "Batch" -#: lutris/runners/dolphin.py:43 +#: lutris/runners/dolphin.py:44 msgid "Exit Dolphin with emulator." msgstr "Dolphin mit dem Eumulator verlassen." +#: lutris/runners/dolphin.py:50 +msgid "Custom Global User Directory" +msgstr "" + #: lutris/runners/dosbox.py:13 msgid "DOSBox" msgstr "DOSBox" @@ -1784,12 +1925,12 @@ msgid "Command line arguments used when launching DOSBox" msgstr "Befehlszeilenargumente werden genutzt beim Starten von DOSBox" #: lutris/runners/dosbox.py:51 lutris/runners/linux.py:39 -#: lutris/runners/wine.py:60 +#: lutris/runners/wine.py:61 msgid "Working directory" msgstr "Arbeitsverzeichnis" #: lutris/runners/dosbox.py:53 lutris/runners/linux.py:41 -#: lutris/runners/wine.py:62 +#: lutris/runners/wine.py:63 msgid "" "The location where the game is run from.\n" "By default, Lutris uses the directory of the executable." @@ -1801,11 +1942,11 @@ msgstr "" msgid "none" msgstr "keinen" -#: lutris/runners/dosbox.py:85 lutris/runners/scummvm.py:64 +#: lutris/runners/dosbox.py:85 lutris/runners/scummvm.py:101 msgid "Graphic scaler" msgstr "Graphischen Skalierer" -#: lutris/runners/dosbox.py:93 lutris/runners/scummvm.py:82 +#: lutris/runners/dosbox.py:93 lutris/runners/scummvm.py:119 msgid "" "The algorithm used to scale up the game's base resolution, resulting in " "different visual styles. " @@ -1839,7 +1980,7 @@ msgstr "Führt RPG-Maker-2000/2003-Spiele aus" #: lutris/runners/easyrpg.py:12 lutris/runners/linux.py:14 #: lutris/runners/linux.py:16 lutris/runners/residualvm.py:15 -#: lutris/runners/scummvm.py:16 lutris/runners/steam.py:43 +#: lutris/runners/scummvm.py:14 lutris/runners/steam.py:30 #: lutris/runners/zdoom.py:15 msgid "Linux" msgstr "Linux" @@ -1874,8 +2015,8 @@ msgid "Disable auto detection of the simulated engine." msgstr "Deaktiviere die automatische Erkennung der simulierten Engine." #: lutris/runners/easyrpg.py:41 lutris/runners/fsuae.py:50 -#: lutris/runners/mame.py:173 lutris/runners/wine.py:81 -#: lutris/runners/wine.py:405 +#: lutris/runners/mame.py:173 lutris/runners/wine.py:82 +#: lutris/runners/wine.py:416 msgid "Auto" msgstr "Automatisch" @@ -2067,7 +2208,7 @@ msgstr "" "Schalte dies aus um VSync zu deaktivieren und die FPS-Begrenzung zu nutzen. " "VSync könnte nicht auf allen Plattformen unterstützt sein." -#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:311 +#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:318 msgid "FPS limit" msgstr "FPS-Begrenzung" @@ -2082,7 +2223,7 @@ msgstr "" "zu deaktivieren. Diese Option könnte nicht auf allen Plattformen unterstützt " "sein." -#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:431 +#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:442 msgid "Show FPS" msgstr "Zeige FPS" @@ -2091,7 +2232,7 @@ msgid "Enable frames per second counter." msgstr "Aktiviere Bilder-pro-Sekunden-Zähler." #: lutris/runners/easyrpg.py:209 lutris/runners/mednafen.py:85 -#: lutris/runners/wine.py:428 lutris/sysoptions.py:297 +#: lutris/runners/wine.py:439 msgid "Disabled" msgstr "Deaktiviert" @@ -2542,8 +2683,8 @@ msgid "" "Automatically uses Feral GameMode daemon if available. Set to true to " "disable the feature." msgstr "" -"Nutzt automatisch den Feral-GameMode-Dämon, falls verfügbar. Setze auf \"true" -"\" um die Funktion zu deaktivieren." +"Nutzt automatisch den Feral-GameMode-Dämon, falls verfügbar. Setze auf " +"\"true\" um die Funktion zu deaktivieren." #: lutris/runners/fsuae.py:280 msgid "CPU governor warning" @@ -2602,6 +2743,7 @@ msgid "Keyboard" msgstr "Tastatur" #: lutris/runners/hatari.py:52 lutris/runners/o2em.py:39 +#: lutris/runners/scummvm.py:186 msgid "Joystick" msgstr "Joystick" @@ -2719,31 +2861,31 @@ msgstr "" msgid "Resolution" msgstr "Bildauflösung" -#: lutris/runners/libretro.py:64 +#: lutris/runners/libretro.py:65 msgid "Libretro" msgstr "Libretro" -#: lutris/runners/libretro.py:65 +#: lutris/runners/libretro.py:66 msgid "Multi-system emulator" msgstr "Mehrsystem-Emulator" -#: lutris/runners/libretro.py:78 +#: lutris/runners/libretro.py:79 msgid "Core" msgstr "Kern" -#: lutris/runners/libretro.py:87 lutris/runners/zdoom.py:87 +#: lutris/runners/libretro.py:88 lutris/runners/zdoom.py:87 msgid "Config file" msgstr "Konfigurationsdatei" -#: lutris/runners/libretro.py:99 +#: lutris/runners/libretro.py:100 msgid "Verbose logging" msgstr "Ausführliche Protokollierung" -#: lutris/runners/libretro.py:266 +#: lutris/runners/libretro.py:271 msgid "No core has been selected for this game" msgstr "Kein Kern wurde für dieses Spiel ausgewählt" -#: lutris/runners/libretro.py:277 +#: lutris/runners/libretro.py:282 msgid "No game file specified" msgstr "Keine Spieldatei angegeben" @@ -2751,7 +2893,7 @@ msgstr "Keine Spieldatei angegeben" msgid "Runs native games" msgstr "Spiele nativ ausführen" -#: lutris/runners/linux.py:24 lutris/runners/wine.py:47 +#: lutris/runners/linux.py:24 lutris/runners/wine.py:48 msgid "Executable" msgstr "Ausführbares" @@ -2760,14 +2902,14 @@ msgid "The game's main executable file" msgstr "Die ausführbare Hauptdatei des Spieles" #: lutris/runners/linux.py:30 lutris/runners/mame.py:124 -#: lutris/runners/scummvm.py:39 lutris/runners/steam.py:60 -#: lutris/runners/steam.py:122 lutris/runners/wine.py:53 +#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:47 +#: lutris/runners/steam.py:99 lutris/runners/wine.py:54 #: lutris/runners/zdoom.py:27 msgid "Arguments" msgstr "Argumente" #: lutris/runners/linux.py:31 lutris/runners/mame.py:125 -#: lutris/runners/scummvm.py:40 +#: lutris/runners/scummvm.py:32 msgid "Command line arguments used when launching the game" msgstr "Kommandozeilenargumente, die beim Spielstart angewandt werden" @@ -3261,7 +3403,7 @@ msgstr "Phillips Videopac+" msgid "Brandt Jopac" msgstr "Brandt Jopac" -#: lutris/runners/o2em.py:36 lutris/runners/wine.py:386 +#: lutris/runners/o2em.py:36 lutris/runners/wine.py:397 msgid "Disable" msgstr "Deaktivieren" @@ -3561,19 +3703,20 @@ msgstr "" msgid "ResidualVM" msgstr "ResidualVM" +#. TODO #: lutris/runners/residualvm.py:16 msgid "3D point-and-click adventure games engine" msgstr "Spielengine für 3D-Point-und-Klick-Abenteuerspiele" -#: lutris/runners/residualvm.py:22 lutris/runners/scummvm.py:23 +#: lutris/runners/residualvm.py:22 lutris/runners/scummvm.py:21 msgid "Game identifier" msgstr "Spielkennung" -#: lutris/runners/residualvm.py:27 lutris/runners/scummvm.py:28 +#: lutris/runners/residualvm.py:27 lutris/runners/scummvm.py:26 msgid "Game files location" msgstr "Ort der Spieldateien" -#: lutris/runners/residualvm.py:31 lutris/runners/scummvm.py:32 +#: lutris/runners/residualvm.py:31 msgid "Enable subtitles (if the game has voice)" msgstr "Untertitel aktivieren (wenn im Spiel gesprochen wird)" @@ -3605,11 +3748,11 @@ msgstr "Sony PlayStation 3" msgid "Path to EBOOT.BIN" msgstr "Pfad nach EBOOT.BIN" -#: lutris/runners/runner.py:144 +#: lutris/runners/runner.py:148 msgid "Custom executable for the runner" msgstr "Benutzerdefinierte ausführbare Datei als Starter" -#: lutris/runners/runner.py:288 +#: lutris/runners/runner.py:293 msgid "" "The required runner is not installed.\n" "Do you wish to install it now?" @@ -3617,7 +3760,7 @@ msgstr "" "Der nötige Starter ist nicht installiert.\n" "Wollen Sie ihn jetzt installieren?" -#: lutris/runners/runner.py:290 +#: lutris/runners/runner.py:295 msgid "Required runner unavailable" msgstr "Benötigter Starter nicht verfügbar" @@ -3653,19 +3796,24 @@ msgstr "Titelschlüssel" msgid "File containing the title keys." msgstr "Datei der den Titelschlüssel beinhaltet." -#: lutris/runners/scummvm.py:14 +#: lutris/runners/scummvm.py:12 msgid "Engine for point-and-click games." msgstr "Engine für Point-und-Klick-Spiele." -#: lutris/runners/scummvm.py:15 lutris/services/scummvm.py:10 +#: lutris/runners/scummvm.py:13 lutris/services/scummvm.py:10 msgid "ScummVM" msgstr "ScummVM" -#: lutris/runners/scummvm.py:52 +#: lutris/runners/scummvm.py:82 +#, fuzzy +msgid "Enable subtitles" +msgstr "Aktiviere Audio" + +#: lutris/runners/scummvm.py:89 msgid "Aspect ratio correction" msgstr "Seitenverhältniskorrektur" -#: lutris/runners/scummvm.py:56 +#: lutris/runners/scummvm.py:93 msgid "" "Most games supported by ScummVM were made for VGA display modes using " "rectangular pixels. Activating this option for these games will preserve the " @@ -3676,14 +3824,227 @@ msgstr "" "Spiele aktiviert, bleibt der 4:3 Seitenverhältnis erhalten, wofür sie " "gemacht waren." -#: lutris/runners/scummvm.py:87 +#: lutris/runners/scummvm.py:140 +#, fuzzy +msgid "Render mode" +msgstr "Renderer" + +#: lutris/runners/scummvm.py:157 +#, fuzzy +msgid "Changes how the game is rendered." +msgstr "Starte das Spiel im Vollbild." + +#: lutris/runners/scummvm.py:161 +msgid "Filtering" +msgstr "" + +#: lutris/runners/scummvm.py:163 +msgid "" +"Uses bilinear interpolation instead of nearest neighbor resampling for the " +"aspect ratio correction and stretch mode." +msgstr "" + +#: lutris/runners/scummvm.py:170 msgid "Data directory" msgstr "Datenverzeichnis" -#: lutris/runners/scummvm.py:89 +#: lutris/runners/scummvm.py:172 msgid "Defaults to share/scummvm if unspecified." msgstr "Der Standardwert ist share/scummvm, falls kein Wert angegeben ist." +#: lutris/runners/scummvm.py:179 +msgid "" +"Specifes platform of game. Allowed values: 2gs, 3do, acorn, amiga, atari, " +"c64, fmtowns, nes, mac, pc pc98, pce, segacd, wii, windows" +msgstr "" + +#: lutris/runners/scummvm.py:187 +msgid "Enables joystick input (default: 0 = first joystick)" +msgstr "" + +#: lutris/runners/scummvm.py:193 +#, fuzzy +msgid "Language" +msgstr "Systemsprache" + +#: lutris/runners/scummvm.py:194 +msgid "" +"Selects language (en, de, fr, it, pt, es, jp, zh, kr, se, gb, hb, ru, cz)" +msgstr "" + +#: lutris/runners/scummvm.py:200 +#, fuzzy +msgid "Engine speed" +msgstr "Engine" + +#: lutris/runners/scummvm.py:201 +msgid "" +"Sets frames per second limit (0 - 100) for Grim Fandango or Escape from " +"Monkey Island (default: 60)." +msgstr "" + +#: lutris/runners/scummvm.py:208 +msgid "Talk speed" +msgstr "" + +#: lutris/runners/scummvm.py:209 +msgid "Sets talk speed for games (default: 60)" +msgstr "" + +#: lutris/runners/scummvm.py:215 +msgid "Music tempo" +msgstr "" + +#: lutris/runners/scummvm.py:216 +msgid "Sets music tempo (in percent, 50-200) for SCUMM games (default: 100)" +msgstr "" + +#: lutris/runners/scummvm.py:222 +msgid "Digital iMuse tempo" +msgstr "" + +#: lutris/runners/scummvm.py:223 +msgid "Sets internal Digital iMuse tempo (10 - 100) per second (default: 10)" +msgstr "" + +#: lutris/runners/scummvm.py:228 +#, fuzzy +msgid "Music driver" +msgstr "Audiotreiber" + +#: lutris/runners/scummvm.py:244 +msgid "Specifies the device ScummVM uses to output audio." +msgstr "" + +#: lutris/runners/scummvm.py:249 +msgid "Output rate" +msgstr "" + +#: lutris/runners/scummvm.py:256 +msgid "Selects output sample rate in Hz." +msgstr "" + +#: lutris/runners/scummvm.py:261 +#, fuzzy +msgid "OPL driver" +msgstr "Soundtreiber" + +#: lutris/runners/scummvm.py:273 +msgid "" +"Chooses which emulator is used by ScummVM when the AdLib emulator is chosen " +"as the Preferred device." +msgstr "" + +#: lutris/runners/scummvm.py:280 +msgid "Music volume" +msgstr "" + +#: lutris/runners/scummvm.py:281 +msgid "Sets the music volume, 0-255 (default: 192)" +msgstr "" + +#: lutris/runners/scummvm.py:287 +msgid "SFX volume" +msgstr "" + +#: lutris/runners/scummvm.py:288 +msgid "Sets the sfx volume, 0-255 (default: 192)" +msgstr "" + +#: lutris/runners/scummvm.py:294 +msgid "Speech volume" +msgstr "" + +#: lutris/runners/scummvm.py:295 +msgid "Sets the speech volume, 0-255 (default: 192)" +msgstr "" + +#: lutris/runners/scummvm.py:301 +msgid "MIDI gain" +msgstr "" + +#: lutris/runners/scummvm.py:302 +msgid "Sets the gain for MIDI playback. 0-1000 (default: 100)" +msgstr "" + +#: lutris/runners/scummvm.py:308 +msgid "Soundfont" +msgstr "" + +#: lutris/runners/scummvm.py:309 +msgid "Specifies the path to a soundfont file." +msgstr "" + +#: lutris/runners/scummvm.py:314 +msgid "Mixed AdLib/MIDI mode" +msgstr "" + +#: lutris/runners/scummvm.py:317 +msgid "Combines MIDI music with AdLib sound effects." +msgstr "" + +#: lutris/runners/scummvm.py:322 +msgid "True Roland MT-32" +msgstr "" + +#: lutris/runners/scummvm.py:325 +msgid "" +"Tells ScummVM that the MIDI device is an actual Roland MT-32, LAPC-I, CM-64, " +"CM-32L, CM-500 or other MT-32 device." +msgstr "" + +#: lutris/runners/scummvm.py:331 +#, fuzzy +msgid "Enable Roland GS" +msgstr "Aktiviere Audio" + +#: lutris/runners/scummvm.py:334 +msgid "" +"Tells ScummVM that the MIDI device is a GS device that has an MT-32 map, " +"such as an SC-55, SC-88 or SC-8820." +msgstr "" + +#: lutris/runners/scummvm.py:341 +msgid "Use alternate intro" +msgstr "" + +#: lutris/runners/scummvm.py:342 +msgid "Uses alternative intro for CD versions" +msgstr "" + +#: lutris/runners/scummvm.py:348 +msgid "Copy protection" +msgstr "" + +#: lutris/runners/scummvm.py:349 +msgid "Enables copy protection" +msgstr "" + +#: lutris/runners/scummvm.py:355 +#, fuzzy +msgid "Demo mode" +msgstr "Amiga-Modell" + +#: lutris/runners/scummvm.py:356 +msgid "Starts demo mode of Maniac Mansion or The 7th Guest" +msgstr "" + +#: lutris/runners/scummvm.py:362 +msgid "Debug level" +msgstr "" + +#: lutris/runners/scummvm.py:363 +msgid "Sets debug verbosity level" +msgstr "" + +#: lutris/runners/scummvm.py:369 +msgid "Debug flags" +msgstr "" + +#: lutris/runners/scummvm.py:370 +msgid "Enables engine specific debug flags" +msgstr "" + #: lutris/runners/snes9x.py:17 msgid "Super Nintendo emulator" msgstr "Super-Nintendo-Emulator" @@ -3711,19 +4072,15 @@ msgstr "" msgid "Sound driver" msgstr "Soundtreiber" -#: lutris/runners/steam.py:41 +#: lutris/runners/steam.py:28 msgid "Runs Steam for Linux games" msgstr "Steam für Linux-Spiele starten" -#: lutris/runners/steam.py:42 lutris/services/steam.py:73 -msgid "Steam" -msgstr "Steam" - -#: lutris/runners/steam.py:48 +#: lutris/runners/steam.py:35 msgid "Application ID" msgstr "Anwendungs-ID" -#: lutris/runners/steam.py:51 +#: lutris/runners/steam.py:38 msgid "" "The application ID can be retrieved from the game's page at steampowered." "com. Example: 235320 is the app ID for Original War in: \n" @@ -3733,7 +4090,7 @@ msgstr "" "finden. Beispiel: 235320 ist die Anwendungs-ID für Original War in: \n" "http://store.steampowered.com/app/235320/" -#: lutris/runners/steam.py:62 +#: lutris/runners/steam.py:49 msgid "" "Command line arguments used when launching the game.\n" "Ignored when Steam Big Picture mode is enabled." @@ -3741,42 +4098,30 @@ msgstr "" "Kommandozeilenargumente werden beim Spielstart genutzt.\n" "Wird ignoriert, wenn Steam Big Picture aktiviert ist." -#: lutris/runners/steam.py:68 +#: lutris/runners/steam.py:55 msgid "DRM free mode (Do not launch Steam)" msgstr "DRM-freier Modus (Starte Steam nicht)" -#: lutris/runners/steam.py:73 +#: lutris/runners/steam.py:60 msgid "" "Run the game directly without Steam, requires the game binary path to be set" msgstr "" "Starte das Spiel direkt ohne Steam, benötigt einen gesetzten Pfad zum " "Binärprogramm" -#: lutris/runners/steam.py:79 +#: lutris/runners/steam.py:66 msgid "Game binary path" msgstr "Binärpfad des Spiels" -#: lutris/runners/steam.py:81 +#: lutris/runners/steam.py:68 msgid "Path to the game executable (Required by DRM free mode)" msgstr "Pfad zur ausführbaren Spieldatei (Vom DRM-freien Modus benötigt)" -#: lutris/runners/steam.py:87 -msgid "Stop Steam after game exits" -msgstr "Stoppe Steam nach dem das Spiel beendet ist" - -#: lutris/runners/steam.py:91 -msgid "" -"Shut down Steam after the game has quit\n" -"(only if Steam was started by Lutris)" -msgstr "" -"Steam beenden nach dem das Spiel verlassen wurde\n" -"(nur wenn Steam mit Lutris gestartet wurde)" - -#: lutris/runners/steam.py:97 +#: lutris/runners/steam.py:74 msgid "Start Steam in Big Picture mode" msgstr "Starte Steam im Big-Picture-Modus" -#: lutris/runners/steam.py:101 +#: lutris/runners/steam.py:78 msgid "" "Launches Steam in Big Picture mode.\n" "Only works if Steam is not running or already running in Big Picture mode.\n" @@ -3787,11 +4132,11 @@ msgstr "" "ist.\n" "Nützlich bei der Verwendung eines Steam-Kontrollers." -#: lutris/runners/steam.py:109 +#: lutris/runners/steam.py:86 msgid "Start Steam with LSI" msgstr "Starte Steam mit LSI" -#: lutris/runners/steam.py:113 +#: lutris/runners/steam.py:90 msgid "" "Launches steam with LSI patches enabled. Make sure Lutris Runtime is " "disabled and you have LSI installed. https://github.com/solus-project/linux-" @@ -3801,11 +4146,11 @@ msgstr "" "Laufzeit deaktiviert ist und Sie LSI installiert haben. https://github.com/" "solus-project/linux-steam-integration" -#: lutris/runners/steam.py:124 +#: lutris/runners/steam.py:101 msgid "Extra command line arguments used when launching Steam" msgstr "Extra-Befehlszeilenargumente die beim Start von Steam genutzt werden" -#: lutris/runners/steam.py:131 +#: lutris/runners/steam.py:108 msgid "Remove game data (through Steam)" msgstr "Entferne Spieldaten (durch Steam)" @@ -4053,31 +4398,31 @@ msgstr "" "Die Datei %s existiert nicht, \n" "überprüfen Sie die Spielkonfiguration." -#: lutris/runners/wine.py:37 +#: lutris/runners/wine.py:38 msgid "Runs Windows games" msgstr "Startet Windows-Spiele" -#: lutris/runners/wine.py:38 +#: lutris/runners/wine.py:39 msgid "Wine" msgstr "Wine" -#: lutris/runners/wine.py:39 +#: lutris/runners/wine.py:40 msgid "Windows" msgstr "Windows" -#: lutris/runners/wine.py:48 +#: lutris/runners/wine.py:49 msgid "The game's main EXE file" msgstr "Die Haupt-EXE-Datei des Spiels" -#: lutris/runners/wine.py:54 +#: lutris/runners/wine.py:55 msgid "Windows command line arguments used when launching the game" msgstr "Windows-Kommandozeilenargumente werden beim Spielstart genutzt" -#: lutris/runners/wine.py:70 +#: lutris/runners/wine.py:71 msgid "Wine prefix" msgstr "Wine-Präfix" -#: lutris/runners/wine.py:72 +#: lutris/runners/wine.py:73 msgid "" "The prefix used by Wine.\n" "It's a directory containing a set of files and folders making up a confined " @@ -4087,47 +4432,47 @@ msgstr "" "Er ist ein Verzeichnis, welches einen Satz an Dateien und Ordnern enthält, " "das eine beschränkte Windows-Umgebung bildet." -#: lutris/runners/wine.py:80 +#: lutris/runners/wine.py:81 msgid "Prefix architecture" msgstr "Präfix-Architektur" -#: lutris/runners/wine.py:81 +#: lutris/runners/wine.py:82 msgid "32-bit" msgstr "32-Bit" -#: lutris/runners/wine.py:81 +#: lutris/runners/wine.py:82 msgid "64-bit" msgstr "64-Bit" -#: lutris/runners/wine.py:83 +#: lutris/runners/wine.py:84 msgid "The architecture of the Windows environment" msgstr "Die Architektur der Windows-Umgebung" -#: lutris/runners/wine.py:111 +#: lutris/runners/wine.py:112 msgid "Custom (select executable below)" msgstr "Benutzerdefiniert (wähle unten das Auführbare)" -#: lutris/runners/wine.py:113 +#: lutris/runners/wine.py:114 msgid "WineHQ Devel ({})" msgstr "WineHQ-Entwicklung ({})" -#: lutris/runners/wine.py:114 +#: lutris/runners/wine.py:115 msgid "WineHQ Staging ({})" msgstr "WineHQ-Experimentbühne (staging; {})" -#: lutris/runners/wine.py:115 +#: lutris/runners/wine.py:116 msgid "Wine Development ({})" msgstr "Wine-Entwicklung ({})" -#: lutris/runners/wine.py:116 +#: lutris/runners/wine.py:117 msgid "System ({})" msgstr "System ({})" -#: lutris/runners/wine.py:168 +#: lutris/runners/wine.py:169 msgid "Wine version" msgstr "Wine-Version" -#: lutris/runners/wine.py:173 +#: lutris/runners/wine.py:174 msgid "" "The version of Wine used to launch the game.\n" "Using the last version is generally recommended, but some games work better " @@ -4137,11 +4482,11 @@ msgstr "" "Die Nutzung der aktuellsten Version ist üblicherweise empfohlen, aber einige " "Spiele funktionieren besser mit älteren Versionen." -#: lutris/runners/wine.py:180 +#: lutris/runners/wine.py:181 msgid "Custom Wine executable" msgstr "Benutzerdefiniertes ausführbares Wine-Programm" -#: lutris/runners/wine.py:183 +#: lutris/runners/wine.py:184 msgid "" "The Wine executable to be used if you have selected \"Custom\" as the Wine " "version." @@ -4149,19 +4494,19 @@ msgstr "" "Das ausführbare Wine-Programm wird bei der Auswahl \"Benutzerdefiniert\" als " "die Wine-Version genutzt." -#: lutris/runners/wine.py:188 +#: lutris/runners/wine.py:189 msgid "Use system winetricks" msgstr "Nutze winetricks des Systems" -#: lutris/runners/wine.py:192 +#: lutris/runners/wine.py:193 msgid "Switch on to use /usr/bin/winetricks for winetricks." msgstr "Bei der Nutzung von winetricks zu /usr/bin/winetricks wechseln." -#: lutris/runners/wine.py:196 +#: lutris/runners/wine.py:197 msgid "Enable DXVK" msgstr "Aktiviere DXVK" -#: lutris/runners/wine.py:203 +#: lutris/runners/wine.py:204 msgid "" "Use DXVK to increase compatibility and performance in Direct3D 11, 10 and 9 " "applications by translating their calls to Vulkan." @@ -4169,15 +4514,15 @@ msgstr "" "Nutze DXVK um die Kompatibilität und Leistung in Direct3D 11, 10 und 9 " "Anwendungen zu erhöhen mit Hilfe der Übersetzung zur Vulkan-API." -#: lutris/runners/wine.py:209 +#: lutris/runners/wine.py:210 msgid "DXVK version" msgstr "DXVK-Version" -#: lutris/runners/wine.py:218 +#: lutris/runners/wine.py:219 msgid "Enable VKD3D" msgstr "Aktiviere VKD3D" -#: lutris/runners/wine.py:225 +#: lutris/runners/wine.py:226 msgid "" "Use VKD3D to enable support for Direct3D 12 applications by translating " "their calls to Vulkan." @@ -4185,15 +4530,15 @@ msgstr "" "Nutze VKD3D um Direct3D-12-Anwendungen zu unterstützen mit Hilfe der " "Übersetzung zur Vulkan API." -#: lutris/runners/wine.py:230 +#: lutris/runners/wine.py:231 msgid "VKD3D version" msgstr "VKD3D-Version" -#: lutris/runners/wine.py:238 +#: lutris/runners/wine.py:239 msgid "Enable D3D Extras" msgstr "Aktiviere D3D Extras" -#: lutris/runners/wine.py:243 +#: lutris/runners/wine.py:244 msgid "" "Replace Wine's D3DX and D3DCOMPILER libraries with alternative ones. Needed " "for proper functionality of DXVK with some games." @@ -4202,29 +4547,29 @@ msgstr "" "wird für DXVK bei einigen Spielen benötigt damit DXVK ordentlich " "funktioniert." -#: lutris/runners/wine.py:249 +#: lutris/runners/wine.py:250 msgid "D3D Extras version" msgstr "D3D-Extras-Version" -#: lutris/runners/wine.py:257 +#: lutris/runners/wine.py:258 msgid "Enable DXVK-NVAPI / DLSS" msgstr "Aktiviere DXVK-NVAPI / DLSS" -#: lutris/runners/wine.py:262 +#: lutris/runners/wine.py:263 msgid "Enable emulation of Nvidia's NVAPI and add DLSS support, if available." msgstr "" "Aktiviere die Emulation von Nvidias NVAPI und füge DLSS-Unterstützung hinzu, " "falls verfügbar." -#: lutris/runners/wine.py:267 +#: lutris/runners/wine.py:268 msgid "DXVK NVAPI version" msgstr "DXVK-NVAPI-Version" -#: lutris/runners/wine.py:275 +#: lutris/runners/wine.py:276 msgid "Enable dgvoodoo2" msgstr "Aktiviere dgvoodoo2" -#: lutris/runners/wine.py:280 +#: lutris/runners/wine.py:281 msgid "" "dgvoodoo2 is an alternative translation layer for rendering old games that " "utilize D3D1-7 and Glide APIs. As it translates to D3D11, it's recommended " @@ -4235,15 +4580,15 @@ msgstr "" "werden, wird empfohlen diese Kombination mit DXVK zu nutzen. Nur 32-Bit-" "Anwendungen werden unterstützt." -#: lutris/runners/wine.py:287 +#: lutris/runners/wine.py:288 msgid "dgvoodoo2 version" msgstr "dgvoodoo2-Version" -#: lutris/runners/wine.py:295 +#: lutris/runners/wine.py:296 msgid "Enable Esync" msgstr "Esync aktivieren" -#: lutris/runners/wine.py:302 +#: lutris/runners/wine.py:303 msgid "" "Enable eventfd-based synchronization (esync). This will increase performance " "in applications that take advantage of multi-core processors." @@ -4252,26 +4597,27 @@ msgstr "" "Leistung in Anwendungen erhöhen, die von den Mehrkernprozessoren einen " "Gebrauch machen." -#: lutris/runners/wine.py:309 +#: lutris/runners/wine.py:310 msgid "Enable Fsync" msgstr "Fsync aktivieren" -#: lutris/runners/wine.py:315 +#: lutris/runners/wine.py:317 +#, fuzzy msgid "" "Enable futex-based synchronization (fsync). This will increase performance " -"in applications that take advantage of multi-core processors. Requires a " -"custom kernel with the fsync patchset." +"in applications that take advantage of multi-core processors. Requires " +"kernel 5.16 or above." msgstr "" "Dies aktiviert die futex-basierte Synchronisierung (fsync). Sie wird die " "Leistung in Anwendungen erhöhen, die von den Mehrkernprozessoren einen " "Gebrauch machen. Benötigt einen angepassten Systemkern mit dem Fsync-" "Patchsatz." -#: lutris/runners/wine.py:323 +#: lutris/runners/wine.py:325 msgid "Enable AMD FidelityFX Super Resolution (FSR)" msgstr "Aktiviere AMD FidelityFX Super Resolution (FSR)" -#: lutris/runners/wine.py:327 +#: lutris/runners/wine.py:329 msgid "" "Use FSR to upscale the game window to native resolution.\n" "Requires Lutris Wine FShack >= 6.13 and setting the game to a lower " @@ -4285,11 +4631,11 @@ msgstr "" "Dies funktioniert nicht mit Spielen, die im randlosen Fenster laufen oder " "ihre eigenen Hochskalierungsmethoden verwenden." -#: lutris/runners/wine.py:334 +#: lutris/runners/wine.py:336 msgid "Enable BattlEye Anti-Cheat" msgstr "Aktiviere BattlEye Anti-Cheat" -#: lutris/runners/wine.py:338 +#: lutris/runners/wine.py:340 msgid "" "Enable support for BattlEye Anti-Cheat in supported games\n" "Requires Lutris Wine 6.21-2 and newer or any other compatible Wine build.\n" @@ -4299,11 +4645,27 @@ msgstr "" "Benötigt Lutris Wine 6.21-2 oder neuer bzw. jede andere kompatible Wine-" "Version.\n" -#: lutris/runners/wine.py:344 +#: lutris/runners/wine.py:346 +#, fuzzy +msgid "Enable Easy Anti-Cheat" +msgstr "Aktiviere BattlEye Anti-Cheat" + +#: lutris/runners/wine.py:350 +#, fuzzy +msgid "" +"Enable support for Easy Anti-Cheat in supported games\n" +"Requires Lutris Wine 7.2 and newer or any other compatible Wine build.\n" +msgstr "" +"Aktiviert die Unterstützung für BattlEye Anti-Cheat bei unterstützten " +"Spielen\n" +"Benötigt Lutris Wine 6.21-2 oder neuer bzw. jede andere kompatible Wine-" +"Version.\n" + +#: lutris/runners/wine.py:356 msgid "Windowed (virtual desktop)" msgstr "Fenstermodus (virtueller Schreibtisch)" -#: lutris/runners/wine.py:348 +#: lutris/runners/wine.py:360 msgid "" "Run the whole Windows desktop in a window.\n" "Otherwise, run it fullscreen.\n" @@ -4313,33 +4675,34 @@ msgstr "" "Ansonsten im Vollbild starten.\n" "Dies entspricht den virtuellen Schreibtisch in den Wine-Optionen." -#: lutris/runners/wine.py:355 +#: lutris/runners/wine.py:367 msgid "Virtual desktop resolution" msgstr "Virtuelle Schreibtisch-Auflösung" -#: lutris/runners/wine.py:358 +#: lutris/runners/wine.py:370 msgid "The size of the virtual desktop in pixels." msgstr "Die größe des virtuellen Schreibtisches in Pixeln." -#: lutris/runners/wine.py:362 +#: lutris/runners/wine.py:374 msgid "Enable DPI Scaling" msgstr "Aktiviere DPI-Skalierung" -#: lutris/runners/wine.py:366 +#: lutris/runners/wine.py:378 +#, fuzzy msgid "" "Enables the Windows application's DPI scaling.\n" -"Otherwise, disables DPI scaling by using 96 DPI.\n" -"This corresponds to Wine's Screen Resolution option." +"Otherwise, the Screen Resolution option in 'Wine configuration' controls " +"this." msgstr "" "Starte einen ganzen Windows-Schreibtisch in einem Fenster.\n" "Ansonsten im Vollbild starten.\n" "Dies entspricht der Bildschirmauflösung in den Wine-Optionen." -#: lutris/runners/wine.py:373 +#: lutris/runners/wine.py:384 msgid "DPI" msgstr "DPI" -#: lutris/runners/wine.py:376 +#: lutris/runners/wine.py:387 msgid "" "The DPI to be used if 'Enable DPI Scaling' is turned on.\n" "If blank or 'auto', Lutris will auto-detect this." @@ -4348,19 +4711,19 @@ msgstr "" "Falls leer oder \"auto\" eingetragen ist, wird Lutris ihn automatisch " "erkennen." -#: lutris/runners/wine.py:382 +#: lutris/runners/wine.py:393 msgid "Mouse Warp Override" msgstr "Mausverzug überschreiben" -#: lutris/runners/wine.py:385 +#: lutris/runners/wine.py:396 msgid "Enable" msgstr "Aktivieren" -#: lutris/runners/wine.py:387 +#: lutris/runners/wine.py:398 msgid "Force" msgstr "Erzwingen" -#: lutris/runners/wine.py:392 +#: lutris/runners/wine.py:403 msgid "" "Override the default mouse pointer warping behavior\n" "Enable: (Wine default) warp the pointer when the mouse is exclusively " @@ -4374,11 +4737,11 @@ msgstr "" "Deaktiviert: verzieht nie den Mauszeiger \n" "Erzwinge: verzieht immer den Zeiger" -#: lutris/runners/wine.py:401 +#: lutris/runners/wine.py:412 msgid "Audio driver" msgstr "Audiotreiber" -#: lutris/runners/wine.py:412 +#: lutris/runners/wine.py:423 msgid "" "Which audio backend to use.\n" "By default, Wine automatically picks the right one for your system." @@ -4386,44 +4749,44 @@ msgstr "" "Welches Audio-Unterbau genutzt wrd.\n" "Standardmäßig nutzt Wine bereits das Richtige auf Ihrem System." -#: lutris/runners/wine.py:420 +#: lutris/runners/wine.py:431 msgid "DLL overrides" msgstr "DLL-Überschreibung" -#: lutris/runners/wine.py:421 +#: lutris/runners/wine.py:432 msgid "Sets WINEDLLOVERRIDES when launching the game." msgstr "Setze WINEDLLOVERRIDES beim Spielstart." -#: lutris/runners/wine.py:425 +#: lutris/runners/wine.py:436 msgid "Output debugging info" msgstr "Gebe Diagnosedaten aus" -#: lutris/runners/wine.py:429 +#: lutris/runners/wine.py:440 msgid "Enabled" msgstr "Aktiviert" -#: lutris/runners/wine.py:430 +#: lutris/runners/wine.py:441 msgid "Inherit from environment" msgstr "Von der Umgebung mitschleppen" -#: lutris/runners/wine.py:432 +#: lutris/runners/wine.py:443 msgid "Full (CAUTION: Will cause MASSIVE slowdown)" msgstr "Voll (ACHTUNG: Wird MASSIV verlangsamen)" -#: lutris/runners/wine.py:435 +#: lutris/runners/wine.py:446 msgid "Output debugging information in the game log (might affect performance)" msgstr "" "Diagnosedaten im Spielprotokoll ausgeben (kann die Leistung beeinträchtigen)" -#: lutris/runners/wine.py:440 +#: lutris/runners/wine.py:451 msgid "Show crash dialogs" msgstr "Zeige Absturzdialoge" -#: lutris/runners/wine.py:448 +#: lutris/runners/wine.py:459 msgid "Autoconfigure joypads" msgstr "Konfiguriere Joypads automatisch" -#: lutris/runners/wine.py:452 +#: lutris/runners/wine.py:463 msgid "" "Automatically disables one of Wine's detected joypad to avoid having 2 " "controllers detected" @@ -4431,11 +4794,11 @@ msgstr "" "Deaktiviert automatisch einen von Wine erkannten Joypad, um zwei erkannte " "Kontroller zu vermeiden" -#: lutris/runners/wine.py:458 +#: lutris/runners/wine.py:469 msgid "Create a sandbox for Wine folders" msgstr "Erstelle einen Sandkasten für Wine-Ordner" -#: lutris/runners/wine.py:462 +#: lutris/runners/wine.py:473 msgid "" "Do not use $HOME for desktop integration folders.\n" "By default, it use the directories in the confined Windows environment." @@ -4444,48 +4807,44 @@ msgstr "" "Standardmäßig nutzt es die Verzeichnisse in der entsprechenden " "eingeschränkten Windows-Umgebung." -#: lutris/runners/wine.py:470 +#: lutris/runners/wine.py:481 msgid "Sandbox directory" msgstr "Sandkastenverzeichnis" -#: lutris/runners/wine.py:471 +#: lutris/runners/wine.py:482 msgid "Custom directory for desktop integration folders." msgstr "" "Benutzerdefiniertes Verzeichnis für den Ordner zur Schreibtischeinbindung." -#: lutris/runners/wine.py:479 +#: lutris/runners/wine.py:490 msgid "Run EXE inside Wine prefix" msgstr "Starte EXE innerhalb eines Wine-Präfix'" -#: lutris/runners/wine.py:481 +#: lutris/runners/wine.py:492 msgid "Wine configuration" msgstr "Wine-Konfiguration" -#: lutris/runners/wine.py:483 +#: lutris/runners/wine.py:494 msgid "Open Bash terminal" msgstr "Öffene Bash-Konsole" -#: lutris/runners/wine.py:484 +#: lutris/runners/wine.py:495 msgid "Open Wine console" msgstr "Öffne Wine-Konsole" -#: lutris/runners/wine.py:485 +#: lutris/runners/wine.py:496 msgid "Wine registry" msgstr "Wine-Registrierungsdatenbank" -#: lutris/runners/wine.py:486 -msgid "Kill all Wine processes" -msgstr "Beende alle Wine-Prozesse" - -#: lutris/runners/wine.py:487 +#: lutris/runners/wine.py:497 msgid "Winetricks" msgstr "Winetricks" -#: lutris/runners/wine.py:488 +#: lutris/runners/wine.py:498 msgid "Wine Control Panel" msgstr "Wine-Systemsteuerung" -#: lutris/runners/wine.py:654 +#: lutris/runners/wine.py:661 msgid "Select an EXE or MSI file" msgstr "Eine EXE oder MSI-Datei auswählen" @@ -4493,6 +4852,7 @@ msgstr "Eine EXE oder MSI-Datei auswählen" msgid "Yuzu" msgstr "Yuzu" +#. http://zdoom.org/wiki/Command_line_parameters #: lutris/runners/zdoom.py:13 msgid "ZDoom DOOM Game Engine" msgstr "ZDoom-DOOM-Spielengine" @@ -4626,11 +4986,11 @@ msgstr "Steam für Windows" msgid "TOSEC" msgstr "TOSEC" -#: lutris/services/ubisoft.py:78 +#: lutris/services/ubisoft.py:81 msgid "Ubisoft Connect" msgstr "Ubisoft Connect" -#: lutris/services/xdg.py:40 +#: lutris/services/xdg.py:43 msgid "Local" msgstr "Lokal" @@ -4642,11 +5002,11 @@ msgstr "(c) 2010-2022 Lutris-Team" msgid "The Lutris team" msgstr "Das Lutris-Team" -#: lutris/startup.py:86 +#: lutris/startup.py:87 msgid "Your NVIDIA driver is outdated." msgstr "Ihr NVIDIA-Treiber ist zu alt." -#: lutris/startup.py:88 +#: lutris/startup.py:89 #, python-format msgid "" "You are currently running driver %s which does not fully support all " @@ -4659,11 +5019,11 @@ msgstr "" "Bitte aktualisieren Sie Ihren Treiber wie es in unserer Installationsanleitung beschrieben ist" -#: lutris/startup.py:119 +#: lutris/startup.py:120 msgid "Missing vulkan libraries" msgstr "Fehlende Vulkan-Bibliotheken" -#: lutris/startup.py:121 +#: lutris/startup.py:122 #, python-format msgid "" "Lutris was unable to detect Vulkan support for the %s architecture.\n" @@ -4677,7 +5037,7 @@ msgstr "" "Installieren Sie es nach der folgenden Anleitung: Installiere " "Grafiktreiber" -#: lutris/startup.py:127 +#: lutris/startup.py:128 msgid " and " msgstr " und " @@ -4686,7 +5046,7 @@ msgid "Keep current" msgstr "Das Aktuelle beibehalten" #: lutris/sysoptions.py:37 lutris/sysoptions.py:46 lutris/sysoptions.py:57 -#: lutris/sysoptions.py:511 +#: lutris/sysoptions.py:501 msgid "Off" msgstr "Aus" @@ -4694,35 +5054,35 @@ msgstr "Aus" msgid "Primary" msgstr "Primärer" -#: lutris/sysoptions.py:84 +#: lutris/sysoptions.py:85 msgid "Auto: WARNING -- No Vulkan Loader detected!" msgstr "Auto: WARNUNG -- Kein Vulkan-ICD-Lader erkannt!" -#: lutris/sysoptions.py:114 +#: lutris/sysoptions.py:119 msgid "Auto: Intel Open Source (MESA: ANV)" msgstr "Auto: Intel (MESA: ANV) - quelloffen, frei" -#: lutris/sysoptions.py:116 +#: lutris/sysoptions.py:121 msgid "Auto: AMD RADV Open Source (MESA: RADV)" msgstr "Auto: AMD RADV (MESA: RADV) - quelloffen, frei" -#: lutris/sysoptions.py:118 +#: lutris/sysoptions.py:123 msgid "Auto: Nvidia Proprietary" msgstr "Auto: Nvidia - proprietär" -#: lutris/sysoptions.py:135 +#: lutris/sysoptions.py:145 msgid "Default installation folder" msgstr "Standardinstallationsordner" -#: lutris/sysoptions.py:138 +#: lutris/sysoptions.py:148 msgid "The default folder where you install your games." msgstr "Der Standardordner, wo Sie Ihre Spiele installieren." -#: lutris/sysoptions.py:146 +#: lutris/sysoptions.py:156 msgid "Disable Lutris Runtime" msgstr "Deaktiviere die Lutris-Laufzeit" -#: lutris/sysoptions.py:149 +#: lutris/sysoptions.py:159 msgid "" "The Lutris Runtime loads some libraries before running the game, which can " "cause some incompatibilities in some cases. Check this option to disable it." @@ -4731,11 +5091,11 @@ msgstr "" "was in einigen Fällen zu einigen Inkompatibilitäten führen kann. Wähle diese " "Option, um sie zu deaktivieren." -#: lutris/sysoptions.py:156 +#: lutris/sysoptions.py:166 msgid "Prefer system libraries" msgstr "Bevorzuge Systembibliotheken" -#: lutris/sysoptions.py:158 +#: lutris/sysoptions.py:168 msgid "" "When the runtime is enabled, prioritize the system libraries over the " "provided ones." @@ -4743,11 +5103,11 @@ msgstr "" "Wenn die Laufzeit aktiviert ist, priorisiert es die Systembibliotheken über " "die mitgelieferten Bibliotheken." -#: lutris/sysoptions.py:167 +#: lutris/sysoptions.py:174 msgid "Restore resolution on game exit" msgstr "Bildschirmauflösung wiederherstellen beim Beenden des Spiels" -#: lutris/sysoptions.py:170 +#: lutris/sysoptions.py:176 msgid "" "Some games don't restore your screen resolution when \n" "closed or when they crash. This is when this option comes \n" @@ -4757,11 +5117,11 @@ msgstr "" "wenn sie beendet wurden oder abgestürzt sind. Dort kommt dann \n" "diese Option ins Spiel, um Ihren Kuchen zu retten." -#: lutris/sysoptions.py:177 +#: lutris/sysoptions.py:183 msgid "Enable gamescope" msgstr "Aktiviere Gamescope" -#: lutris/sysoptions.py:181 +#: lutris/sysoptions.py:187 msgid "" "Use gamescope to draw the game window isolated from your desktop.\n" "Use Ctrl+Super+F to toggle fullscreen" @@ -4770,35 +5130,48 @@ msgstr "" "zeichnen.\n" "Nutze Strg+Super+F zum Umschalten des Vollbildmodus" -#: lutris/sysoptions.py:187 +#: lutris/sysoptions.py:193 msgid "Gamescope output resolution" msgstr "Gamescope-Ausgabeauflösung" -#: lutris/sysoptions.py:191 +#: lutris/sysoptions.py:197 msgid "Resolution of the window on your desktop" msgstr "Fensterauflösung auf Ihrem Schreibtisch" -#: lutris/sysoptions.py:196 +#: lutris/sysoptions.py:202 msgid "Gamescope game resolution" msgstr "Gamescope-Spielauflösung" -#: lutris/sysoptions.py:200 +#: lutris/sysoptions.py:206 msgid "Resolution of the screen visible to the game" msgstr "Bildschirmauflösung, die für das Spiel sichtbar ist" -#: lutris/sysoptions.py:205 -msgid "Restrict to single core" +#: lutris/sysoptions.py:211 +#, fuzzy +msgid "Restrict number of cores used" msgstr "Auf einen Kern begrenzen" -#: lutris/sysoptions.py:208 -msgid "Restrict the game to a single CPU core." +#: lutris/sysoptions.py:214 +#, fuzzy +msgid "Restrict the game to a maximum number of CPU cores." msgstr "Begrenze das Spiel auf einen Prozessorkern." -#: lutris/sysoptions.py:214 +#: lutris/sysoptions.py:219 +#, fuzzy +msgid "Restrict number of cores to" +msgstr "Auf einen Kern begrenzen" + +#: lutris/sysoptions.py:222 +msgid "" +"Maximum number of CPU cores to be used, if 'Restrict number of cores used' " +"is turned on." +msgstr "" + +#: lutris/sysoptions.py:228 msgid "Restore gamma on game exit" msgstr "Gamma beim Beenden des Spiels wiederherstellen" -#: lutris/sysoptions.py:216 +#: lutris/sysoptions.py:230 msgid "" "Some games don't correctly restores gamma on exit, making your display too " "bright. Select this option to correct it." @@ -4807,11 +5180,11 @@ msgstr "" "dann Ihren Bildschirm zu hell. Wähle diese Option aus, um dies zu " "korrigieren." -#: lutris/sysoptions.py:221 +#: lutris/sysoptions.py:235 msgid "Disable desktop effects" msgstr "Deaktiviere Schreibtischeffekte" -#: lutris/sysoptions.py:225 +#: lutris/sysoptions.py:239 msgid "" "Disable desktop effects while game is running, reducing stuttering and " "increasing performance" @@ -4819,11 +5192,11 @@ msgstr "" "Deaktiviert Bildschirmeffekte auf dem Schreibtisch, während das Spiel noch " "läuft. Reduziert das Stottern und erhöht die Leistung" -#: lutris/sysoptions.py:230 +#: lutris/sysoptions.py:244 msgid "Disable screen saver" msgstr "Deaktiviere Bildschirmschoner" -#: lutris/sysoptions.py:235 +#: lutris/sysoptions.py:249 msgid "" "Disable the screen saver while a game is running. Requires the screen " "saver's functionality to be exposed over DBus." @@ -4831,19 +5204,19 @@ msgstr "" "Deaktiviert den Bildschirmschoner, während ein Spiel läuft. Die " "Bildschirmschoner-Funktionen müssen dafür über DBus ausgeführt werden." -#: lutris/sysoptions.py:242 +#: lutris/sysoptions.py:256 msgid "Reset PulseAudio" msgstr "PulseAudio zurücksetzen" -#: lutris/sysoptions.py:246 +#: lutris/sysoptions.py:260 msgid "Restart PulseAudio before launching the game." msgstr "Startet Pulseaudio neu vor dem Spielstart." -#: lutris/sysoptions.py:251 +#: lutris/sysoptions.py:265 msgid "Reduce PulseAudio latency" msgstr "PulseAudio-Latenzen reduzieren" -#: lutris/sysoptions.py:255 +#: lutris/sysoptions.py:269 msgid "" "Set the environment variable PULSE_LATENCY_MSEC=60 to improve audio quality " "on some games" @@ -4851,19 +5224,19 @@ msgstr "" "Setzt die Umgebungsvariabel PULSE_LATENCY_MSEC=60 für eine bessere " "Klangqualität in einigen Spielen" -#: lutris/sysoptions.py:261 +#: lutris/sysoptions.py:275 msgid "Switch to US keyboard layout" msgstr "Wechsle zur US-Tastur-Anordnung" -#: lutris/sysoptions.py:264 +#: lutris/sysoptions.py:278 msgid "Switch to US keyboard QWERTY layout while game is running" msgstr "Wechselt zur QWERTY-Anordnung der US-Tastatur, während das Spiel läuft" -#: lutris/sysoptions.py:271 +#: lutris/sysoptions.py:285 msgid "Optimus launcher (NVIDIA Optimus laptops)" msgstr "Optimus-Starter (NVIDIA-Optimus-Laptops)" -#: lutris/sysoptions.py:273 +#: lutris/sysoptions.py:287 msgid "" "If you have installed the primus or bumblebee packages, select what launcher " "will run the game with the command, activating your NVIDIA graphic chip for " @@ -4878,11 +5251,11 @@ msgstr "" "bei vielen Spielen besser. Primus VK bringt die Vulkan-Unterstützung mit " "unter bumblebee." -#: lutris/sysoptions.py:285 +#: lutris/sysoptions.py:299 msgid "Vulkan ICD loader" msgstr "Vulkan-ICD-Lader" -#: lutris/sysoptions.py:287 +#: lutris/sysoptions.py:301 msgid "" "The ICD loader is a library that is placed between a Vulkan application and " "any number of Vulkan drivers, in order to support multiple drivers and the " @@ -4893,23 +5266,11 @@ msgstr "" "viele Treiber und Instanzebenen-Funktionalitäten zu unterstützen, die über " "diese Treiber hinweg funktionieren." -#: lutris/sysoptions.py:295 +#: lutris/sysoptions.py:309 msgid "FPS counter (MangoHud)" msgstr "FPS-Statusleiste (MangoHud)" -#: lutris/sysoptions.py:298 -msgid "Enabled (Vulkan)" -msgstr "Aktiviert (Vulkan)" - -#: lutris/sysoptions.py:299 -msgid "Enabled (OpenGL)" -msgstr "Aktiviert (OpenGL)" - -#: lutris/sysoptions.py:300 -msgid "Enabled (OpenGL, 32bit)" -msgstr "Aktiviert (OpenGL, 32-Bit)" - -#: lutris/sysoptions.py:305 +#: lutris/sysoptions.py:312 msgid "" "Display the game's FPS + other information. Requires MangoHud to be " "installed." @@ -4917,24 +5278,24 @@ msgstr "" "Zeigt die FPS-Zahl und viele anderen Infos über das Spiel an. Vorausgesetzt " "ist die Installation von MangoHud." -#: lutris/sysoptions.py:314 +#: lutris/sysoptions.py:321 msgid "Limit the game's FPS to desired number" msgstr "Limitiert FPS des Spiels auf den gewünschten Wert" -#: lutris/sysoptions.py:321 +#: lutris/sysoptions.py:328 msgid "Enable Feral GameMode" msgstr "Aktiviere Feral GameMode" -#: lutris/sysoptions.py:322 +#: lutris/sysoptions.py:329 msgid "Request a set of optimisations be temporarily applied to the host OS" msgstr "" "Einen Satz an Optimierungen anfordern, die an das Wirtsystem angewandt wird" -#: lutris/sysoptions.py:329 +#: lutris/sysoptions.py:336 msgid "Enable NVIDIA Prime Render Offload" msgstr "Aktiviere NVIDIA PRIME Render Offload" -#: lutris/sysoptions.py:330 +#: lutris/sysoptions.py:337 msgid "" "If you have the latest NVIDIA driver and the properly patched xorg-server " "(see https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/" @@ -4949,11 +5310,11 @@ msgstr "" "__NV_PRIME_RENDER_OFFLOAD=1 und __GLX_VENDOR_LIBRARY_NAME=nvidia als " "Umgebungsvariabeln anwenden." -#: lutris/sysoptions.py:341 +#: lutris/sysoptions.py:348 msgid "Use discrete graphics" msgstr "Nutze die diskrete Grafikkarte" -#: lutris/sysoptions.py:343 +#: lutris/sysoptions.py:350 msgid "" "If you have open source graphic drivers (Mesa), selecting this option will " "run the game with the 'DRI_PRIME=1' environment variable, activating your " @@ -4963,11 +5324,11 @@ msgstr "" "Spiel mit der Umgebungsvariable 'DRI_PRIME=1' starten, welches den diskreten " "Grafikchip für hohe 3D-Leistung aktiviert." -#: lutris/sysoptions.py:351 +#: lutris/sysoptions.py:358 msgid "SDL 1.2 Fullscreen Monitor" msgstr "SDL-1.2-Vollbildmonitor" -#: lutris/sysoptions.py:355 +#: lutris/sysoptions.py:362 msgid "" "Hint SDL 1.2 games to use a specific monitor when going fullscreen by " "setting the SDL_VIDEO_FULLSCREEN environment variable" @@ -4975,11 +5336,11 @@ msgstr "" "Weise SDL-1.2-Spiele auf die Nutzung eines bestimmten Monitors, wenn es in " "dem Vollbild geht mit der Umgebungsvariable SDL_VIDEO_FULLSCREEN" -#: lutris/sysoptions.py:362 +#: lutris/sysoptions.py:369 msgid "Turn off monitors except" msgstr "Monitore ausschalten, außer" -#: lutris/sysoptions.py:366 +#: lutris/sysoptions.py:374 msgid "" "Only keep the selected screen active while the game is running. \n" "This is useful if you have a dual-screen setup, and are \n" @@ -4989,19 +5350,19 @@ msgstr "" "Dies ist nützlich, wenn Sie eine Doppelbildschirmeinrichtung haben \n" "und Anzeige-Probleme dadurch im Vollbildmodus bekommen." -#: lutris/sysoptions.py:374 +#: lutris/sysoptions.py:382 msgid "Switch resolution to" msgstr "Auflösung setzen auf" -#: lutris/sysoptions.py:377 +#: lutris/sysoptions.py:386 msgid "Switch to this screen resolution while the game is running." msgstr "Setze auf diese Bildauflösung während das Spiel läuft." -#: lutris/sysoptions.py:381 +#: lutris/sysoptions.py:390 msgid "CLI mode" msgstr "Kommandozeilenmodus" -#: lutris/sysoptions.py:385 +#: lutris/sysoptions.py:394 msgid "" "Enable a terminal for text-based games. Only useful for ASCII based games. " "May cause issues with graphical games." @@ -5009,11 +5370,11 @@ msgstr "" "Aktiviere die Konsole für textbasierte Spiele. Nur nützlich für ASCII-" "basierte Spiele. Kann Probleme bei graphischen Spielen verursachen." -#: lutris/sysoptions.py:390 +#: lutris/sysoptions.py:399 msgid "Text based games emulator" msgstr "Text-basierter Spieleemulator" -#: lutris/sysoptions.py:395 +#: lutris/sysoptions.py:404 msgid "" "The terminal emulator used with the CLI mode. Choose from the list of " "detected terminal apps or enter the terminal's command or path." @@ -5021,69 +5382,69 @@ msgstr "" "Der Konsolen-Emulator wird im Kommandozeilenmodus genutzt. Wähle von der " "Liste die erkannten Programme oder gebe einen Konsolenbefehl oder Pfad ein." -#: lutris/sysoptions.py:402 +#: lutris/sysoptions.py:411 msgid "Environment variables" msgstr "Umgebungsvariablen" -#: lutris/sysoptions.py:403 +#: lutris/sysoptions.py:412 msgid "Environment variables loaded at run time" msgstr "Umgebungsvariablen, die beim Start geladen werden" -#: lutris/sysoptions.py:408 +#: lutris/sysoptions.py:417 msgid "AntiMicroX Profile" msgstr "AntiMicroX-Profil" -#: lutris/sysoptions.py:410 +#: lutris/sysoptions.py:419 msgid "Path to an AntiMicroX profile file" msgstr "Pfad zu der Datei des AntiMicroX-Profils" -#: lutris/sysoptions.py:415 +#: lutris/sysoptions.py:424 msgid "Command prefix" msgstr "Befehlpräfix" -#: lutris/sysoptions.py:417 +#: lutris/sysoptions.py:426 msgid "" "Command line instructions to add in front of the game's execution command." msgstr "" "Befehlszeilenanweisungen zum Hinzufügen vor dem Startbefehl des Spiels." -#: lutris/sysoptions.py:423 +#: lutris/sysoptions.py:432 msgid "Manual script" msgstr "Manuelles Skript" -#: lutris/sysoptions.py:425 +#: lutris/sysoptions.py:434 msgid "Script to execute from the game's contextual menu" msgstr "Skript, das vom kontextabhängigen Spielmenü ausgeführt wird" -#: lutris/sysoptions.py:430 +#: lutris/sysoptions.py:439 msgid "Pre-launch script" msgstr "Vorgelagertes Skript" -#: lutris/sysoptions.py:432 +#: lutris/sysoptions.py:441 msgid "Script to execute before the game starts" msgstr "Skript, das vor dem Spielstart ausgeführt wird" -#: lutris/sysoptions.py:437 +#: lutris/sysoptions.py:446 msgid "Wait for pre-launch script completion" msgstr "Warte auf den Abschluss des vorgelagerten Skripts" -#: lutris/sysoptions.py:440 +#: lutris/sysoptions.py:449 msgid "Run the game only once the pre-launch script has exited" msgstr "Starte das Spiel erst, wenn das vorgelagerte Skript beendet wurde" -#: lutris/sysoptions.py:445 +#: lutris/sysoptions.py:454 msgid "Post-exit script" msgstr "Nach-Beendenskript" -#: lutris/sysoptions.py:447 +#: lutris/sysoptions.py:456 msgid "Script to execute when the game exits" msgstr "Skript, das nach dem Beenden des Spiels ausgeführt wird" -#: lutris/sysoptions.py:455 +#: lutris/sysoptions.py:461 msgid "Include processes" msgstr "Prozesse einbeziehen" -#: lutris/sysoptions.py:458 +#: lutris/sysoptions.py:463 msgid "" "What processes to include in process monitoring. This is to override the " "built-in exclude list.\n" @@ -5095,11 +5456,11 @@ msgstr "" "Es ist eine mit Leerzeichen getrennte Liste. Prozesse die einen Leerzeichen " "haben können in Anführungszeichen eingeschlossen werden." -#: lutris/sysoptions.py:469 +#: lutris/sysoptions.py:471 msgid "Exclude processes" msgstr "Prozesse aussschließen" -#: lutris/sysoptions.py:472 +#: lutris/sysoptions.py:473 msgid "" "What processes to exclude in process monitoring. For example background " "processes that stick around after the game has been closed.\n" @@ -5111,11 +5472,11 @@ msgstr "" "Es ist eine mit Leerzeichen getrennte Liste. Prozesse die einen Leerzeichen " "haben können in Anführungszeichen eingeschlossen werden." -#: lutris/sysoptions.py:484 +#: lutris/sysoptions.py:482 msgid "Killswitch file" msgstr "Ausschaltdatei" -#: lutris/sysoptions.py:487 +#: lutris/sysoptions.py:484 msgid "" "Path to a file which will stop the game when deleted \n" "(usually /dev/input/js0 to stop the game on joystick unplugging)" @@ -5124,11 +5485,11 @@ msgstr "" "(typischerweise /dev/input/js0 zum Beenden des Spiels beim Joystick-" "Ausstecken)" -#: lutris/sysoptions.py:497 +#: lutris/sysoptions.py:491 msgid "SDL2 gamepad mapping" msgstr "SDL2-Gamepad-Belegung" -#: lutris/sysoptions.py:500 +#: lutris/sysoptions.py:493 msgid "" "SDL_GAMECONTROLLERCONFIG mapping string or path to a custom gamecontrollerdb." "txt file containing mappings." @@ -5136,86 +5497,120 @@ msgstr "" "SDL_GAMECONTROLLERCONFIG belegt die Tasten mit Zeichenketten oder einen Pfad " "zum benutzerdefinierten gamecontrollerdb.txt-Datei mit der Tastenbelegung." -#: lutris/sysoptions.py:507 +#: lutris/sysoptions.py:498 msgid "Use Xephyr" msgstr "Nutze Xephyr" -#: lutris/sysoptions.py:512 +#: lutris/sysoptions.py:502 msgid "8BPP (256 colors)" msgstr "8BPP (256 Farben)" -#: lutris/sysoptions.py:513 +#: lutris/sysoptions.py:503 msgid "16BPP (65536 colors)" msgstr "16BPP (65536 Farben)" -#: lutris/sysoptions.py:514 +#: lutris/sysoptions.py:504 msgid "24BPP (16M colors)" msgstr "24BPP (16M Farben)" -#: lutris/sysoptions.py:521 +#: lutris/sysoptions.py:508 msgid "Run program in Xephyr to support 8BPP and 16BPP color modes" msgstr "" "Starte das Programm in Xephyr zum Unterstützen der 8BPP- und 16BPP-Farbmodi" -#: lutris/sysoptions.py:526 +#: lutris/sysoptions.py:513 msgid "Xephyr resolution" msgstr "Xephyr-Auflösung" -#: lutris/sysoptions.py:528 +#: lutris/sysoptions.py:515 msgid "Screen resolution of the Xephyr server" msgstr "Bildschirmauflösung des Xephyr-Servers" -#: lutris/sysoptions.py:533 +#: lutris/sysoptions.py:520 msgid "Xephyr Fullscreen" msgstr "Xephyr im Vollbild" -#: lutris/sysoptions.py:536 +#: lutris/sysoptions.py:523 msgid "Open Xephyr in fullscreen (at the desktop resolution)" msgstr "Öffne Xephyr im Vollbild (an der Schreibtisch-Auflösung)" -#: lutris/util/wine/dll_manager.py:61 +#: lutris/util/system.py:20 +#, fuzzy +msgid "Documents" +msgstr "Argumente" + +#: lutris/util/system.py:21 +#, fuzzy +msgid "Downloads" +msgstr "Herunterladen" + +#: lutris/util/system.py:22 +msgid "Desktop" +msgstr "" + +#: lutris/util/system.py:23 lutris/util/system.py:25 +msgid "Pictures" +msgstr "" + +#: lutris/util/system.py:24 +#, fuzzy +msgid "Videos" +msgstr "Video" + +#: lutris/util/system.py:26 +msgid "Projects" +msgstr "" + +#: lutris/util/ubisoft/client.py:102 +#, python-format +msgid "Ubisoft authentication has been lost: %s" +msgstr "" + +#: lutris/util/wine/dll_manager.py:63 msgid "Manual" msgstr "Manuell" -#: lutris/util/wine/wine.py:348 lutris/util/wine/wine.py:386 -#: lutris/util/wine/wine.py:406 +#: lutris/util/wine/wine.py:346 lutris/util/wine/wine.py:384 +#: lutris/util/wine/wine.py:404 msgid "Launch anyway and do not show this message again." msgstr "Starte trotzdem und zeige diese Nachricht nicht noch einmal an." -#: lutris/util/wine/wine.py:350 lutris/util/wine/wine.py:388 -#: lutris/util/wine/wine.py:408 +#: lutris/util/wine/wine.py:348 lutris/util/wine/wine.py:386 +#: lutris/util/wine/wine.py:406 msgid "Enable anyway and do not show this message again." msgstr "Aktiviere trotzdem und zeige diese Nachricht nicht noch einmal an." -#: lutris/util/wine/wine.py:355 +#: lutris/util/wine/wine.py:353 msgid "Vulkan is not installed or is not supported by your system" msgstr "" "Vulkan ist nicht installiert oder wird auf Ihrem System nicht unterstützt" -#: lutris/util/wine/wine.py:357 +#: lutris/util/wine/wine.py:355 +#, fuzzy msgid "" "If you have compatible hardware, please follow the installation procedures " "as described in\n" -"How-to:-DXVK " -"(https://github.com/lutris/lutris/wiki/How-to:-DXVK)" +"How-to:-" +"DXVK (https://github.com/lutris/docs/blob/master/HowToDXVK.md)" msgstr "" "Wenn Sie ein kompatibles Gerät haben, folgen Sie die " "Installationsanweisungen, wie hier auf Englisch beschrieben\n" "How-to:-DXVK " "(https://github.com/lutris/lutris/wiki/How-to:-DXVK)" -#: lutris/util/wine/wine.py:369 +#: lutris/util/wine/wine.py:367 +#, fuzzy msgid "" "Your limits are not set correctly. Please increase them as described here: " -"How-to:-Esync " -"(https://github.com/lutris/lutris/wiki/How-to:-Esync)" +"How-to:-" +"Esync (https://github.com/lutris/docs/blob/master/HowToEsync.md)" msgstr "" "Die gesetzte Begrenzung ist ungültig. Bitte erhöhen Sie den Wert, wie hier " "auf Englisch beschrieben: How-to:-Esync (https://github.com/lutris/lutris/wiki/How-to:-" "Esync)" -#: lutris/util/wine/wine.py:378 +#: lutris/util/wine/wine.py:376 msgid "" "Your kernel is not patched for fsync. Please get a patched kernel to use " "fsync." @@ -5223,11 +5618,11 @@ msgstr "" "Ihr Systemkern ist nicht für fsync gepatcht. Bitte verwenden Sie einen " "gepatchten Systemkern, um fsync zu nutzen." -#: lutris/util/wine/wine.py:392 lutris/util/wine/wine.py:412 +#: lutris/util/wine/wine.py:390 lutris/util/wine/wine.py:410 msgid "Incompatible Wine version detected" msgstr "Inkompatible Wine-Version erkannt" -#: lutris/util/wine/wine.py:394 +#: lutris/util/wine/wine.py:392 msgid "" "The Wine build you have selected does not support Esync.\n" "Please switch to an Esync-capable version." @@ -5235,7 +5630,7 @@ msgstr "" "Die von Ihnen ausgewählte Wine-Version unterstützt keinen Esync.\n" "Bitte wechseln Sie zu einer Esync-fähigen Version." -#: lutris/util/wine/wine.py:414 +#: lutris/util/wine/wine.py:412 msgid "" "The Wine build you have selected does not support Fsync.\n" "Please switch to an Fsync-capable version." @@ -5243,6 +5638,43 @@ msgstr "" "Die von Ihnen ausgewählte Wine-Version unterstützt keinen Fsync.\n" "Bitte wechseln Sie zu einer Fsync-fähigen Version." +#~ msgid "Runner not installed." +#~ msgstr "Starter nicht installiert." + +#~ msgid "An error prevented the game from running" +#~ msgstr "Ein Fehler hat die Ausführung des Spiels verhindert" + +#, python-format +#~ msgid "In use by %d game" +#~ msgid_plural "In use by %d games" +#~ msgstr[0] "In Nutzung von %d Spiel" +#~ msgstr[1] "In Nutzung von %d Spielen" + +#~ msgid "Not in use" +#~ msgstr "Nicht in Nutzung" + +#~ msgid "Stop Steam after game exits" +#~ msgstr "Stoppe Steam nach dem das Spiel beendet ist" + +#~ msgid "" +#~ "Shut down Steam after the game has quit\n" +#~ "(only if Steam was started by Lutris)" +#~ msgstr "" +#~ "Steam beenden nach dem das Spiel verlassen wurde\n" +#~ "(nur wenn Steam mit Lutris gestartet wurde)" + +#~ msgid "Kill all Wine processes" +#~ msgstr "Beende alle Wine-Prozesse" + +#~ msgid "Enabled (Vulkan)" +#~ msgstr "Aktiviert (Vulkan)" + +#~ msgid "Enabled (OpenGL)" +#~ msgstr "Aktiviert (OpenGL)" + +#~ msgid "Enabled (OpenGL, 32bit)" +#~ msgstr "Aktiviert (OpenGL, 32-Bit)" + #~ msgid "open source gaming platform" #~ msgstr "quelloffene Spieleplattform" @@ -5303,9 +5735,6 @@ msgstr "" #~ msgid "platforms" #~ msgstr "Plattformen" -#~ msgid "Install Runner" -#~ msgstr "Starter installieren" - #~ msgid "Configure Runner" #~ msgstr "Starter konfigurieren" @@ -5340,9 +5769,6 @@ msgstr "" #~ msgid "Copy System Info" #~ msgstr "Kopiere Systeminfo" -#~ msgid "Install runners" -#~ msgstr "Starter installieren" - #~ msgid "System preferences" #~ msgstr "Systemeinstellungen" @@ -5352,12 +5778,6 @@ msgstr "" #~ msgid "Multiple platforms" #~ msgstr "Mehrere Plattformen" -#~ msgid "Download" -#~ msgstr "Herunterladen" - -#~ msgid "Use cache" -#~ msgstr "Nutze Zwischenspeicher" - #~ msgid "Use search to find games on winegame.net" #~ msgstr "Nutze die Suchleiste um Spiele auf winegame.net zu finden" diff --git a/po/es.po b/po/es.po index ff49ada04631b90674369879c1c5992b5d1eaf3f..071b32ae360d8f06d6c6f19044e87bd06be7b5e9 100644 --- a/po/es.po +++ b/po/es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: lutris\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-02 16:24+0200\n" +"POT-Creation-Date: 2022-06-20 16:54+0200\n" "PO-Revision-Date: 2022-04-02 16:32+0200\n" "Last-Translator: Miguel Barrio Orsikowsky \n" "Language-Team: \n" @@ -14,7 +14,6 @@ msgstr "" "X-Generator: Poedit 3.0.1\n" #: share/applications/net.lutris.Lutris.desktop:3 -#: share/metainfo/net.lutris.Lutris.metainfo.xml:10 #: share/lutris/ui/lutris-window.ui:25 lutris/gui/application.py:76 #: lutris/gui/widgets/status_icon.py:116 lutris/services/lutris.py:39 msgid "Lutris" @@ -28,10 +27,6 @@ msgstr "plataforma de preservación de videojuegos" msgid "gaming;wine;emulator;" msgstr "juego;wine;emulador;" -#: share/metainfo/net.lutris.Lutris.metainfo.xml:8 -msgid "Lutris Team" -msgstr "El equipo de Lutris" - #: share/metainfo/net.lutris.Lutris.metainfo.xml:11 #: share/lutris/ui/about-dialog.ui:18 msgid "Video game preservation platform" @@ -199,6 +194,7 @@ msgstr "" "su sistema:\n" "{libs}" +#. Local services don't show an install dialog, they can be launched directly #: lutris/game_actions.py:60 lutris/gui/widgets/game_bar.py:201 #: lutris/gui/widgets/game_bar.py:215 msgid "Play" @@ -293,11 +289,11 @@ msgstr "Ocultar juego de la biblioteca" msgid "Unhide game from library" msgstr "Mostrar juego en la biblioteca" -#: lutris/game_actions.py:187 +#: lutris/game_actions.py:185 msgid "Log for {}" msgstr "Registro para {}" -#: lutris/game_actions.py:222 +#: lutris/game_actions.py:220 #, python-format msgid "" "Do you wish to duplicate %s?\n" @@ -307,15 +303,15 @@ msgstr "" "¿Quieres duplicar %s?\n" "Se duplicará la configuración, pero no los ficheros del juego." -#: lutris/game_actions.py:225 +#: lutris/game_actions.py:223 msgid "Duplicate game?" msgstr "¿Duplicar el juego?" -#: lutris/game_actions.py:286 +#: lutris/game_actions.py:284 msgid "This game has no installation directory" msgstr "Este juego no tiene directorio de instalación" -#: lutris/game_actions.py:290 +#: lutris/game_actions.py:288 #, python-format msgid "" "Can't open %s \n" @@ -362,27 +358,23 @@ msgstr "Error no controlado: %s" msgid "Tried to launch a game that isn't installed." msgstr "Se ha intentado lanzar un juego que no está instalado." -#: lutris/game.py:301 +#: lutris/game.py:300 lutris/game.py:417 msgid "Invalid game configuration: Missing runner" msgstr "Configuración del juego no válida: Falta un ejecutor" -#: lutris/game.py:306 -msgid "Runner not installed." -msgstr "El ejecutor no está instalado." - -#: lutris/game.py:312 +#: lutris/game.py:309 msgid "Runtime currently updating" msgstr "Actualizando tiempo de ejecución" -#: lutris/game.py:312 +#: lutris/game.py:309 msgid "Game might not work as expected" msgstr "El juego puede no funcionar como se espera" -#: lutris/game.py:345 +#: lutris/game.py:342 msgid "Unable to find Xephyr, install it or disable the Xephyr option" msgstr "No se ha encontrado Xephyr, instálelo o desactive la opción" -#: lutris/game.py:401 +#: lutris/game.py:398 #, python-format msgid "" "The selected terminal application could not be launched:\n" @@ -391,15 +383,16 @@ msgstr "" "La aplicación de terminal seleccionada no se ha podido lanzar:\n" "%s" -#: lutris/game.py:461 -msgid "An error prevented the game from running" -msgstr "Un error ha impedido que el juego se ejecute" +#. The 'file' sort of gameplay_info cannot be made to use a configuration +#: lutris/game.py:434 +msgid "The runner could not find a command to apply the configuration to." +msgstr "" -#: lutris/game.py:653 +#: lutris/game.py:635 msgid "Error lauching the game:\n" msgstr "Error al lanzar el juego:\n" -#: lutris/game.py:745 +#: lutris/game.py:727 #, python-format msgid "" "Error: Missing shared library.\n" @@ -410,7 +403,7 @@ msgstr "" "\n" "%s" -#: lutris/game.py:751 +#: lutris/game.py:733 msgid "" "Error: A different Wine version is already using the same Wine prefix." msgstr "" @@ -461,6 +454,10 @@ msgstr "Configurar manualmente un juego disponible localmente" msgid "Add games to Lutris" msgstr "Añadir juegos a Lutris" +#: lutris/gui/addgameswindow.py:126 +msgid "Search Lutris.net" +msgstr "" + #: lutris/gui/addgameswindow.py:149 msgid "Select folder to scan" msgstr "Seleccionar carpeta para explorar" @@ -483,10 +480,25 @@ msgstr "{total_count} resultados, solo se muestran los primeros {count}" msgid "Select setup file" msgstr "Seleccionar archivo de instalación" +#: lutris/gui/addgameswindow.py:245 +#, fuzzy +msgid "Game name" +msgstr "Información del juego" + #: lutris/gui/addgameswindow.py:249 msgid "Continue" msgstr "Continuar" +#: lutris/gui/addgameswindow.py:257 +#, fuzzy +msgid "Setup file" +msgstr "Seleccionar archivo" + +#: lutris/gui/addgameswindow.py:266 +#, fuzzy +msgid "Select the setup file" +msgstr "Seleccionar archivo de instalación" + #: lutris/gui/addgameswindow.py:279 msgid "Select a Lutris installer" msgstr "Seleccione un instalador de Lutris" @@ -777,6 +789,7 @@ msgstr "Opciones del ejecutor" msgid "System options" msgstr "Opciones del sistema" +#. Advanced settings checkbox #: lutris/gui/config/common.py:322 msgid "Show advanced options" msgstr "Mostrar opciones avanzadas" @@ -1201,7 +1214,7 @@ msgstr "" "¿Eliminar %s completamente de la biblioteca? Se perderá todo el tiempo de " "juego." -#: lutris/gui/dialogs/webconnect_dialog.py:92 +#: lutris/gui/dialogs/webconnect_dialog.py:106 msgid "Loading..." msgstr "Cargando..." @@ -1215,6 +1228,26 @@ msgstr "Juego de Steam {appid}" msgid "{file} on {host}" msgstr "{file} en {host}" +#: lutris/gui/installer/file_box.py:121 +#, fuzzy +msgid "Download" +msgstr "Descargas" + +#: lutris/gui/installer/file_box.py:123 +#, fuzzy +msgid "Use Cache" +msgstr "Usar caché" + +#: lutris/gui/installer/file_box.py:125 lutris/runners/steam.py:29 +#: lutris/services/steam.py:73 +msgid "Steam" +msgstr "Steam" + +#: lutris/gui/installer/file_box.py:126 +#, fuzzy +msgid "Select File" +msgstr "Seleccionar archivo" + #: lutris/gui/installer/file_box.py:187 msgid "Cache file for future installations" msgstr "Archivos de caché para futuras instalaciones" @@ -1495,8 +1528,8 @@ msgstr "Salir" msgid "One of {params} parameter is mandatory for the {cmd} command" msgstr "Uno de los parámetros {params} es obligatorio para el comando {cmd}" -#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:122 -#: lutris/installer/interpreter.py:145 +#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:123 +#: lutris/installer/interpreter.py:146 msgid " or " msgstr " o " @@ -1637,11 +1670,11 @@ msgstr "La clave de configuración del juego debe ser una cadena" msgid "Invalid 'game' section" msgstr "Sección 'game' no válida" -#: lutris/installer/interpreter.py:52 +#: lutris/installer/interpreter.py:53 msgid "This installer doesn't have a 'script' section" msgstr "El instalador no tiene una sección 'script'" -#: lutris/installer/interpreter.py:56 +#: lutris/installer/interpreter.py:57 msgid "" "Invalid script: \n" "{}" @@ -1649,38 +1682,38 @@ msgstr "" "Guion no valido: \n" "{}" -#: lutris/installer/interpreter.py:122 lutris/installer/interpreter.py:125 +#: lutris/installer/interpreter.py:123 lutris/installer/interpreter.py:126 #, python-format msgid "This installer requires %s on your system" msgstr "Este instalador requiere %s en su sistema" -#: lutris/installer/interpreter.py:138 +#: lutris/installer/interpreter.py:139 msgid "You need to install {} before" msgstr "Debes instalar {} antes" -#: lutris/installer/interpreter.py:186 +#: lutris/installer/interpreter.py:187 msgid "Lutris does not have the necessary permissions to install to path:" msgstr "Lutris no tiene los permisos necesarios para instalar en la ruta:" -#: lutris/installer/interpreter.py:270 +#: lutris/installer/interpreter.py:271 #, python-format msgid "Invalid runner provided %s" msgstr "Se ha proporcionado un ejecutor %s no válido" -#: lutris/installer/interpreter.py:296 +#: lutris/installer/interpreter.py:297 msgid "Installing game data" msgstr "Instalando los datos del juego" -#: lutris/installer/interpreter.py:308 +#: lutris/installer/interpreter.py:309 msgid "Installer commands are not formatted correctly" msgstr "Los comandos del instalador no están correctamente formateados" -#: lutris/installer/interpreter.py:340 +#: lutris/installer/interpreter.py:342 #, python-format msgid "The command \"%s\" does not exist." msgstr "No existe el comando \"%s\"." -#: lutris/installer/interpreter.py:356 +#: lutris/installer/interpreter.py:363 #, python-format msgid "" "The executable at path %s can't be found, please check the destination " @@ -1691,7 +1724,7 @@ msgstr "" "Es posible que algunas partes del proceso de instalación no se hayan " "completado correctamente." -#: lutris/installer/interpreter.py:362 +#: lutris/installer/interpreter.py:369 msgid "Installation completed!" msgstr "¡Instalación completada!" @@ -1935,7 +1968,7 @@ msgstr "Ejecuta los juegos de RPG Maker 2000/2003" #: lutris/runners/easyrpg.py:12 lutris/runners/linux.py:14 #: lutris/runners/linux.py:16 lutris/runners/residualvm.py:15 -#: lutris/runners/scummvm.py:14 lutris/runners/steam.py:43 +#: lutris/runners/scummvm.py:14 lutris/runners/steam.py:30 #: lutris/runners/zdoom.py:15 msgid "Linux" msgstr "Linux" @@ -1971,7 +2004,7 @@ msgstr "Desactivar la detección automática del motor simulado." #: lutris/runners/easyrpg.py:41 lutris/runners/fsuae.py:50 #: lutris/runners/mame.py:173 lutris/runners/wine.py:82 -#: lutris/runners/wine.py:417 +#: lutris/runners/wine.py:416 msgid "Auto" msgstr "Auto" @@ -2162,7 +2195,7 @@ msgstr "" "Desmarcar para desactivar VSync y utilizar el límite de FPS. VSync puede no " "ser compatible con todas las plataformas." -#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:315 +#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:318 msgid "FPS limit" msgstr "Límite de FPS" @@ -2177,7 +2210,7 @@ msgstr "" "el limitador de fotogramas. Esta opción puede no ser compatible con todas " "las plataformas." -#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:443 +#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:442 msgid "Show FPS" msgstr "Mostrar FPS" @@ -2186,7 +2219,7 @@ msgid "Enable frames per second counter." msgstr "Activar el contador de fotogramas por segundo." #: lutris/runners/easyrpg.py:209 lutris/runners/mednafen.py:85 -#: lutris/runners/wine.py:440 lutris/sysoptions.py:302 +#: lutris/runners/wine.py:439 msgid "Disabled" msgstr "Desactivado" @@ -2832,11 +2865,11 @@ msgstr "Archivo de configuración" msgid "Verbose logging" msgstr "Registro verboso" -#: lutris/runners/libretro.py:273 +#: lutris/runners/libretro.py:271 msgid "No core has been selected for this game" msgstr "No se ha seleccionado ningún núcleo para este juego" -#: lutris/runners/libretro.py:284 +#: lutris/runners/libretro.py:282 msgid "No game file specified" msgstr "No se ha especificado ningún archivo de juego" @@ -2853,8 +2886,8 @@ msgid "The game's main executable file" msgstr "El archivo ejecutable principal del juego" #: lutris/runners/linux.py:30 lutris/runners/mame.py:124 -#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:60 -#: lutris/runners/steam.py:122 lutris/runners/wine.py:54 +#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:47 +#: lutris/runners/steam.py:99 lutris/runners/wine.py:54 #: lutris/runners/zdoom.py:27 msgid "Arguments" msgstr "Argumentos" @@ -3351,7 +3384,7 @@ msgstr "Phillips Videopac+" msgid "Brandt Jopac" msgstr "Brandt Jopac" -#: lutris/runners/o2em.py:36 lutris/runners/wine.py:398 +#: lutris/runners/o2em.py:36 lutris/runners/wine.py:397 msgid "Disable" msgstr "Desactivar" @@ -3652,6 +3685,7 @@ msgstr "" msgid "ResidualVM" msgstr "ResidualVM" +#. TODO #: lutris/runners/residualvm.py:16 msgid "3D point-and-click adventure games engine" msgstr "Motor de juegos de aventuras 3D de apuntar y pulsar" @@ -3696,11 +3730,11 @@ msgstr "Sony PlayStation 3" msgid "Path to EBOOT.BIN" msgstr "Ruta a EBOOT.BIN" -#: lutris/runners/runner.py:145 +#: lutris/runners/runner.py:148 msgid "Custom executable for the runner" msgstr "Ejecutable personalizado para el ejecutor" -#: lutris/runners/runner.py:289 +#: lutris/runners/runner.py:293 msgid "" "The required runner is not installed.\n" "Do you wish to install it now?" @@ -3708,7 +3742,7 @@ msgstr "" "El ejecutor requerido no está instalado.\n" "¿Desea instalarlo ahora?" -#: lutris/runners/runner.py:291 +#: lutris/runners/runner.py:295 msgid "Required runner unavailable" msgstr "Ejecutor requerido no disponible" @@ -4031,19 +4065,15 @@ msgstr "" msgid "Sound driver" msgstr "Controlador de sonido" -#: lutris/runners/steam.py:41 +#: lutris/runners/steam.py:28 msgid "Runs Steam for Linux games" msgstr "Ejecuta Steam para los juegos de Linux" -#: lutris/runners/steam.py:42 lutris/services/steam.py:73 -msgid "Steam" -msgstr "Steam" - -#: lutris/runners/steam.py:48 +#: lutris/runners/steam.py:35 msgid "Application ID" msgstr "ID de la aplicación" -#: lutris/runners/steam.py:51 +#: lutris/runners/steam.py:38 msgid "" "The application ID can be retrieved from the game's page at steampowered." "com. Example: 235320 is the app ID for Original War in: \n" @@ -4054,7 +4084,7 @@ msgstr "" "War en: \n" "http://store.steampowered.com/app/235320/" -#: lutris/runners/steam.py:62 +#: lutris/runners/steam.py:49 msgid "" "Command line arguments used when launching the game.\n" "Ignored when Steam Big Picture mode is enabled." @@ -4062,42 +4092,30 @@ msgstr "" "Argumentos de la línea de comandos utilizados al lanzar el juego.\n" "Se ignora cuando el modo Steam Big Picture está activado." -#: lutris/runners/steam.py:68 +#: lutris/runners/steam.py:55 msgid "DRM free mode (Do not launch Steam)" msgstr "Modo sin DRM (no se inicia Steam)" -#: lutris/runners/steam.py:73 +#: lutris/runners/steam.py:60 msgid "" "Run the game directly without Steam, requires the game binary path to be set" msgstr "" "Ejecutar el juego directamente sin Steam, requiere que se establezca la ruta " "al binario del juego" -#: lutris/runners/steam.py:79 +#: lutris/runners/steam.py:66 msgid "Game binary path" msgstr "Ruta al binario del juego" -#: lutris/runners/steam.py:81 +#: lutris/runners/steam.py:68 msgid "Path to the game executable (Required by DRM free mode)" msgstr "Ruta de acceso al ejecutable del juego (requerido por el modo sin DRM)" -#: lutris/runners/steam.py:87 -msgid "Stop Steam after game exits" -msgstr "Detener Steam después de salir del juego" - -#: lutris/runners/steam.py:91 -msgid "" -"Shut down Steam after the game has quit\n" -"(only if Steam was started by Lutris)" -msgstr "" -"Apagar Steam después de que el juego haya terminado\n" -"(sólo si Steam fue iniciado por Lutris)" - -#: lutris/runners/steam.py:97 +#: lutris/runners/steam.py:74 msgid "Start Steam in Big Picture mode" msgstr "Iniciar Steam en el modo Big Picture" -#: lutris/runners/steam.py:101 +#: lutris/runners/steam.py:78 msgid "" "Launches Steam in Big Picture mode.\n" "Only works if Steam is not running or already running in Big Picture mode.\n" @@ -4108,11 +4126,11 @@ msgstr "" "modo Big Picture.\n" "Útil cuando se juega con un Steam Controller." -#: lutris/runners/steam.py:109 +#: lutris/runners/steam.py:86 msgid "Start Steam with LSI" msgstr "Iniciar Steam con LSI" -#: lutris/runners/steam.py:113 +#: lutris/runners/steam.py:90 msgid "" "Launches steam with LSI patches enabled. Make sure Lutris Runtime is " "disabled and you have LSI installed. https://github.com/solus-project/linux-" @@ -4122,12 +4140,12 @@ msgstr "" "ejecución de Lutris está desactivado y de que tiene instalado LSI. https://" "github.com/solus-project/linux-steam-integration" -#: lutris/runners/steam.py:124 +#: lutris/runners/steam.py:101 msgid "Extra command line arguments used when launching Steam" msgstr "" "Argumentos adicionales de la línea de comandos utilizados al lanzar Steam" -#: lutris/runners/steam.py:131 +#: lutris/runners/steam.py:108 msgid "Remove game data (through Steam)" msgstr "Eliminar los datos del juego (a través de Steam)" @@ -4580,10 +4598,11 @@ msgid "Enable Fsync" msgstr "Activar Fsync" #: lutris/runners/wine.py:317 +#, fuzzy msgid "" "Enable futex-based synchronization (fsync). This will increase performance " -"in applications that take advantage of multi-core processors. Requires a " -"custom kernel with the fsync patchset." +"in applications that take advantage of multi-core processors. Requires " +"kernel 5.16 or above." msgstr "" "Activar la sincronización basada en futex (fsync). Esto aumentará el " "rendimiento en las aplicaciones que aprovechan los procesadores multinúcleo. " @@ -4621,7 +4640,7 @@ msgstr "" #: lutris/runners/wine.py:346 msgid "Enable Easy Anti-Cheat" -msgstr "Activar anti-trampas Easy" +msgstr "Activar anti-trampas (Easy Anti-Cheat)" #: lutris/runners/wine.py:350 msgid "" @@ -4658,20 +4677,21 @@ msgid "Enable DPI Scaling" msgstr "Activar escalado de DPI" #: lutris/runners/wine.py:378 +#, fuzzy msgid "" "Enables the Windows application's DPI scaling.\n" -"Otherwise, disables DPI scaling by using 96 DPI.\n" -"This corresponds to Wine's Screen Resolution option." +"Otherwise, the Screen Resolution option in 'Wine configuration' controls " +"this." msgstr "" "Activa el escalado de DPI de la aplicación de Windows.\n" "De lo contrario, desactiva el escalado de DPI usando 96 DPI.\n" "Esto se corresponde con la opción de Resolución de Pantalla de Wine." -#: lutris/runners/wine.py:385 +#: lutris/runners/wine.py:384 msgid "DPI" msgstr "DPI" -#: lutris/runners/wine.py:388 +#: lutris/runners/wine.py:387 msgid "" "The DPI to be used if 'Enable DPI Scaling' is turned on.\n" "If blank or 'auto', Lutris will auto-detect this." @@ -4679,19 +4699,19 @@ msgstr "" "El valor de DPI a usar si está activada la opción 'escalado de DPI'.\n" "Si se deja en blanco o 'auto', Lutris lo detectará automáticamente." -#: lutris/runners/wine.py:394 +#: lutris/runners/wine.py:393 msgid "Mouse Warp Override" msgstr "Anulación de la reubicación del ratón" -#: lutris/runners/wine.py:397 +#: lutris/runners/wine.py:396 msgid "Enable" msgstr "Activar" -#: lutris/runners/wine.py:399 +#: lutris/runners/wine.py:398 msgid "Force" msgstr "Forzar" -#: lutris/runners/wine.py:404 +#: lutris/runners/wine.py:403 msgid "" "Override the default mouse pointer warping behavior\n" "Enable: (Wine default) warp the pointer when the mouse is exclusively " @@ -4705,11 +4725,11 @@ msgstr "" "Desactivar: no reubicar nunca el puntero del ratón \n" "Forzar: siempre se reubica el puntero" -#: lutris/runners/wine.py:413 +#: lutris/runners/wine.py:412 msgid "Audio driver" msgstr "Controlador de audio" -#: lutris/runners/wine.py:424 +#: lutris/runners/wine.py:423 msgid "" "Which audio backend to use.\n" "By default, Wine automatically picks the right one for your system." @@ -4717,45 +4737,45 @@ msgstr "" "Qué código de audio utilizar.\n" "Por defecto, Wine elige automáticamente el adecuado para tu sistema." -#: lutris/runners/wine.py:432 +#: lutris/runners/wine.py:431 msgid "DLL overrides" msgstr "Anulaciones de DLL" -#: lutris/runners/wine.py:433 +#: lutris/runners/wine.py:432 msgid "Sets WINEDLLOVERRIDES when launching the game." msgstr "Establece WINEDLLOVERRIDES al lanzar el juego." -#: lutris/runners/wine.py:437 +#: lutris/runners/wine.py:436 msgid "Output debugging info" msgstr "Salida de información de depuración" -#: lutris/runners/wine.py:441 lutris/sysoptions.py:303 +#: lutris/runners/wine.py:440 msgid "Enabled" msgstr "Activado" -#: lutris/runners/wine.py:442 +#: lutris/runners/wine.py:441 msgid "Inherit from environment" msgstr "Heredar del entorno" -#: lutris/runners/wine.py:444 +#: lutris/runners/wine.py:443 msgid "Full (CAUTION: Will cause MASSIVE slowdown)" msgstr "Completo (PRECAUCIÓN: Causará una ralentización MASIVA)" -#: lutris/runners/wine.py:447 +#: lutris/runners/wine.py:446 msgid "Output debugging information in the game log (might affect performance)" msgstr "" "Salida de información de depuración en el registro del juego (podría afectar " "al rendimiento)" -#: lutris/runners/wine.py:452 +#: lutris/runners/wine.py:451 msgid "Show crash dialogs" msgstr "Mostrar diálogos de fallos" -#: lutris/runners/wine.py:460 +#: lutris/runners/wine.py:459 msgid "Autoconfigure joypads" msgstr "Autoconfigurar mandos" -#: lutris/runners/wine.py:464 +#: lutris/runners/wine.py:463 msgid "" "Automatically disables one of Wine's detected joypad to avoid having 2 " "controllers detected" @@ -4763,11 +4783,11 @@ msgstr "" "Desactiva automáticamente uno de los mandos detectados por Wine para evitar " "que se detecten 2 mandos" -#: lutris/runners/wine.py:470 +#: lutris/runners/wine.py:469 msgid "Create a sandbox for Wine folders" msgstr "Crear una caja de arena para las carpetas de Wine" -#: lutris/runners/wine.py:474 +#: lutris/runners/wine.py:473 msgid "" "Do not use $HOME for desktop integration folders.\n" "By default, it use the directories in the confined Windows environment." @@ -4775,40 +4795,40 @@ msgstr "" "No use $HOME para las carpetas de integración del escritorio.\n" "Por defecto, usa los directorios del entorno Windows confinado." -#: lutris/runners/wine.py:482 +#: lutris/runners/wine.py:481 msgid "Sandbox directory" msgstr "Directorio de la caja de arena" -#: lutris/runners/wine.py:483 +#: lutris/runners/wine.py:482 msgid "Custom directory for desktop integration folders." msgstr "" "Directorio personalizado para las carpetas de integración del escritorio." -#: lutris/runners/wine.py:491 +#: lutris/runners/wine.py:490 msgid "Run EXE inside Wine prefix" msgstr "Ejecutar el EXE dentro del prefijo de Wine" -#: lutris/runners/wine.py:493 +#: lutris/runners/wine.py:492 msgid "Wine configuration" msgstr "Configuración de Wine" -#: lutris/runners/wine.py:495 +#: lutris/runners/wine.py:494 msgid "Open Bash terminal" msgstr "Abrir la terminal Bash" -#: lutris/runners/wine.py:496 +#: lutris/runners/wine.py:495 msgid "Open Wine console" msgstr "Abrir la consola de Wine" -#: lutris/runners/wine.py:497 +#: lutris/runners/wine.py:496 msgid "Wine registry" msgstr "Registro de Wine" -#: lutris/runners/wine.py:498 +#: lutris/runners/wine.py:497 msgid "Winetricks" msgstr "Winetricks" -#: lutris/runners/wine.py:499 +#: lutris/runners/wine.py:498 msgid "Wine Control Panel" msgstr "Panel de control de Wine" @@ -4820,6 +4840,7 @@ msgstr "Seleccione un archivo EXE o MSI" msgid "Yuzu" msgstr "Yuzu" +#. http://zdoom.org/wiki/Command_line_parameters #: lutris/runners/zdoom.py:13 msgid "ZDoom DOOM Game Engine" msgstr "Motor de juego ZDoom DOOM" @@ -4971,11 +4992,11 @@ msgstr "(c) 2010-2022 El equipo de Lutris" msgid "The Lutris team" msgstr "El equipo de Lutris" -#: lutris/startup.py:86 +#: lutris/startup.py:87 msgid "Your NVIDIA driver is outdated." msgstr "Tu controlador NVIDIA está obsoleto." -#: lutris/startup.py:88 +#: lutris/startup.py:89 #, python-format msgid "" "You are currently running driver %s which does not fully support all " @@ -4988,11 +5009,11 @@ msgstr "" "Actualice su controlador como se describe en nuestra guía de " "instalación" -#: lutris/startup.py:119 +#: lutris/startup.py:120 msgid "Missing vulkan libraries" msgstr "Faltan bibliotecas vulkan" -#: lutris/startup.py:121 +#: lutris/startup.py:122 #, python-format msgid "" "Lutris was unable to detect Vulkan support for the %s architecture.\n" @@ -5005,20 +5026,20 @@ msgstr "" "Para instalarlo, utilice la siguiente guía: Instalación de " "controladores gráficos" -#: lutris/startup.py:127 +#: lutris/startup.py:128 msgid " and " msgstr " y " -#: lutris/sysoptions.py:30 +#: lutris/sysoptions.py:29 msgid "Keep current" msgstr "Mantener actual" -#: lutris/sysoptions.py:38 lutris/sysoptions.py:47 lutris/sysoptions.py:58 -#: lutris/sysoptions.py:498 +#: lutris/sysoptions.py:37 lutris/sysoptions.py:46 lutris/sysoptions.py:57 +#: lutris/sysoptions.py:501 msgid "Off" msgstr "Apagado" -#: lutris/sysoptions.py:39 +#: lutris/sysoptions.py:38 msgid "Primary" msgstr "Principal" @@ -5026,31 +5047,31 @@ msgstr "Principal" msgid "Auto: WARNING -- No Vulkan Loader detected!" msgstr "Auto: ADVERTENCIA -- ¡No se ha detectado ningún cargador Vulkan!" -#: lutris/sysoptions.py:115 +#: lutris/sysoptions.py:119 msgid "Auto: Intel Open Source (MESA: ANV)" msgstr "Auto: Intel Open Source (MESA: ANV)" -#: lutris/sysoptions.py:117 +#: lutris/sysoptions.py:121 msgid "Auto: AMD RADV Open Source (MESA: RADV)" msgstr "Auto: AMD RADV Open Source (MESA: RADV)" -#: lutris/sysoptions.py:119 +#: lutris/sysoptions.py:123 msgid "Auto: Nvidia Proprietary" msgstr "Auto: Propietario de Nvidia" -#: lutris/sysoptions.py:136 +#: lutris/sysoptions.py:145 msgid "Default installation folder" msgstr "Carpeta de instalación por defecto" -#: lutris/sysoptions.py:139 +#: lutris/sysoptions.py:148 msgid "The default folder where you install your games." msgstr "La carpeta por defecto donde se instalan los juegos." -#: lutris/sysoptions.py:147 +#: lutris/sysoptions.py:156 msgid "Disable Lutris Runtime" msgstr "Desactivar tiempo de ejecución de Lutris" -#: lutris/sysoptions.py:150 +#: lutris/sysoptions.py:159 msgid "" "The Lutris Runtime loads some libraries before running the game, which can " "cause some incompatibilities in some cases. Check this option to disable it." @@ -5059,11 +5080,11 @@ msgstr "" "el juego, lo que puede causar algunas incompatibilidades en algunos casos. " "Marque esta opción para desactivarla." -#: lutris/sysoptions.py:157 +#: lutris/sysoptions.py:166 msgid "Prefer system libraries" msgstr "Preferir las bibliotecas del sistema" -#: lutris/sysoptions.py:159 +#: lutris/sysoptions.py:168 msgid "" "When the runtime is enabled, prioritize the system libraries over the " "provided ones." @@ -5071,11 +5092,11 @@ msgstr "" "Cuando el tiempo de ejecución está activado, da prioridad a las bibliotecas " "del sistema sobre las proporcionadas." -#: lutris/sysoptions.py:165 +#: lutris/sysoptions.py:174 msgid "Restore resolution on game exit" msgstr "Restaurar la resolución al salir del juego" -#: lutris/sysoptions.py:167 +#: lutris/sysoptions.py:176 msgid "" "Some games don't restore your screen resolution when \n" "closed or when they crash. This is when this option comes \n" @@ -5085,11 +5106,11 @@ msgstr "" "se cierran o cuando fallan. Es entonces cuando esta opción entra \n" "en juego para salvarte el pellejo." -#: lutris/sysoptions.py:174 +#: lutris/sysoptions.py:183 msgid "Enable gamescope" msgstr "Activar gamescope" -#: lutris/sysoptions.py:178 +#: lutris/sysoptions.py:187 msgid "" "Use gamescope to draw the game window isolated from your desktop.\n" "Use Ctrl+Super+F to toggle fullscreen" @@ -5097,35 +5118,35 @@ msgstr "" "Usar gamescope para dibujar la ventana del juego aislada de su escritorio.\n" "Use Ctrl+Súper+F para conmutar pantalla completa" -#: lutris/sysoptions.py:184 +#: lutris/sysoptions.py:193 msgid "Gamescope output resolution" msgstr "Resolución de salida de gamescope" -#: lutris/sysoptions.py:188 +#: lutris/sysoptions.py:197 msgid "Resolution of the window on your desktop" msgstr "Resolución de la ventana en su escritorio" -#: lutris/sysoptions.py:193 +#: lutris/sysoptions.py:202 msgid "Gamescope game resolution" msgstr "Resolución del juego de gamescope" -#: lutris/sysoptions.py:197 +#: lutris/sysoptions.py:206 msgid "Resolution of the screen visible to the game" msgstr "Resolución de la pantalla visible al juego" -#: lutris/sysoptions.py:202 +#: lutris/sysoptions.py:211 msgid "Restrict number of cores used" msgstr "Restringir el número de núcleos utilizado" -#: lutris/sysoptions.py:205 +#: lutris/sysoptions.py:214 msgid "Restrict the game to a maximum number of CPU cores." msgstr "Restringe el juego a un número máximo de núcleos de la CPU." -#: lutris/sysoptions.py:210 +#: lutris/sysoptions.py:219 msgid "Restrict number of cores to" msgstr "Restringir el número de núcleos a" -#: lutris/sysoptions.py:213 +#: lutris/sysoptions.py:222 msgid "" "Maximum number of CPU cores to be used, if 'Restrict number of cores used' " "is turned on." @@ -5133,11 +5154,11 @@ msgstr "" "El máximo número de núcleos de CPU que se usarán si está activado " "'Restringir el número de núcleos utilizado'." -#: lutris/sysoptions.py:219 +#: lutris/sysoptions.py:228 msgid "Restore gamma on game exit" msgstr "Restaurar la gamma al salir del juego" -#: lutris/sysoptions.py:221 +#: lutris/sysoptions.py:230 msgid "" "Some games don't correctly restores gamma on exit, making your display too " "bright. Select this option to correct it." @@ -5145,11 +5166,11 @@ msgstr "" "Algunos juegos no restauran correctamente la gamma al salir, haciendo que su " "pantalla sea demasiado brillante. Seleccione esta opción para corregirlo." -#: lutris/sysoptions.py:226 +#: lutris/sysoptions.py:235 msgid "Disable desktop effects" msgstr "Desactivar los efectos del escritorio" -#: lutris/sysoptions.py:230 +#: lutris/sysoptions.py:239 msgid "" "Disable desktop effects while game is running, reducing stuttering and " "increasing performance" @@ -5157,11 +5178,11 @@ msgstr "" "Desactiva los efectos del escritorio mientras se ejecuta el juego, lo que " "reduce el retardo y aumenta el rendimiento" -#: lutris/sysoptions.py:235 +#: lutris/sysoptions.py:244 msgid "Disable screen saver" msgstr "Desactivar el salvapantallas" -#: lutris/sysoptions.py:240 +#: lutris/sysoptions.py:249 msgid "" "Disable the screen saver while a game is running. Requires the screen " "saver's functionality to be exposed over DBus." @@ -5169,19 +5190,19 @@ msgstr "" "Desactivar el salvapantallas mientras se ejecuta un juego. Requiere que la " "funcionalidad del salvapantallas se exponga a través de DBus." -#: lutris/sysoptions.py:247 +#: lutris/sysoptions.py:256 msgid "Reset PulseAudio" msgstr "Reiniciar PulseAudio" -#: lutris/sysoptions.py:251 +#: lutris/sysoptions.py:260 msgid "Restart PulseAudio before launching the game." msgstr "Reinicia PulseAudio antes de iniciar el juego." -#: lutris/sysoptions.py:256 +#: lutris/sysoptions.py:265 msgid "Reduce PulseAudio latency" msgstr "Reducir la latencia de PulseAudio" -#: lutris/sysoptions.py:260 +#: lutris/sysoptions.py:269 msgid "" "Set the environment variable PULSE_LATENCY_MSEC=60 to improve audio quality " "on some games" @@ -5189,21 +5210,21 @@ msgstr "" "Establece la variable de entorno PULSE_LATENCY_MSEC=60 para mejorar la " "calidad del audio en algunos juegos" -#: lutris/sysoptions.py:266 +#: lutris/sysoptions.py:275 msgid "Switch to US keyboard layout" msgstr "Cambiar a la disposición de teclado de EE.UU." -#: lutris/sysoptions.py:269 +#: lutris/sysoptions.py:278 msgid "Switch to US keyboard QWERTY layout while game is running" msgstr "" "Cambia a la disposición QWERTY del teclado estadounidense mientras se " "ejecuta el juego" -#: lutris/sysoptions.py:276 +#: lutris/sysoptions.py:285 msgid "Optimus launcher (NVIDIA Optimus laptops)" msgstr "Optimus launcher (ordenadores portátiles NVIDIA Optimus)" -#: lutris/sysoptions.py:278 +#: lutris/sysoptions.py:287 msgid "" "If you have installed the primus or bumblebee packages, select what launcher " "will run the game with the command, activating your NVIDIA graphic chip for " @@ -5217,11 +5238,11 @@ msgstr "" "rendimiento, peroptirun/virtualgl funciona mejor para más juegos.Primus VK " "proporciona soporte vulkan bajo bumblebee." -#: lutris/sysoptions.py:290 +#: lutris/sysoptions.py:299 msgid "Vulkan ICD loader" msgstr "Cargador Vulkan ICD" -#: lutris/sysoptions.py:292 +#: lutris/sysoptions.py:301 msgid "" "The ICD loader is a library that is placed between a Vulkan application and " "any number of Vulkan drivers, in order to support multiple drivers and the " @@ -5232,15 +5253,11 @@ msgstr "" "controladores y la funcionalidad a nivel de instancia que funciona a través " "de estos controladores." -#: lutris/sysoptions.py:300 +#: lutris/sysoptions.py:309 msgid "FPS counter (MangoHud)" msgstr "Contador de FPS (MangoHud)" -#: lutris/sysoptions.py:304 -msgid "Enabled (32bit)" -msgstr "Activado (32 bit)" - -#: lutris/sysoptions.py:309 +#: lutris/sysoptions.py:312 msgid "" "Display the game's FPS + other information. Requires MangoHud to be " "installed." @@ -5248,25 +5265,25 @@ msgstr "" "Muestra los FPS del juego + otra información. Requiere la instalación de " "MangoHud." -#: lutris/sysoptions.py:318 +#: lutris/sysoptions.py:321 msgid "Limit the game's FPS to desired number" msgstr "Limita los FPS del juego al número deseado" -#: lutris/sysoptions.py:325 +#: lutris/sysoptions.py:328 msgid "Enable Feral GameMode" msgstr "Activar Feral GameMode" -#: lutris/sysoptions.py:326 +#: lutris/sysoptions.py:329 msgid "Request a set of optimisations be temporarily applied to the host OS" msgstr "" "Solicita que se aplique temporalmente un conjunto de optimizaciones al " "sistema operativo anfitrión" -#: lutris/sysoptions.py:333 +#: lutris/sysoptions.py:336 msgid "Enable NVIDIA Prime Render Offload" msgstr "Activar la descarga de NVIDIA Prime Render" -#: lutris/sysoptions.py:334 +#: lutris/sysoptions.py:337 msgid "" "If you have the latest NVIDIA driver and the properly patched xorg-server " "(see https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/" @@ -5280,11 +5297,11 @@ msgstr "" "alternando este interruptor. Esto aplica las variables de entorno " "__NV_PRIME_RENDER_OFFLOAD = 1 y __GLX_VENDOR_LIBRARY_NAME = nvidia." -#: lutris/sysoptions.py:345 +#: lutris/sysoptions.py:348 msgid "Use discrete graphics" msgstr "Usar gráficos integrados" -#: lutris/sysoptions.py:347 +#: lutris/sysoptions.py:350 msgid "" "If you have open source graphic drivers (Mesa), selecting this option will " "run the game with the 'DRI_PRIME=1' environment variable, activating your " @@ -5294,11 +5311,11 @@ msgstr "" "esta opción se ejecutará el juego con la variable de entorno 'DRI_PRIME = " "1', activando su chip gráfico integrado para un alto rendimiento 3D." -#: lutris/sysoptions.py:355 +#: lutris/sysoptions.py:358 msgid "SDL 1.2 Fullscreen Monitor" msgstr "Monitor de pantalla completa SDL 1.2" -#: lutris/sysoptions.py:359 +#: lutris/sysoptions.py:362 msgid "" "Hint SDL 1.2 games to use a specific monitor when going fullscreen by " "setting the SDL_VIDEO_FULLSCREEN environment variable" @@ -5307,11 +5324,11 @@ msgstr "" "pasen a pantalla completa configurando la variable de entorno " "SDL_VIDEO_FULLSCREEN" -#: lutris/sysoptions.py:366 +#: lutris/sysoptions.py:369 msgid "Turn off monitors except" msgstr "Apagar los monitores excepto" -#: lutris/sysoptions.py:371 +#: lutris/sysoptions.py:374 msgid "" "Only keep the selected screen active while the game is running. \n" "This is useful if you have a dual-screen setup, and are \n" @@ -5322,19 +5339,19 @@ msgstr "" "teniendo problemas de visualización al ejecutar un juego en pantalla " "completa." -#: lutris/sysoptions.py:379 +#: lutris/sysoptions.py:382 msgid "Switch resolution to" msgstr "Cambiar resolución a" -#: lutris/sysoptions.py:383 +#: lutris/sysoptions.py:386 msgid "Switch to this screen resolution while the game is running." msgstr "Cambia a esta resolución de pantalla mientras se ejecuta el juego." -#: lutris/sysoptions.py:387 +#: lutris/sysoptions.py:390 msgid "CLI mode" msgstr "Modo CLI" -#: lutris/sysoptions.py:391 +#: lutris/sysoptions.py:394 msgid "" "Enable a terminal for text-based games. Only useful for ASCII based games. " "May cause issues with graphical games." @@ -5342,11 +5359,11 @@ msgstr "" "Activa una terminal para juegos basados en texto. Solo es útil para juegos " "basados en ASCII. Puede causar problemas con los juegos gráficos." -#: lutris/sysoptions.py:396 +#: lutris/sysoptions.py:399 msgid "Text based games emulator" msgstr "Emulador de juegos basados en texto" -#: lutris/sysoptions.py:401 +#: lutris/sysoptions.py:404 msgid "" "The terminal emulator used with the CLI mode. Choose from the list of " "detected terminal apps or enter the terminal's command or path." @@ -5355,70 +5372,70 @@ msgstr "" "aplicaciones de terminal detectadas o ingrese el comando o la ruta del " "terminal." -#: lutris/sysoptions.py:408 +#: lutris/sysoptions.py:411 msgid "Environment variables" msgstr "Variables del entorno" -#: lutris/sysoptions.py:409 +#: lutris/sysoptions.py:412 msgid "Environment variables loaded at run time" msgstr "Variables de entorno cargadas en tiempo de ejecución" -#: lutris/sysoptions.py:414 +#: lutris/sysoptions.py:417 msgid "AntiMicroX Profile" msgstr "Perfil AntiMicroX" -#: lutris/sysoptions.py:416 +#: lutris/sysoptions.py:419 msgid "Path to an AntiMicroX profile file" msgstr "Ruta al archivo de perfil AntiMicroX" -#: lutris/sysoptions.py:421 +#: lutris/sysoptions.py:424 msgid "Command prefix" msgstr "Prefijo del comando" -#: lutris/sysoptions.py:423 +#: lutris/sysoptions.py:426 msgid "" "Command line instructions to add in front of the game's execution command." msgstr "" "Instrucciones de línea de comando para agregar delante del comando de " "ejecución del juego." -#: lutris/sysoptions.py:429 +#: lutris/sysoptions.py:432 msgid "Manual script" msgstr "Guion manual" -#: lutris/sysoptions.py:431 +#: lutris/sysoptions.py:434 msgid "Script to execute from the game's contextual menu" msgstr "Guion a ejecutar desde el menú contextual del juego" -#: lutris/sysoptions.py:436 +#: lutris/sysoptions.py:439 msgid "Pre-launch script" msgstr "Guión pre-inicio" -#: lutris/sysoptions.py:438 +#: lutris/sysoptions.py:441 msgid "Script to execute before the game starts" msgstr "Guion a ejecutar antes de que comience el juego" -#: lutris/sysoptions.py:443 +#: lutris/sysoptions.py:446 msgid "Wait for pre-launch script completion" msgstr "Esperar a que se complete el guion pre-inicio" -#: lutris/sysoptions.py:446 +#: lutris/sysoptions.py:449 msgid "Run the game only once the pre-launch script has exited" msgstr "Ejecuta el juego una vez el guion de pre-inicio ha terminado" -#: lutris/sysoptions.py:451 +#: lutris/sysoptions.py:454 msgid "Post-exit script" msgstr "Guion post-salida" -#: lutris/sysoptions.py:453 +#: lutris/sysoptions.py:456 msgid "Script to execute when the game exits" msgstr "Guion a ejecutar cuando el juego termina" -#: lutris/sysoptions.py:458 +#: lutris/sysoptions.py:461 msgid "Include processes" msgstr "Procesos incluídos" -#: lutris/sysoptions.py:460 +#: lutris/sysoptions.py:463 msgid "" "What processes to include in process monitoring. This is to override the " "built-in exclude list.\n" @@ -5430,11 +5447,11 @@ msgstr "" "Lista separada por espacios, los procesos que incluyen espacios pueden ir " "entre comillas." -#: lutris/sysoptions.py:468 +#: lutris/sysoptions.py:471 msgid "Exclude processes" msgstr "Procesos excluídos" -#: lutris/sysoptions.py:470 +#: lutris/sysoptions.py:473 msgid "" "What processes to exclude in process monitoring. For example background " "processes that stick around after the game has been closed.\n" @@ -5446,11 +5463,11 @@ msgstr "" "Lista separada por espacios, los procesos que incluyen espacios pueden ir " "entre comillas." -#: lutris/sysoptions.py:479 +#: lutris/sysoptions.py:482 msgid "Killswitch file" msgstr "Archivo del interruptor de corte" -#: lutris/sysoptions.py:481 +#: lutris/sysoptions.py:484 msgid "" "Path to a file which will stop the game when deleted \n" "(usually /dev/input/js0 to stop the game on joystick unplugging)" @@ -5458,11 +5475,11 @@ msgstr "" "Ruta a un archivo que detendrá el juego cuando se elimine \n" "(normalmente /dev/input/js0 para detener el juego al desconectar el mando)" -#: lutris/sysoptions.py:488 +#: lutris/sysoptions.py:491 msgid "SDL2 gamepad mapping" msgstr "Mapeo del mando SDL2" -#: lutris/sysoptions.py:490 +#: lutris/sysoptions.py:493 msgid "" "SDL_GAMECONTROLLERCONFIG mapping string or path to a custom gamecontrollerdb." "txt file containing mappings." @@ -5470,40 +5487,40 @@ msgstr "" "Cadena de mapeo SDL_GAMECONTROLLERCONFIG o ruta a un archivo " "gamecontrollerdb.txt personalizado que contenga mapeos." -#: lutris/sysoptions.py:495 +#: lutris/sysoptions.py:498 msgid "Use Xephyr" msgstr "Usar Xephyr" -#: lutris/sysoptions.py:499 +#: lutris/sysoptions.py:502 msgid "8BPP (256 colors)" msgstr "8BPP (256 colores)" -#: lutris/sysoptions.py:500 +#: lutris/sysoptions.py:503 msgid "16BPP (65536 colors)" msgstr "16BPP (65536 colores)" -#: lutris/sysoptions.py:501 +#: lutris/sysoptions.py:504 msgid "24BPP (16M colors)" msgstr "24BPP (16M colores)" -#: lutris/sysoptions.py:505 +#: lutris/sysoptions.py:508 msgid "Run program in Xephyr to support 8BPP and 16BPP color modes" msgstr "" "Ejecutar el programa en Xephyr para soportar los modos de color 8BPP y 16BPP" -#: lutris/sysoptions.py:510 +#: lutris/sysoptions.py:513 msgid "Xephyr resolution" msgstr "Resolución Xephyr" -#: lutris/sysoptions.py:512 +#: lutris/sysoptions.py:515 msgid "Screen resolution of the Xephyr server" msgstr "Resolución de la pantalla del servidor Xephyr" -#: lutris/sysoptions.py:517 +#: lutris/sysoptions.py:520 msgid "Xephyr Fullscreen" msgstr "Pantalla completa de Xephyr" -#: lutris/sysoptions.py:520 +#: lutris/sysoptions.py:523 msgid "Open Xephyr in fullscreen (at the desktop resolution)" msgstr "Abra Xephyr en pantalla completa (con la resolución del escritorio)" @@ -5555,11 +5572,12 @@ msgid "Vulkan is not installed or is not supported by your system" msgstr "Vulkan no está instalado o no es compatible con su sistema" #: lutris/util/wine/wine.py:355 +#, fuzzy msgid "" "If you have compatible hardware, please follow the installation procedures " "as described in\n" -"How-to:-DXVK " -"(https://github.com/lutris/lutris/wiki/How-to:-DXVK)" +"How-to:-" +"DXVK (https://github.com/lutris/docs/blob/master/HowToDXVK.md)" msgstr "" "Si tiene un hardware compatible, siga los procedimientos de instalación " "descritos en\n" @@ -5567,10 +5585,11 @@ msgstr "" "(https://github.com/lutris/lutris/wiki/How-to:-DXVK)" #: lutris/util/wine/wine.py:367 +#, fuzzy msgid "" "Your limits are not set correctly. Please increase them as described here: " -"How-to:-Esync " -"(https://github.com/lutris/lutris/wiki/How-to:-Esync)" +"How-to:-" +"Esync (https://github.com/lutris/docs/blob/master/HowToEsync.md)" msgstr "" "Sus límites no están correctamente configurados. Auméntelos como se describe " "aquí: Cómo:-" @@ -5604,6 +5623,28 @@ msgstr "" "La versión de Wine que ha seleccionado no es compatible con Fsync.\n" "Cambie a una versión compatible con Fsync." +#~ msgid "Lutris Team" +#~ msgstr "El equipo de Lutris" + +#~ msgid "Runner not installed." +#~ msgstr "El ejecutor no está instalado." + +#~ msgid "An error prevented the game from running" +#~ msgstr "Un error ha impedido que el juego se ejecute" + +#~ msgid "Stop Steam after game exits" +#~ msgstr "Detener Steam después de salir del juego" + +#~ msgid "" +#~ "Shut down Steam after the game has quit\n" +#~ "(only if Steam was started by Lutris)" +#~ msgstr "" +#~ "Apagar Steam después de que el juego haya terminado\n" +#~ "(sólo si Steam fue iniciado por Lutris)" + +#~ msgid "Enabled (32bit)" +#~ msgstr "Activado (32 bit)" + #~ msgid "open source gaming platform" #~ msgstr "plataforma de juegos de código abierto" @@ -5705,9 +5746,6 @@ msgstr "" #~ msgid "Multiple platforms" #~ msgstr "Múltiples plataformas" -#~ msgid "Use cache" -#~ msgstr "Usar caché" - #~ msgid "Use search to find games on winegame.net" #~ msgstr "Use la búsqueda para encontrar juegos en winegame.net" diff --git a/po/fi.po b/po/fi.po index b013f0038d536d06b5d873763dce800a9c26389a..1ca1344e8a0c00f3586a93b2324ad4bd1e28c2f4 100644 --- a/po/fi.po +++ b/po/fi.po @@ -136,8 +136,7 @@ msgid "" msgstr "" "Tämä poistaa KAIKKI versiot kohteelle %s.\n" "\n" -"Käytä Hallinnoi versioita -painiketta mikäli haluat poistaa vain yhden tietyn versio -julkaisun." +"Käytä Hallinnoi versioita -painiketta mikäli haluat poistaa vain yhden tietyn versio julkaisun." #: share/lutris/ui/runner-remove-confirm-dialog.ui:59 msgid "This will remove %s and all associated data." diff --git a/po/fr.po b/po/fr.po index fc7b51ad327e65db2bce37f3b4e7afbdbac01127..6ea9dcbd891730dcce58173ec460ec1b0f11bae5 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,24 +1,59 @@ msgid "" msgstr "" +"Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-22 18:56+0200\n" -"PO-Revision-Date: 2020-04-20 12:40+0200\n" +"POT-Creation-Date: 2022-06-20 16:54+0200\n" +"PO-Revision-Date: 2022-06-20 16:53+0200\n" "Last-Translator: Stelfux \n" "Language-Team: French\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 3.0.1\n" -#: share/lutris/ui/about-dialog.ui:8 +#: share/applications/net.lutris.Lutris.desktop:3 +#: share/lutris/ui/lutris-window.ui:25 lutris/gui/application.py:76 +#: lutris/gui/widgets/status_icon.py:116 lutris/services/lutris.py:39 +msgid "Lutris" +msgstr "Lutris" + +#: share/applications/net.lutris.Lutris.desktop:4 +msgid "video game preservation platform" +msgstr "plateforme de préservation de jeux vidéo" + +#: share/applications/net.lutris.Lutris.desktop:6 +msgid "gaming;wine;emulator;" +msgstr "gaming;wine;emulator;jeux;émulateur;" + +#: share/metainfo/net.lutris.Lutris.metainfo.xml:11 +#: share/lutris/ui/about-dialog.ui:18 +msgid "Video game preservation platform" +msgstr "Plateforme de préservation de jeux vidéo" + +#: share/metainfo/net.lutris.Lutris.metainfo.xml:14 +msgid "Main window" +msgstr "Fenêtre principale" + +#: share/metainfo/net.lutris.Lutris.metainfo.xml:18 +msgid "" +"Lutris helps you install and play video games from all eras and from most " +"gaming systems. By leveraging and combining existing emulators, engine re-" +"implementations and compatibility layers, it gives you a central interface " +"to launch all your games." +msgstr "" +"Lutris vous aide à installer et à jouer à des jeux vidéo de toutes les " +"époques et de la plupart des systèmes de jeu. En exploitant et en combinant " +"les émulateurs existants, les réimplémentations de moteurs et les couches de " +"compatibilité, il vous offre une interface centrale pour lancer tous vos " +"jeux." + +#: share/lutris/ui/about-dialog.ui:8 share/lutris/ui/lutris-window.ui:581 msgid "About Lutris" msgstr "À propos de Lutris" -#: share/lutris/ui/about-dialog.ui:17 -msgid "Open Source Gaming Platform" -msgstr "Plateforme libre de jeu" - -#: share/lutris/ui/about-dialog.ui:20 +#: share/lutris/ui/about-dialog.ui:21 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" @@ -55,6 +90,15 @@ msgstr "Se connecter à winegame.net" msgid "Forgot password?" msgstr "Mot de passe oublié ?" +#: share/lutris/ui/dialog-lutris-login.ui:43 lutris/gui/dialogs/issue.py:52 +#: lutris/gui/installerwindow.py:76 +msgid "C_ancel" +msgstr "A_nnuler" + +#: share/lutris/ui/dialog-lutris-login.ui:57 +msgid "_Connect" +msgstr "Se _connecter" + #: share/lutris/ui/dialog-lutris-login.ui:95 msgid "Password" msgstr "Mot de passe" @@ -63,94 +107,5558 @@ msgstr "Mot de passe" msgid "Username" msgstr "Nom d'utilisateur" -#: share/lutris/ui/dialog-pga-sources.ui:79 -msgid "Personnal Game Archives sources" -msgstr "Sources des archives personnels de jeu" +#: share/lutris/ui/log-window.ui:37 +msgid "Search..." +msgstr "Rechercher..." + +#: share/lutris/ui/lutris-window.ui:154 +msgid "Search games" +msgstr "Rechercher des jeux" + +#: share/lutris/ui/lutris-window.ui:169 +msgid "Add Game" +msgstr "Ajouter un jeu" + +#: share/lutris/ui/lutris-window.ui:201 +msgid "Toggle View" +msgstr "Basculer la vue" + +#: share/lutris/ui/lutris-window.ui:299 +msgid "Zoom:" +msgstr "Zoom :" + +#: share/lutris/ui/lutris-window.ui:352 +msgid "Sort Ascending" +msgstr "Tri croissant" -#: share/lutris/ui/dialog-uninstall-game.ui:22 -msgid "Uninstall game" -msgstr "Désinstaller le jeu" +#: share/lutris/ui/lutris-window.ui:367 lutris/gui/config/common.py:113 +#: lutris/gui/views/list.py:45 lutris/gui/views/list.py:159 +msgid "Name" +msgstr "Nom" -#: share/lutris/ui/dialog-uninstall-game.ui:89 -msgid "Are you sure you want to uninstall {game}?" -msgstr "Êtes-vous sûr de vouloir désinstaller {game} ?" +#: share/lutris/ui/lutris-window.ui:382 lutris/gui/views/list.py:46 +msgid "Year" +msgstr "Année" -#: share/lutris/ui/dialog-uninstall-game.ui:102 +#: share/lutris/ui/lutris-window.ui:397 lutris/gui/views/list.py:49 +msgid "Last Played" +msgstr "Dernière fois jouée" + +#: share/lutris/ui/lutris-window.ui:412 lutris/gui/views/list.py:51 +msgid "Installed At" +msgstr "Installé le" + +#: share/lutris/ui/lutris-window.ui:427 lutris/gui/views/list.py:53 +msgid "Play Time" +msgstr "Temps de jeu" + +#: share/lutris/ui/lutris-window.ui:456 +msgid "_Installed Games Only" +msgstr "Jeux _installés seulement" + +#: share/lutris/ui/lutris-window.ui:471 +msgid "Show _Hidden Games" +msgstr "Montrer les jeux _cachés" + +#: share/lutris/ui/lutris-window.ui:485 +msgid "Show Side _Panel" +msgstr "Afficher le _panneau latéral" + +#: share/lutris/ui/lutris-window.ui:500 +msgid "Add games" +msgstr "Ajouter des jeux" + +#: share/lutris/ui/lutris-window.ui:514 +msgid "Preferences" +msgstr "Préférences" + +#: share/lutris/ui/lutris-window.ui:539 +msgid "Discord" +msgstr "Discord" + +#: share/lutris/ui/lutris-window.ui:553 +msgid "Lutris forums" +msgstr "Forums Lutris" + +#: share/lutris/ui/lutris-window.ui:567 +msgid "Make a donation" +msgstr "Faire un don" + +#: lutris/exceptions.py:26 +#, python-brace-format msgid "" -"Remove all data from game folder\n" -"( {path})" -msgstr "Supprimer toutes les données du dossier de jeu ({path})" +"The following {arch} libraries are required but are not installed on your " +"system:\n" +"{libs}" +msgstr "" +"Les librairies suivantes {arch} sont requises mais ne sont pas installées " +"sur votre système :\n" +"{libs}" -#: share/lutris/ui/dialog-uninstall-game.ui:121 -msgid "Remove from my library" -msgstr "Supprimer de ma bibliothèque" +#. Local services don't show an install dialog, they can be launched directly +#: lutris/game_actions.py:60 lutris/gui/widgets/game_bar.py:201 +#: lutris/gui/widgets/game_bar.py:215 +msgid "Play" +msgstr "Jouer" -#: share/lutris/ui/runner-entry.ui:33 -msgid "name" -msgstr "nom" +#: lutris/game_actions.py:61 lutris/gui/widgets/game_bar.py:207 +msgid "Stop" +msgstr "Stopper" -#: share/lutris/ui/runner-entry.ui:52 -msgid "description" -msgstr "déscription" +#: lutris/game_actions.py:62 lutris/gui/dialogs/runner_install.py:193 +#: lutris/gui/installer/script_box.py:62 lutris/gui/widgets/game_bar.py:210 +msgid "Install" +msgstr "Installer" -#: share/lutris/ui/runner-entry.ui:69 -msgid "platforms" -msgstr "plateformes" +#: lutris/game_actions.py:63 +msgid "Install updates" +msgstr "Installer les mises à jour" -#: share/lutris/ui/runner-entry.ui:104 -msgid "Manage Versions" -msgstr "Gérer les versions" +#: lutris/game_actions.py:65 +msgid "Show logs" +msgstr "Afficher les journaux" -#: share/lutris/ui/runner-entry.ui:127 -msgid "Install Runner" -msgstr "Installer l'exécuteur" +#: lutris/game_actions.py:66 +msgid "Add installed game" +msgstr "Ajouter le jeu installé" -#: share/lutris/ui/runner-entry.ui:151 -msgid "Configure Runner" -msgstr "Configurer l'exécuteur" +#: lutris/game_actions.py:67 +msgid "Duplicate" +msgstr "Dupliquer" -#: share/lutris/ui/runner-entry.ui:174 -msgid "Remove Runner" -msgstr "Supprimer l'exécuteur" +#: lutris/game_actions.py:68 lutris/gui/widgets/sidebar.py:205 +msgid "Configure" +msgstr "Configurer" -#: share/lutris/ui/runner-remove-all-versions-dialog.ui:19 -msgid "Remove ALL versions?" -msgstr "Supprimer TOUTES les versions ?" +#: lutris/game_actions.py:69 +msgid "Add to favorites" +msgstr "Ajouter aux favoris" -#: share/lutris/ui/runner-remove-all-versions-dialog.ui:23 -#: share/lutris/ui/runner-remove-confirm-dialog.ui:23 -msgid "Cancel" -msgstr "Annuler" +#: lutris/game_actions.py:70 +msgid "Remove from favorites" +msgstr "Supprimer des favoris" -#: share/lutris/ui/runner-remove-all-versions-dialog.ui:36 -#: share/lutris/ui/runner-remove-confirm-dialog.ui:19 -#: share/lutris/ui/runner-remove-confirm-dialog.ui:36 +#: lutris/game_actions.py:71 +msgid "Execute script" +msgstr "Exécuter le script" + +#: lutris/game_actions.py:72 +msgid "Browse files" +msgstr "Parcourir les fichiers" + +#: lutris/game_actions.py:75 lutris/gui/installerwindow.py:178 +msgid "Create desktop shortcut" +msgstr "Créer un raccourci sur le bureau" + +#: lutris/game_actions.py:80 +msgid "Delete desktop shortcut" +msgstr "Supprimer le raccourci sur le bureau" + +#: lutris/game_actions.py:85 lutris/gui/installerwindow.py:182 +msgid "Create application menu shortcut" +msgstr "Créer un raccourci du menu de l'application" + +#: lutris/game_actions.py:90 +msgid "Delete application menu shortcut" +msgstr "Supprimer le raccourci du menu de l'application" + +#: lutris/game_actions.py:95 lutris/gui/installerwindow.py:187 +msgid "Create steam shortcut" +msgstr "Créer un raccourci steam" + +#: lutris/game_actions.py:100 +msgid "Delete steam shortcut" +msgstr "Supprimer le raccourci steam" + +#: lutris/game_actions.py:103 +msgid "Install another version" +msgstr "Installer une autre version" + +#: lutris/game_actions.py:104 lutris/gui/dialogs/uninstall_game.py:139 msgid "Remove" msgstr "Supprimer" -#: share/lutris/ui/runner-remove-all-versions-dialog.ui:59 +#: lutris/game_actions.py:105 +msgid "View on Lutris.net" +msgstr "Voir sur Lutris.net" + +#: lutris/game_actions.py:106 +msgid "Hide game from library" +msgstr "Masquer le jeu de la bibliothèque" + +#: lutris/game_actions.py:107 +msgid "Unhide game from library" +msgstr "Ne plus masquer le jeu de la bibliothèque" + +#: lutris/game_actions.py:185 +msgid "Log for {}" +msgstr "Journal pour {}" + +#: lutris/game_actions.py:220 +#, python-format +msgid "" +"Do you wish to duplicate %s?\n" +"The configuration will be duplicated, but the games files will not be " +"duplicated." +msgstr "" +"Souhaitez-vous dupliquer %s ?\n" +"La configuration sera dupliquée, mais les fichiers des jeux ne seront pas " +"dupliqués." + +#: lutris/game_actions.py:223 +msgid "Duplicate game?" +msgstr "Dupliquer le jeu ?" + +#: lutris/game_actions.py:284 +msgid "This game has no installation directory" +msgstr "Ce jeu n'a pas de répertoire d'installation" + +#: lutris/game_actions.py:288 +#, python-format +msgid "" +"Can't open %s \n" +"The folder doesn't exist." +msgstr "" +"Impossible d'ouvrir %s\n" +"Le dossier n'existe pas." + +#: lutris/game.py:178 +msgid "Error the runner is not installed" +msgstr "Erreur : l'exécuteur n'est pas installé" + +#: lutris/game.py:180 +msgid "A bios file is required to run this game" +msgstr "Un fichier bios est requis pour exécuter ce jeu" + +#: lutris/game.py:184 +msgid "The file {} could not be found" +msgstr "Le fichier {} n'a pas pu être trouvé" + +#: lutris/game.py:186 +msgid "" +"This game has no executable set. The install process didn't finish properly." +msgstr "" +"Ce jeu n'a pas d'exécutable défini. Le processus d'installation ne s’est pas " +"correctement terminé." + +#: lutris/game.py:189 +#, python-format +msgid "The file %s is not executable" +msgstr "Le fichier %s n'est pas exécutable" + +#: lutris/game.py:191 +#, python-format +msgid "The path '%s' is not set. please set it in the options." +msgstr "Le chemin '%s' n'est pas défini. Merci de le définir dans les options." + +#: lutris/game.py:193 +#, python-format +msgid "Unhandled error: %s" +msgstr "Erreur non gérée : %s" + +#: lutris/game.py:298 +msgid "Tried to launch a game that isn't installed." +msgstr "Tentative de lancer un jeu qui n'est pas installé." + +#: lutris/game.py:300 lutris/game.py:417 +msgid "Invalid game configuration: Missing runner" +msgstr "Configuration de jeu invalide : exécuteur manquant" + +#: lutris/game.py:309 +msgid "Runtime currently updating" +msgstr "Environnement d'exécution en cours de mise à jour" + +#: lutris/game.py:309 +msgid "Game might not work as expected" +msgstr "Le jeu pourrait ne pas fonctionner comme attendu" + +#: lutris/game.py:342 +msgid "Unable to find Xephyr, install it or disable the Xephyr option" +msgstr "" +"Impossible de trouver Xephyr, installez-le ou désactivez l'option Xephyr" + +#: lutris/game.py:398 +#, python-format +msgid "" +"The selected terminal application could not be launched:\n" +"%s" +msgstr "" +"L'application de terminal sélectionnée n'a pas pu être lancée :\n" +"%s" + +#. The 'file' sort of gameplay_info cannot be made to use a configuration +#: lutris/game.py:434 +msgid "The runner could not find a command to apply the configuration to." +msgstr "" +"L’exécuteur n'a pas pu trouver une commande pour appliquer la configuration." + +#: lutris/game.py:635 +msgid "Error lauching the game:\n" +msgstr "Erreur lors du lancement du jeu :\n" + +#: lutris/game.py:727 +#, python-format msgid "" -"This will remove ALL versions of %s.\n" +"Error: Missing shared library.\n" "\n" -"Use the Manage Versions button if you want to remove just one version." +"%s" msgstr "" -"Cela supprimera TOUTES les versions de %s.\n" +"Erreur : Bibliothèque partage manquante.\n" "\n" -"Utiliser le bouton « Gérer les versions » si vous voulez juste supprimer une " -"version." +"%s" + +#: lutris/game.py:733 +msgid "" +"Error: A different Wine version is already using the same Wine prefix." +msgstr "" +"Erreur : Une version différente de Wine utilise déjà le même préfixe Wine." +"" + +#: lutris/gui/addgameswindow.py:21 +msgid "Search the Lutris website for installers" +msgstr "Rechercher des installateurs sur le site de Lutris" + +#: lutris/gui/addgameswindow.py:22 +msgid "Query our website for community installers" +msgstr "Rechercher des installateurs communautaires sur notre site web" + +#: lutris/gui/addgameswindow.py:27 +msgid "Scan a folder for games" +msgstr "Rechercher des jeux dans un dossier" + +#: lutris/gui/addgameswindow.py:28 +msgid "Mass-import a folder of games" +msgstr "Importation en masse d'un dossier de jeux" + +#: lutris/gui/addgameswindow.py:33 +msgid "Install a Windows game from media" +msgstr "Installer un jeu Windows depuis un média" + +#: lutris/gui/addgameswindow.py:34 +msgid "Launch a setup file from an optical drive or download" +msgstr "" +"Lancer un fichier d'installation à partir d'un lecteur optique ou d'un " +"téléchargement" + +#: lutris/gui/addgameswindow.py:39 +msgid "Install from a local install script" +msgstr "Installer depuis un script d’installation local" + +#: lutris/gui/addgameswindow.py:40 +msgid "Run a YAML install script" +msgstr "Exécuter un script d'installation YAML" + +#: lutris/gui/addgameswindow.py:45 +msgid "Add locally installed game" +msgstr "Ajouter un jeu installé localement" + +#: lutris/gui/addgameswindow.py:46 +msgid "Manually configure a game available locally" +msgstr "Configurer manuellement un jeu disponible localement" + +#: lutris/gui/addgameswindow.py:51 +msgid "Add games to Lutris" +msgstr "Ajouter des jeux à Lutris" + +#: lutris/gui/addgameswindow.py:126 +msgid "Search Lutris.net" +msgstr "Rechercher sur Lutris.net" + +#: lutris/gui/addgameswindow.py:149 +msgid "Select folder to scan" +msgstr "Sélectionner un dossier à scanner" + +#: lutris/gui/addgameswindow.py:223 +msgid "No results" +msgstr "Pas de résultats" + +#: lutris/gui/addgameswindow.py:225 +#, python-brace-format +msgid "Showing {count} results" +msgstr "{count} résultats affichés" + +#: lutris/gui/addgameswindow.py:227 +#, python-brace-format +msgid "{total_count} results, only displaying first {count}" +msgstr "" +"{total_count} résultats, affichage uniquement des {count} premiers" + +#: lutris/gui/addgameswindow.py:243 +msgid "Select setup file" +msgstr "Sélectionner le fichier de configuration" + +#: lutris/gui/addgameswindow.py:245 +msgid "Game name" +msgstr "Nom du jeu" + +#: lutris/gui/addgameswindow.py:249 +msgid "Continue" +msgstr "Continuer" + +#: lutris/gui/addgameswindow.py:257 +msgid "Setup file" +msgstr "Fichier de configuration" + +#: lutris/gui/addgameswindow.py:266 +msgid "Select the setup file" +msgstr "Sélectionner le fichier de configuration" + +#: lutris/gui/addgameswindow.py:279 +msgid "Select a Lutris installer" +msgstr "Sélectionner un installateur Lutris" + +#: lutris/gui/application.py:87 +msgid "" +"Running Lutris as root is not recommended and may cause unexpected issues" +msgstr "" +"Exécuter Lutris en tant que root n'est pas recommandé et peut causer des " +"problèmes inattendus" + +#: lutris/gui/application.py:97 +msgid "Your Linux distribution is too old. Lutris won't function properly." +msgstr "" +"Votre distribution Linux est trop ancienne. Lutris ne fonctionnera pas " +"correctement." + +#: lutris/gui/application.py:102 +msgid "" +"Run a game directly by adding the parameter lutris:rungame/game-identifier.\n" +"If several games share the same identifier you can use the numerical ID " +"(displayed when running lutris --list-games) and add lutris:rungameid/" +"numerical-id.\n" +"To install a game, add lutris:install/game-identifier." +msgstr "" +"Exécuter un jeu directement en ajoutant le paramètre lutris:rungame/game-" +"identifier.\n" +"Si plusieurs jeux partagent le même identifiant vous pouvez utiliser " +"l'identifiant numérique (affiché lors de l'exécution de lutris --list-games) " +"et ajouter lutris:rungameid/numerical-id.\n" +"Pour installer un jeu, ajoutez lutris:install/game-identifier." + +#: lutris/gui/application.py:115 +msgid "Print the version of Lutris and exit" +msgstr "Imprimer la version de Lutris et quitter" + +#: lutris/gui/application.py:123 +msgid "Show debug messages" +msgstr "Montrer les messages de débogage" + +#: lutris/gui/application.py:131 +msgid "Install a game from a yml file" +msgstr "Installer un jeu depuis un fichier yml" + +#: lutris/gui/application.py:139 +msgid "Generate a bash script to run a game without the client" +msgstr "Générer un script bash pour lancer un jeu sans le client" + +#: lutris/gui/application.py:147 +msgid "Execute a program with the Lutris Runtime" +msgstr "Lancer un programme avec l'environnement d'exécution Lutris" + +#: lutris/gui/application.py:155 +msgid "List all games in database" +msgstr "Lister tous les jeux dans la base de données" + +#: lutris/gui/application.py:163 +msgid "Only list installed games" +msgstr "Lister uniquement les jeux installés" + +#: lutris/gui/application.py:171 +msgid "List available Steam games" +msgstr "Lister les jeux Steam disponibles" + +#: lutris/gui/application.py:179 +msgid "List all known Steam library folders" +msgstr "Lister tous les dossiers de bibliothèque Steam connus" + +#: lutris/gui/application.py:187 +msgid "List all known runners" +msgstr "Lister tous les exécuteurs connus" + +#: lutris/gui/application.py:195 +msgid "List all known Wine versions" +msgstr "Lister toutes les versions de Wine connues" + +#: lutris/gui/application.py:203 +msgid "Install a Runner" +msgstr "Installer un exécuteur" + +#: lutris/gui/application.py:211 +msgid "Uninstall a Runner" +msgstr "Désinstaller un exécuteur" + +#: lutris/gui/application.py:219 +msgid "Export a game" +msgstr "Exporter un jeu" + +#: lutris/gui/application.py:227 +msgid "Import a game" +msgstr "Importer un jeu" + +#: lutris/gui/application.py:235 +msgid "Destination path for export" +msgstr "Chemin de destination pour l'export" + +#: lutris/gui/application.py:243 +msgid "Display the list of games in JSON format" +msgstr "Afficher la liste de jeux en format JSON" + +#: lutris/gui/application.py:251 +msgid "Reinstall game" +msgstr "Réinstaller le jeu" -#: share/lutris/ui/runner-remove-confirm-dialog.ui:59 +#: lutris/gui/application.py:254 +msgid "Submit an issue" +msgstr "Soumettre un problème" + +#: lutris/gui/application.py:260 +msgid "URI to open" +msgstr "URI à ouvrir" + +#: lutris/gui/application.py:489 +#, python-format +msgid "%s is not a valid URI" +msgstr "%s n'est pas une URI valide" + +#: lutris/gui/application.py:509 +#, python-format +msgid "Failed to download %s" +msgstr "Échec du téléchargement de %s" + +#: lutris/gui/application.py:517 +#, python-brace-format +msgid "download {url} to {file} started" +msgstr "téléchargement {url} vers {file} débuté" + +#: lutris/gui/application.py:528 +#, python-format +msgid "No such file: %s" +msgstr "Aucun fichier de ce type : %s" + +#: lutris/gui/application.py:645 +#, python-format +msgid "There is no installer available for %s." +msgstr "Il n'y a pas d'installateur disponible pour %s." + +#: lutris/gui/application.py:655 +msgid "No updates found" +msgstr "Aucune mise à jour trouvée" + +#: lutris/gui/application.py:665 +msgid "No DLC found" +msgstr "Pas de DLC trouvée" + +#: lutris/gui/config/add_game.py:11 +msgid "Add a new game" +msgstr "Ajouter un nouveau jeu" + +#: lutris/gui/config/boxes.py:59 +msgid "No options available" +msgstr "Pas d'options disponibles" + +#: lutris/gui/config/boxes.py:105 +msgid "Reset option to global or default config" +msgstr "Réinitialiser l'option à la configuration globale ou par défaut" + +#: lutris/gui/config/boxes.py:126 +msgid "Default: " +msgstr "Par défaut : " + +#: lutris/gui/config/boxes.py:130 +msgid "" +"(Italic indicates that this option is modified in a lower configuration " +"level.)" +msgstr "" +"(L'italique indique que cette option est modifiée dans un niveau de " +"configuration inférieur.)" + +#: lutris/gui/config/boxes.py:307 +#, python-format +msgid "%s (default)" +msgstr "%s (par défaut)" + +#: lutris/gui/config/boxes.py:391 lutris/gui/widgets/common.py:45 +msgid "Select file" +msgstr "Sélectionner le fichier" + +#: lutris/gui/config/boxes.py:433 +msgid "Select folder" +msgstr "Sélectionner le dossier" + +#: lutris/gui/config/boxes.py:473 +msgid "Add files" +msgstr "Ajouter des fichiers" + +#: lutris/gui/config/boxes.py:491 +msgid "Files" +msgstr "Fichiers" + +#: lutris/gui/config/boxes.py:508 +msgid "Select files" +msgstr "Sélectionner les fichiers" + +#: lutris/gui/config/boxes.py:511 +msgid "_Add" +msgstr "_Ajouter" + +#: lutris/gui/config/boxes.py:512 lutris/gui/dialogs/__init__.py:134 +#: lutris/gui/dialogs/__init__.py:161 lutris/gui/dialogs/issue.py:75 +#: lutris/gui/widgets/common.py:98 +#: lutris/gui/widgets/download_progress_box.py:47 +msgid "_Cancel" +msgstr "A_nnuler" + +#: lutris/gui/config/boxes.py:640 +msgid "" +"If modified, these options supersede the same options from the base runner " +"configuration." +msgstr "" +"Si elles sont modifiées, ces options remplacent les mêmes options de la " +"configuration de l'exécuteur de base." + +#: lutris/gui/config/boxes.py:661 +msgid "" +"If modified, these options supersede the same options from the base runner " +"configuration, which themselves supersede the global preferences." +msgstr "" +"Si elles sont modifiées, ces options remplacent les mêmes options de la " +"configuration de l'exécuteur de base, qui elles-mêmes remplacent les " +"préférences globales." + +#: lutris/gui/config/boxes.py:667 +msgid "" +"If modified, these options supersede the same options from the global " +"preferences." +msgstr "" +"Si elles sont modifiées, ces options remplacent les mêmes options des " +"préférences globales." + +#: lutris/gui/config/common.py:28 +msgid "Select a runner in the Game Info tab" +msgstr "Sélectionnez un exécuteur dans l'onglet d'Infos de jeu" + +#: lutris/gui/config/common.py:109 +msgid "Game info" +msgstr "Infos de jeu" + +#: lutris/gui/config/common.py:124 +msgid "Identifier" +msgstr "Identifiant" + +#: lutris/gui/config/common.py:133 lutris/gui/config/common.py:259 +msgid "Change" +msgstr "Modifier" + +#: lutris/gui/config/common.py:142 +msgid "Directory" +msgstr "Répertoire" + +#: lutris/gui/config/common.py:148 +msgid "Move" +msgstr "Déplacer" + +#: lutris/gui/config/common.py:156 lutris/gui/views/list.py:47 +msgid "Runner" +msgstr "Exécuteur" + +#: lutris/gui/config/common.py:177 +msgid "Remove custom banner" +msgstr "Supprimer la bannière personnalisée" + +#: lutris/gui/config/common.py:188 +msgid "Remove custom icon" +msgstr "Supprimer l’icône personnalisée" + +#: lutris/gui/config/common.py:197 +msgid "Release year" +msgstr "Année de sortie" + +#: lutris/gui/config/common.py:240 +msgid "Select a runner from the list" +msgstr "Sélectionnez un exécuteur depuis la liste" + +#: lutris/gui/config/common.py:248 +msgid "Apply" +msgstr "Appliquer" + +#: lutris/gui/config/common.py:296 +msgid "Game options" +msgstr "Options du jeu" + +#: lutris/gui/config/common.py:304 +msgid "Runner options" +msgstr "Option de l'exécuteur" + +#: lutris/gui/config/common.py:312 +msgid "System options" +msgstr "Options système" + +#. Advanced settings checkbox +#: lutris/gui/config/common.py:322 +msgid "Show advanced options" +msgstr "Montrer les options avancées" + +#: lutris/gui/config/common.py:330 lutris/gui/dialogs/__init__.py:268 +#: lutris/gui/dialogs/runner_install.py:186 +#: lutris/gui/dialogs/uninstall_game.py:60 +#: lutris/gui/dialogs/uninstall_game.py:135 +#: lutris/gui/widgets/download_progress_box.py:95 +msgid "Cancel" +msgstr "Annuler" + +#: lutris/gui/config/common.py:334 +msgid "Save" +msgstr "Enregistrer" + +#: lutris/gui/config/common.py:368 +msgid "" +"Are you sure you want to change the runner for this game ? This will reset " +"the full configuration for this game and is not reversible." +msgstr "" +"Êtes-vous sûr de vouloir changer l’exécuteur de ce jeu ? Cela réinitialisera " +"la configuration entière pour ce jeu sans retour en arrière possible." + +#: lutris/gui/config/common.py:372 +msgid "Confirm runner change" +msgstr "Confirmer le changement d'exécuteur" + +#: lutris/gui/config/common.py:420 +msgid "Runner not provided" +msgstr "Exécuteur non fourni" + +#: lutris/gui/config/common.py:423 +msgid "Please fill in the name" +msgstr "Merci d'indiquer le nom" + +#: lutris/gui/config/common.py:426 +msgid "Steam AppID not provided" +msgstr "Steam AppID non fourni" + +#: lutris/gui/config/common.py:444 +msgid "The following fields have invalid values: " +msgstr "Les champs suivants ont des valeurs invalides : " + +#: lutris/gui/config/common.py:451 +msgid "Current configuration is not valid, ignoring save request" +msgstr "" +"La configuration actuelle n'est pas valide, requête d'enregistrement ignorée" + +#: lutris/gui/config/common.py:486 +msgid "Please choose a custom image" +msgstr "Merci de sélectionner une image personnalisée" + +#: lutris/gui/config/common.py:494 +msgid "Images" +msgstr "Images" + +#: lutris/gui/config/edit_game.py:10 lutris/gui/config/runner.py:11 +#, python-format +msgid "Configure %s" +msgstr "Configurer %s" + +#: lutris/gui/config/preferences_box.py:11 lutris/gui/config/sysinfo_box.py:11 +msgid "Minimize client when a game is launched" +msgstr "Minimiser le client quand un jeu est lancé" + +#: lutris/gui/config/preferences_box.py:12 +msgid "Hide text under icons (requires restart)" +msgstr "Masquer le texte sous les icônes (nécessite un redémarrage)" + +#: lutris/gui/config/preferences_box.py:13 +msgid "Show Tray Icon (requires restart)" +msgstr "Montrer l'icône de la barre d'état système (nécessite un redémarrage)" + +#: lutris/gui/config/preferences_box.py:14 +msgid "Use dark theme (requires dark theme variant for Gtk)" +msgstr "" +"Utiliser le thème sombre (requiert une variante du thème sombre pour Gtk)" + +#: lutris/gui/config/preferences_box.py:29 +msgid "Interface options" +msgstr "Options d'interface" + +#: lutris/gui/config/preferences_dialog.py:18 +msgid "Lutris settings" +msgstr "Paramètres de Lutris" + +#: lutris/gui/config/preferences_dialog.py:26 +msgid "Interface" +msgstr "Interface" + +#: lutris/gui/config/preferences_dialog.py:27 lutris/gui/widgets/sidebar.py:271 +msgid "Runners" +msgstr "Exécuteurs" + +#: lutris/gui/config/preferences_dialog.py:28 lutris/gui/widgets/sidebar.py:270 +msgid "Sources" +msgstr "Sources" + +#: lutris/gui/config/preferences_dialog.py:29 +msgid "Hardware information" +msgstr "Information sur le matériel" + +#: lutris/gui/config/preferences_dialog.py:30 +msgid "Global options" +msgstr "Options globales" + +#: lutris/gui/config/runner_box.py:90 lutris/gui/widgets/sidebar.py:214 +#, python-format +msgid "Manage %s versions" +msgstr "Gérer %s versions" + +#: lutris/gui/config/runner_box.py:121 +#, python-format +msgid "Do you want to uninstall %s?" +msgstr "Êtes-vous sûr de vouloir désinstaller %s ?" + +#: lutris/gui/config/runner_box.py:122 +#, python-format msgid "This will remove %s and all associated data." msgstr "Cela supprimera %s et toutes les données associés." -#: share/lutris/ui/runners-dialog.ui:16 -msgid "Manage Runners" -msgstr "Gérer les exécuteurs" +#: lutris/gui/config/runners_box.py:17 +msgid "Add, remove or configure runners" +msgstr "Ajouter, supprimer ou configurer des exécuteurs" + +#: lutris/gui/config/runners_box.py:19 +msgid "" +"Runners are programs such as emulators, engines or translation layers " +"capable of running games." +msgstr "" +"Les exécuteurs sont des programmes comme des émulateurs, moteurs ou couches " +"de traduction capables d'exécuter des jeux." + +#: lutris/gui/config/services_box.py:18 +msgid "Enable integrations with game sources" +msgstr "Permettre les intégrations avec les sources de jeux" + +#: lutris/gui/config/services_box.py:20 +msgid "" +"Access your game libraries from various sources. Changes require a restart " +"to take effect." +msgstr "" +"Accédez à vos bibliothèques de jeux depuis différentes sources. Les " +"modifications nécessitent un redémarrage pour prendre effet." + +#: lutris/gui/config/sysinfo_box.py:12 +msgid "Hide text under icons" +msgstr "Masquer le texte sous les icônes" + +#: lutris/gui/config/sysinfo_box.py:13 +msgid "Show Tray Icon" +msgstr "Montrer l’icône de la barre d'état système" + +#: lutris/gui/config/sysinfo_box.py:38 +msgid "Copy to clipboard" +msgstr "Copier dans le presse-papiers" + +#: lutris/gui/config/sysinfo_box.py:41 +msgid "System information" +msgstr "Informations système" + +#: lutris/gui/dialogs/cache.py:11 +msgid "Cache configuration" +msgstr "Configuration du cache" + +#: lutris/gui/dialogs/cache.py:24 +msgid "Cache path" +msgstr "Chemin du cache" + +#: lutris/gui/dialogs/cache.py:28 +msgid "Set the folder for the cache path" +msgstr "Définir le dossier pour le chemin du cache" + +#: lutris/gui/dialogs/cache.py:37 +msgid "" +"If provided, this location will be used by installers to cache downloaded " +"files locally for future re-use. \n" +"If left empty, the installer files are discarded after the install " +"completion." +msgstr "" +"S’il est fourni, cet emplacement sera utilisé par les installateurs pour " +"mettre en cache localement les fichiers téléchargés afin de les réutiliser " +"ultérieurement. \n" +"S’il est laissé vide, les fichiers du programme d'installation seront " +"supprimés une fois l’installation terminée." + +#: lutris/gui/dialogs/download.py:12 +msgid "Downloading file" +msgstr "Téléchargement du fichier" + +#: lutris/gui/dialogs/download.py:15 +#, python-format +msgid "Downloading %s" +msgstr "Téléchargement de %s" + +#: lutris/gui/dialogs/__init__.py:133 lutris/gui/dialogs/__init__.py:160 +#: lutris/gui/dialogs/issue.py:74 lutris/gui/dialogs/runner_install.py:63 +#: lutris/gui/widgets/common.py:98 +msgid "_OK" +msgstr "_OK" + +#: lutris/gui/dialogs/__init__.py:151 +msgid "Please choose a file" +msgstr "Merci de sélectionner un fichier" + +#: lutris/gui/dialogs/__init__.py:181 +msgid "Checking for runtime updates, please wait…" +msgstr "" +"Vérification des mises à jour pour les environnements d’exécution, merci de " +"patienter…" + +#: lutris/gui/dialogs/__init__.py:212 +#, python-format +msgid "%s is already installed" +msgstr "%s est déjà installé" + +#: lutris/gui/dialogs/__init__.py:221 +msgid "Launch game" +msgstr "Lancer le jeu" + +#: lutris/gui/dialogs/__init__.py:225 +msgid "Install the game again" +msgstr "Installer de nouveau le jeu" + +#: lutris/gui/dialogs/__init__.py:229 lutris/gui/dialogs/__init__.py:272 +#: lutris/gui/dialogs/__init__.py:360 +msgid "OK" +msgstr "OK" + +#: lutris/gui/dialogs/__init__.py:248 +msgid "Select game to launch" +msgstr "Sélectionnez le jeu à lancer" + +#: lutris/gui/dialogs/__init__.py:333 +msgid "Login failed" +msgstr "Connexion échouée" + +#: lutris/gui/dialogs/__init__.py:344 +msgid "Install script for {}" +msgstr "Script d'installation pour {}" + +#: lutris/gui/dialogs/__init__.py:396 +msgid "Do not display this message again." +msgstr "Ne plus afficher ce message." + +#: lutris/gui/dialogs/__init__.py:417 +msgid "Wine is not installed on your system." +msgstr "Wine n’est pas installé sur votre système." + +#: lutris/gui/dialogs/__init__.py:419 +msgid "" +"Having Wine installed on your system guarantees that Wine builds from Lutris " +"will have all required dependencies.\n" +"\n" +"Please follow the instructions given in the Lutris Wiki to install Wine." +msgstr "" +"Avoir Wine installé sur votre système garantit que les constructions de Wine " +"à partir de Lutris auront toutes les dépendances requises.\n" +"Merci de suivre les instructions données dans Wiki de Lutris pour installer Wine." + +#: lutris/gui/dialogs/__init__.py:445 +#, python-format +msgid "Moving %s to %s..." +msgstr "Déplacement de %s vers %s..." + +#: lutris/gui/dialogs/issue.py:27 +msgid "Submit an issue" +msgstr "Soumettre un problème" + +#: lutris/gui/dialogs/issue.py:32 +msgid "" +"Describe the problem you're having in the text box below. This information " +"will be sent the Lutris team along with your system information. You can " +"also save this information locally if you are offline." +msgstr "" +"Décrivez le problème que vous rencontrez dans la zone de texte ci-dessous. " +"Ces informations seront envoyées à l'équipe Lutris avec les informations sur " +"votre système. Vous pouvez également enregistrer ces informations localement " +"si vous êtes hors ligne." + +#: lutris/gui/dialogs/issue.py:55 +msgid "_Save" +msgstr "_Enregistrer" + +#: lutris/gui/dialogs/issue.py:71 +msgid "Select a location to save the issue" +msgstr "Sélectionnez un emplacement pour enregistrer le problème" + +#: lutris/gui/dialogs/issue.py:91 +#, python-format +msgid "Issue saved in %s" +msgstr "Problème enregistré dans %s" + +#: lutris/gui/dialogs/runner_install.py:29 +#, python-format +msgid "Showing games using %s" +msgstr "Affichage des jeux utilisant %s" + +#: lutris/gui/dialogs/runner_install.py:71 +#, python-format +msgid "Waiting for response from %s" +msgstr "Attente d'une réponse de %s" + +#: lutris/gui/dialogs/runner_install.py:87 +#, python-format +msgid "Unable to get runner versions: %s" +msgstr "Échec de l'obtention des versions de l’exécuteur : %s" + +#: lutris/gui/dialogs/runner_install.py:101 +msgid "Unable to get runner versions from lutris.net" +msgstr "Échec de l'obtention des versions de l’exécuteur depuis lutris.net" + +#: lutris/gui/dialogs/runner_install.py:108 +#, python-format +msgid "%s version management" +msgstr "Gestion de la version %s" + +#: lutris/gui/dialogs/runner_install.py:158 +#, python-format +msgid "_View %d game" +msgid_plural "_View %d games" +msgstr[0] "_Voir %d jeu" +msgstr[1] "_Voir %d jeux" + +#: lutris/gui/dialogs/runner_install.py:190 +#: lutris/gui/dialogs/uninstall_game.py:34 +msgid "Uninstall" +msgstr "Désinstaller" + +#: lutris/gui/dialogs/runner_install.py:214 +msgid "Wine version usage" +msgstr "Utilisation de la version de Wine" + +#: lutris/gui/dialogs/runner_install.py:256 +msgid "Do you want to cancel the download?" +msgstr "Voulez-vous annuler le téléchargement ?" + +#: lutris/gui/dialogs/runner_install.py:257 +msgid "Download starting" +msgstr "Début du téléchargement" + +#: lutris/gui/dialogs/runner_install.py:307 +#, python-format +msgid "Version %s is not longer available" +msgstr "La version %s n'est plus disponible" + +#: lutris/gui/dialogs/runner_install.py:332 +msgid "Downloading…" +msgstr "Téléchargement…" + +#: lutris/gui/dialogs/runner_install.py:335 +msgid "Extracting…" +msgstr "Extraction…" + +#: lutris/gui/dialogs/runner_install.py:377 +msgid "Failed to retrieve the runner archive" +msgstr "Échec de la récupération de l'archive de l’exécuteur" + +#: lutris/gui/dialogs/uninstall_game.py:27 +#, python-format +msgid "Uninstall %s" +msgstr "Désinstaller %s" + +#: lutris/gui/dialogs/uninstall_game.py:38 +msgid "No file will be deleted" +msgstr "Aucun fichier ne sera supprimé" + +#: lutris/gui/dialogs/uninstall_game.py:41 +#, python-format +msgid "The folder %s is used by other games and will be kept." +msgstr "Le dossier %s est utilisé par d'autres jeux et sera conservé." + +#: lutris/gui/dialogs/uninstall_game.py:44 +msgid "Calculating size…" +msgstr "Calcul de la taille…" + +#: lutris/gui/dialogs/uninstall_game.py:48 +#, python-format +msgid "Content of %s are protected and will not be deleted." +msgstr "Les contenus de %s sont protégés et ne seront pas supprimés." + +#: lutris/gui/dialogs/uninstall_game.py:76 +#, python-format +msgid "Delete %s (%s)" +msgstr "Supprimer %s (%s)" + +#: lutris/gui/dialogs/uninstall_game.py:93 +#, python-format +msgid "" +"Please confirm.\n" +"Everything under %s\n" +"will be deleted." +msgstr "" +"Merci de bien vouloir confirmer.\n" +"Tout dans %s\n" +"sera supprimé." + +#: lutris/gui/dialogs/uninstall_game.py:96 +msgid "Permanently delete files?" +msgstr "Supprimer définitivement ces fichiers ?" + +#: lutris/gui/dialogs/uninstall_game.py:103 +msgid "Uninstalling game and deleting files..." +msgstr "Désinstallation du jeu et suppression des fichiers..." + +#: lutris/gui/dialogs/uninstall_game.py:105 +msgid "Uninstalling game..." +msgstr "Désinstallation du jeu..." + +#: lutris/gui/dialogs/uninstall_game.py:122 +#, python-format +msgid "Remove %s" +msgstr "Supprimer %s" + +#: lutris/gui/dialogs/uninstall_game.py:128 +#, python-format +msgid "" +"Completely remove %s from the library?\n" +"All play time will be lost." +msgstr "" +"Supprimer complètement %s de la bibliothèque ?\n" +"Tous les temps de jeu seront perdus." + +#: lutris/gui/dialogs/webconnect_dialog.py:106 +msgid "Loading..." +msgstr "Chargement..." + +#: lutris/gui/installer/file_box.py:95 +#, python-brace-format +msgid "Steam game {appid}" +msgstr "Jeu Steam {appid}" + +#: lutris/gui/installer/file_box.py:110 +#, python-brace-format +msgid "{file} on {host}" +msgstr "{file} sur {host}" + +#: lutris/gui/installer/file_box.py:121 +msgid "Download" +msgstr "Télécharger" + +#: lutris/gui/installer/file_box.py:123 +msgid "Use Cache" +msgstr "Utiliser le cache" + +#: lutris/gui/installer/file_box.py:125 lutris/runners/steam.py:29 +#: lutris/services/steam.py:73 +msgid "Steam" +msgstr "Steam" + +#: lutris/gui/installer/file_box.py:126 +msgid "Select File" +msgstr "Sélectionner un fichier" + +#: lutris/gui/installer/file_box.py:187 +msgid "Cache file for future installations" +msgstr "Fichier de cache pour les futures installations" + +#: lutris/gui/installer/file_box.py:206 +msgid "Source:" +msgstr "Source :" + +#: lutris/gui/installerwindow.py:65 +msgid "Cache" +msgstr "Cache" + +#: lutris/gui/installerwindow.py:76 +msgid "Abort and revert the installation" +msgstr "Abandonner et rétablir l’installation" + +#: lutris/gui/installerwindow.py:78 +msgid "_Eject" +msgstr "É_jecter" + +#: lutris/gui/installerwindow.py:79 +msgid "_View source" +msgstr "_Voir la source" + +#: lutris/gui/installerwindow.py:80 +msgid "_Install" +msgstr "_Installer" + +#: lutris/gui/installerwindow.py:81 +msgid "_Continue" +msgstr "_Continuer" + +#: lutris/gui/installerwindow.py:82 +msgid "_Launch" +msgstr "_Lancer" + +#: lutris/gui/installerwindow.py:83 +msgid "_Close" +msgstr "_Fermer" + +#: lutris/gui/installerwindow.py:122 +#, python-format +msgid "Missing field \"%s\" in install script" +msgstr "Champ « %s » manquant dans le script d'installation" + +#: lutris/gui/installerwindow.py:128 +#, python-format +msgid "Install %s" +msgstr "Installer %s" + +#: lutris/gui/installerwindow.py:162 +#, python-format +msgid "This game requires %s. Do you want to install it?" +msgstr "Ce jeu requiert %s. Voulez-vous l’installer ?" + +#: lutris/gui/installerwindow.py:163 +msgid "Missing dependency" +msgstr "Dépendance manquante" + +#: lutris/gui/installerwindow.py:175 +msgid "Installing {}" +msgstr "Installation de {}" + +#: lutris/gui/installerwindow.py:196 +msgid "Select installation directory" +msgstr "Sélectionnez un répertoire d'installation" + +#: lutris/gui/installerwindow.py:246 +msgid "Autodetect" +msgstr "Autodétection" + +#: lutris/gui/installerwindow.py:252 +msgid "Browse…" +msgstr "Parcourir…" + +#: lutris/gui/installerwindow.py:259 +msgid "Select the folder where the disc is mounted" +msgstr "Sélectionnez le dossier où le disque est monté" + +#: lutris/gui/installerwindow.py:320 +msgid "" +"Please review the files needed for the installation then click 'Continue'" +msgstr "" +"Veuillez vérifier les fichiers nécessaires à l'installation et cliquez sur " +"\"Continuer\"." + +#: lutris/gui/installerwindow.py:358 +msgid "" +"This game has extra content. \n" +"Select which one you want and they will be available in the 'extras' folder " +"where the game is installed." +msgstr "" +"Ce jeu a des contenus supplémentaires.\n" +"Sélectionnez celui que vous souhaitez et ils seront disponible dans le " +"dossier 'extras' où le jeu est installé." + +#: lutris/gui/installerwindow.py:459 +#, python-format +msgid "Unable to get files: %s" +msgstr "Échec de l'obtention des fichiers : %s" + +#: lutris/gui/installerwindow.py:554 +msgid "Remove game files" +msgstr "Supprimer les fichiers du jeu" + +#: lutris/gui/installerwindow.py:560 +msgid "Are you sure you want to cancel the installation?" +msgstr "Êtes-vous sûr de vouloir annuler l’installation ?" + +#: lutris/gui/installerwindow.py:561 +msgid "Cancel installation?" +msgstr "Annuler l’installation ?" + +#: lutris/gui/lutriswindow.py:345 +#, python-format +msgid "Connect your %s account to access your games" +msgstr "Connectez-vous à votre compte %s pour accéder à vos jeux" + +#: lutris/gui/lutriswindow.py:416 +#, python-format +msgid "No games matching '%s' found " +msgstr "Aucun jeu correspondant à '%s' trouvé " + +#: lutris/gui/lutriswindow.py:419 +msgid "Add games to your favorites to see them here." +msgstr "Ajoutez des jeux à vos favoris pour les voir ici." + +#: lutris/gui/lutriswindow.py:421 +msgid "No installed games found. Press Ctrl+H to show all games." +msgstr "Aucun jeu installé trouvé. Pressez Ctrl+H pour montrer tous les jeux." + +#: lutris/gui/lutriswindow.py:430 +msgid "No games found" +msgstr "Aucun jeu trouvé" + +#: lutris/gui/views/list.py:48 lutris/runners/dolphin.py:26 +#: lutris/runners/scummvm.py:178 +msgid "Platform" +msgstr "Plateforme" + +#: lutris/gui/widgets/common.py:72 +msgid "Browse..." +msgstr "Parcourir..." + +#: lutris/gui/widgets/common.py:136 +msgid "" +"Warning! The selected path is located on a drive formatted by " +"Windows.\n" +"Games and programs installed on Windows drives usually don't work." +msgstr "" +"Attention ! Le chemin sélectionné est situé dans un disque formaté " +"par Windows.\n" +"Les jeux et programmes installés sur des disques Windows ne fonctionnent " +"généralement pas." + +#: lutris/gui/widgets/common.py:144 +msgid "" +"Warning! The selected path contains files. Installation might not " +"work properly." +msgstr "" +"Attention ! Le chemin sélectionné contient des fichiers. " +"L'installation pourrait ne pas fonctionner correctement." + +#: lutris/gui/widgets/common.py:152 +msgid "" +"Warning The destination folder is not writable by the current user." +msgstr "" +"Attention ! Le dossier de destination n'est pas modifiable par " +"l'utilisateur actuel." + +#: lutris/gui/widgets/common.py:254 +msgid "Add" +msgstr "Ajouter" + +#: lutris/gui/widgets/common.py:258 +msgid "Delete" +msgstr "Supprimer" + +#: lutris/gui/widgets/download_progress_box.py:88 +msgid "Retry" +msgstr "Réessayer" + +#: lutris/gui/widgets/download_progress_box.py:115 +msgid "Download interrupted" +msgstr "Téléchargement interrompu" + +#: lutris/gui/widgets/download_progress_box.py:123 +#, python-brace-format +msgid "{downloaded:0.2f} / {size:0.2f}MB ({speed:0.2f}MB/s), {time} remaining" +msgstr "{downloaded:0.2f} / {size:0.2f}MB ({speed:0.2f}MB/s), {time} restant" + +#: lutris/gui/widgets/game_bar.py:150 +#, python-format +msgid "" +"Platform:\n" +"%s" +msgstr "" +"Plateforme :\n" +"%s" + +#: lutris/gui/widgets/game_bar.py:159 +#, python-format +msgid "" +"Time played:\n" +"%s" +msgstr "" +"Temps joué :\n" +"%s" + +#: lutris/gui/widgets/game_bar.py:168 +#, python-format +msgid "" +"Last played:\n" +"%s" +msgstr "" +"Dernier joué :\n" +"%s" + +#: lutris/gui/widgets/game_bar.py:204 +msgid "Launching" +msgstr "Lancement" + +#: lutris/gui/widgets/sidebar.py:128 lutris/gui/widgets/sidebar.py:161 +msgid "Reload" +msgstr "Rechargement" + +#: lutris/gui/widgets/sidebar.py:160 lutris/gui/widgets/sidebar.py:204 +msgid "Run" +msgstr "Exécuter" + +#: lutris/gui/widgets/sidebar.py:162 +msgid "Disconnect" +msgstr "Déconnecter" + +#: lutris/gui/widgets/sidebar.py:163 +msgid "Connect" +msgstr "Se connecter" + +#: lutris/gui/widgets/sidebar.py:199 +msgid "Manage Versions" +msgstr "Gérer les versions" + +#: lutris/gui/widgets/sidebar.py:269 +msgid "Library" +msgstr "Bibliothèque" + +#: lutris/gui/widgets/sidebar.py:272 +msgid "Platforms" +msgstr "Plateformes" + +#: lutris/gui/widgets/sidebar.py:316 lutris/util/system.py:27 +msgid "Games" +msgstr "Jeux" + +#: lutris/gui/widgets/sidebar.py:325 +msgid "Recent" +msgstr "Récent" + +#: lutris/gui/widgets/sidebar.py:334 +msgid "Favorites" +msgstr "Favoris" + +#: lutris/gui/widgets/sidebar.py:342 +msgid "Running" +msgstr "En cours d’exécution" + +#: lutris/gui/widgets/status_icon.py:67 +msgid "Show Lutris" +msgstr "Montrer Lutris" + +#: lutris/gui/widgets/status_icon.py:72 +msgid "Quit" +msgstr "Quitter" + +#: lutris/installer/commands.py:66 +#, python-brace-format +msgid "One of {params} parameter is mandatory for the {cmd} command" +msgstr "Un des paramètres {params} est nécessaire pour la commande {cmd}" + +#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:123 +#: lutris/installer/interpreter.py:146 +msgid " or " +msgstr " ou " + +#: lutris/installer/commands.py:73 +#, python-brace-format +msgid "The {param} parameter is mandatory for the {cmd} command" +msgstr "Le paramètre {param} est nécessaire pour la commande {cmd}" + +#: lutris/installer/commands.py:90 +#, python-format +msgid "Invalid file '%s'. Can't make it executable" +msgstr "Fichier '%s' invalide. Impossible de le rendre exécutable" + +#: lutris/installer/commands.py:103 +msgid "" +"Parameters file and command can't be used at the same time for the execute " +"command" +msgstr "" +"Les paramètres \"fichier\" et \"commande\" ne peuvent pas être utilisés en " +"même temps pour la commande \"exécuter\"" + +#: lutris/installer/commands.py:138 +msgid "No parameters supplied to execute command." +msgstr "Aucun paramètre fourni pour exécuter la commande." + +#: lutris/installer/commands.py:152 +#, python-format +msgid "Unable to find executable %s" +msgstr "Impossible de trouver l'exécutable %s" + +#: lutris/installer/commands.py:186 +#, python-format +msgid "%s does not exist" +msgstr "%s n’existe pas" + +#: lutris/installer/commands.py:192 +#, python-format +msgid "Extracting %s" +msgstr "Extraction de %s" + +#: lutris/installer/commands.py:234 +msgid "" +"Insert or mount game disc and click Autodetect or\n" +"use Browse if the disc is mounted on a non standard location." +msgstr "" +"Insérez ou montez le disque de jeu et cliquez sur Auto-détecter ou\n" +"utilisez Parcourir si le disque est monté sur un emplacement non standard." + +#: lutris/installer/commands.py:238 +#, python-format +msgid "" +"\n" +"\n" +"Lutris is looking for a mounted disk drive or image \n" +"containing the following file or folder:\n" +"%s" +msgstr "" +"\n" +"\n" +"Lutris recherche un lecteur de disque monté ou une image \n" +"contenant le fichier ou le dossier suivant :\n" +"%s" + +#: lutris/installer/commands.py:280 +#, python-format +msgid "Source does not exist: %s" +msgstr "La source n'existe pas : %s" + +#: lutris/installer/commands.py:306 +#, python-format +msgid "Invalid source for 'move' operation: %s" +msgstr "Source non valide pour l’opération 'déplacer' : %s" + +#: lutris/installer/commands.py:325 +#, python-brace-format +msgid "" +"Can't move {src} \n" +"to destination {dst}" +msgstr "" +"Impossible de déplacer {src}\n" +"vers la destination {dst}" + +#: lutris/installer/commands.py:332 +#, python-format +msgid "Rename error, source path does not exist: %s" +msgstr "Erreur de renommage, le chemin source n'existe pas : %s" + +#: lutris/installer/commands.py:339 +#, python-format +msgid "Rename error, destination already exists: %s" +msgstr "Erreur de renommage, la destination existe déjà : %s" + +#: lutris/installer/commands.py:355 +msgid "Missing parameter src" +msgstr "Paramètre src manquant" + +#: lutris/installer/commands.py:358 +msgid "Wrong value for 'src' param" +msgstr "Valeur erronée pour le param 'src'" + +#: lutris/installer/commands.py:362 +msgid "Wrong value for 'dst' param" +msgstr "Valeur erronée pour le param 'dst'" + +#: lutris/installer/commands.py:451 +#, python-format +msgid "Command exited with code %s" +msgstr "La commande s'est terminée avec le code %s" + +#: lutris/installer/commands.py:469 +#, python-format +msgid "Wrong value for write_file mode: '%s'" +msgstr "Valeur erronée pour le mode write_file : '%s'" + +#: lutris/installer/installer_file.py:26 +#, python-format +msgid "missing field `url` for file `%s`" +msgstr "champ `url` manquant pour le fichier `%s`" + +#: lutris/installer/installer_file.py:38 +#, python-format +msgid "missing field `filename` in file `%s`" +msgstr "champ `filename` manquant dans le fichier `%s`" + +#: lutris/installer/installer_file.py:176 +msgid "Invalid checksum, expected format (type:hash) " +msgstr "Somme de contrôle invalide, format attendu (type:hash) " + +#: lutris/installer/installer_file.py:179 +msgid " checksum mismatch " +msgstr " aucune correspondance entre les sommes de contrôle " + +#: lutris/installer/installer.py:179 +msgid "Game config key must be a string" +msgstr "La clé de configuration du jeu doit être une chaîne" + +#: lutris/installer/installer.py:228 +msgid "Invalid 'game' section" +msgstr "Section 'jeu' invalide" + +#: lutris/installer/interpreter.py:53 +msgid "This installer doesn't have a 'script' section" +msgstr "Cet installateur n'a pas de section 'script'" + +#: lutris/installer/interpreter.py:57 +msgid "" +"Invalid script: \n" +"{}" +msgstr "" +"Script invalide :\n" +"{}" + +#: lutris/installer/interpreter.py:123 lutris/installer/interpreter.py:126 +#, python-format +msgid "This installer requires %s on your system" +msgstr "Cet installateur requiert %s sur votre système" + +#: lutris/installer/interpreter.py:139 +msgid "You need to install {} before" +msgstr "Vous devez installer {} avant" + +#: lutris/installer/interpreter.py:187 +msgid "Lutris does not have the necessary permissions to install to path:" +msgstr "" +"Lutris n'a pas les permissions nécessaires pour installer vers le chemin :" + +#: lutris/installer/interpreter.py:271 +#, python-format +msgid "Invalid runner provided %s" +msgstr "Exécuteur invalide fourni %s" + +#: lutris/installer/interpreter.py:297 +msgid "Installing game data" +msgstr "Installation des données du jeu" + +#: lutris/installer/interpreter.py:309 +msgid "Installer commands are not formatted correctly" +msgstr "Les commandes de l'installateur ne sont pas formatées correctement" + +#: lutris/installer/interpreter.py:342 +#, python-format +msgid "The command \"%s\" does not exist." +msgstr "La commande « %s » n'existe pas." + +#: lutris/installer/interpreter.py:363 +#, python-format +msgid "" +"The executable at path %s can't be found, please check the destination " +"folder.\n" +"Some parts of the installation process may have not completed successfully." +msgstr "" +"L'exécutable du chemin %s est introuvable, veuillez vérifier le dossier de " +"destination.\n" +"Il se peut que certaines parties du processus d'installation ne se soient " +"pas déroulées correctement." + +#: lutris/installer/interpreter.py:369 +msgid "Installation completed!" +msgstr "Installation terminée !" + +#: lutris/installer/steam_installer.py:47 +#, python-format +msgid "Malformed steam path: %s" +msgstr "Chemin steam malformé : %s" + +#: lutris/runners/atari800.py:19 +msgid "Desktop resolution" +msgstr "Résolution de l'ordinateur" + +#: lutris/runners/atari800.py:25 +msgid "Atari800" +msgstr "Atari800" + +#: lutris/runners/atari800.py:26 +msgid "Atari 8bit computers" +msgstr "Ordinateurs Atari 8bit" + +#: lutris/runners/atari800.py:29 +msgid "Atari 400, 800 and XL emulator" +msgstr "Émulateur Atari 400, 800 et XL" + +#: lutris/runners/atari800.py:41 lutris/runners/jzintv.py:19 +#: lutris/runners/libretro.py:74 lutris/runners/mame.py:78 +#: lutris/runners/mednafen.py:57 lutris/runners/mupen64plus.py:20 +#: lutris/runners/o2em.py:45 lutris/runners/openmsx.py:17 +#: lutris/runners/osmose.py:21 lutris/runners/snes9x.py:27 +#: lutris/runners/vice.py:38 lutris/runners/yuzu.py:23 +msgid "ROM file" +msgstr "Fichier ROM" + +#: lutris/runners/atari800.py:43 +msgid "" +"The game data, commonly called a ROM image. \n" +"Supported formats: ATR, XFD, DCM, ATR.GZ, XFD.GZ and PRO." +msgstr "" +"Les données du jeu, communément appelées image ROM. \n" +"Formats pris en charge : ATR, XFD, DCM, ATR.GZ, XFD.GZ et PRO." + +#: lutris/runners/atari800.py:57 +msgid "BIOS location" +msgstr "Emplacement BIOS" + +#: lutris/runners/atari800.py:59 +msgid "" +"A folder containing the Atari 800 BIOS files.\n" +"They are provided by Lutris so you shouldn't have to change this." +msgstr "" +"Un dossier contenant les fichiers BIOS de l'Atari 800.\n" +"Ils sont fournis par Lutris donc vous ne devriez pas avoir à les modifier." + +#: lutris/runners/atari800.py:70 +msgid "Emulate Atari 800" +msgstr "Émuler Atari 800" + +#: lutris/runners/atari800.py:71 +msgid "Emulate Atari 800 XL" +msgstr "Émuler Atari 800 Xl" + +#: lutris/runners/atari800.py:72 +msgid "Emulate Atari 320 XE (Compy Shop)" +msgstr "Émuler Atari 320 XE (Compy Shop)" + +#: lutris/runners/atari800.py:73 +msgid "Emulate Atari 320 XE (Rambo)" +msgstr "Émuler Atari 320 XE (Rambo)" + +#: lutris/runners/atari800.py:74 +msgid "Emulate Atari 5200" +msgstr "Émuler Atari 5200" + +#: lutris/runners/atari800.py:79 lutris/runners/mame.py:83 +#: lutris/runners/vice.py:88 +msgid "Machine" +msgstr "Machine" + +#: lutris/runners/atari800.py:85 lutris/runners/easyrpg.py:144 +#: lutris/runners/hatari.py:72 lutris/runners/jzintv.py:43 +#: lutris/runners/libretro.py:94 lutris/runners/mame.py:157 +#: lutris/runners/mednafen.py:74 lutris/runners/mupen64plus.py:28 +#: lutris/runners/o2em.py:75 lutris/runners/osmose.py:34 +#: lutris/runners/pcsx2.py:26 lutris/runners/pico8.py:38 +#: lutris/runners/redream.py:25 lutris/runners/reicast.py:42 +#: lutris/runners/residualvm.py:39 lutris/runners/scummvm.py:76 +#: lutris/runners/snes9x.py:36 lutris/runners/vice.py:57 +msgid "Fullscreen" +msgstr "Plein écran" + +#: lutris/runners/atari800.py:92 +msgid "Fullscreen resolution" +msgstr "Résolution de plein écran" + +#: lutris/runners/atari800.py:104 +msgid "Could not download Atari 800 BIOS archive" +msgstr "Impossible de télécharger l’archive Atari 800 BIOS" + +#: lutris/runners/dolphin.py:10 +msgid "GameCube and Wii emulator" +msgstr "Émulateur GameCube et Wii" + +#: lutris/runners/dolphin.py:11 lutris/services/dolphin.py:27 +msgid "Dolphin" +msgstr "Dolphin" + +#: lutris/runners/dolphin.py:12 lutris/runners/dolphin.py:27 +msgid "Nintendo GameCube" +msgstr "Nintendo GameCube" + +#: lutris/runners/dolphin.py:12 lutris/runners/dolphin.py:27 +msgid "Nintendo Wii" +msgstr "Nintendo Wii" + +#: lutris/runners/dolphin.py:21 lutris/runners/pcsx2.py:18 +msgid "ISO file" +msgstr "Fichier ISO" + +#: lutris/runners/dolphin.py:34 lutris/runners/pcsx2.py:38 +#: lutris/runners/rpcs3.py:23 +msgid "No GUI" +msgstr "Pas d’interface" + +#: lutris/runners/dolphin.py:36 +msgid "Disable the graphical user interface." +msgstr "Désactiver l’interface graphique utilisateur." + +#: lutris/runners/dolphin.py:41 +msgid "Batch" +msgstr "Lot" + +#: lutris/runners/dolphin.py:44 +msgid "Exit Dolphin with emulator." +msgstr "Quittez Dolphin avec l’émulateur." + +#: lutris/runners/dolphin.py:50 +msgid "Custom Global User Directory" +msgstr "Répertoire Global Personnalisé des Utilisateurs" + +#: lutris/runners/dosbox.py:13 +msgid "DOSBox" +msgstr "DOSBox" + +#: lutris/runners/dosbox.py:14 +msgid "MS-DOS emulator" +msgstr "Émulateur MS-DOS" + +#: lutris/runners/dosbox.py:15 +msgid "MS-DOS" +msgstr "MS-DOS" + +#: lutris/runners/dosbox.py:23 +msgid "Main file" +msgstr "Fichier principal" + +#: lutris/runners/dosbox.py:25 +msgid "" +"The CONF, EXE, COM or BAT file to launch.\n" +"It can be left blank if the launch of the executable is managed in the " +"config file." +msgstr "" +"Le fichier CONF, EXE, COM ou BAT à lancer.\n" +"Il peut être laissé vide si le lancement de l'exécutable est géré dans le " +"fichier de configuration." + +#: lutris/runners/dosbox.py:33 +msgid "Configuration file" +msgstr "Fichier de configuration" + +#: lutris/runners/dosbox.py:35 +msgid "" +"Start DOSBox with the options specified in this file. \n" +"It can have a section in which you can put commands to execute on startup. " +"Read DOSBox's documentation for more information." +msgstr "" +"Démarrer DOSBox avec les options spécifiées dans ce fichier.\n" +"Il peut avoir une section dans laquelle vous pouvez mettre des commandes à " +"exécuter au démarrage. Lisez la documentation de DOSBox pour plus " +"d'informations." + +#: lutris/runners/dosbox.py:44 +msgid "Command line arguments" +msgstr "Arguments de ligne de commande" + +#: lutris/runners/dosbox.py:45 +msgid "Command line arguments used when launching DOSBox" +msgstr "Arguments de ligne de commande utilisés lors du lancement de DOSBox" + +#: lutris/runners/dosbox.py:51 lutris/runners/linux.py:39 +#: lutris/runners/wine.py:61 +msgid "Working directory" +msgstr "Répertoire de travail" + +#: lutris/runners/dosbox.py:53 lutris/runners/linux.py:41 +#: lutris/runners/wine.py:63 +msgid "" +"The location where the game is run from.\n" +"By default, Lutris uses the directory of the executable." +msgstr "" +"L'emplacement d’où le jeu est exécuté\n" +"Par défaut, Lutris utilise le répertoire de l’exécutable." + +#: lutris/runners/dosbox.py:61 +msgid "none" +msgstr "aucun" + +#: lutris/runners/dosbox.py:85 lutris/runners/scummvm.py:101 +msgid "Graphic scaler" +msgstr "Échelleur graphique" + +#: lutris/runners/dosbox.py:93 lutris/runners/scummvm.py:119 +msgid "" +"The algorithm used to scale up the game's base resolution, resulting in " +"different visual styles. " +msgstr "" +"L’algorithme utilisé pour mettre la résolution de base du jeu à l’échelle, " +"résultat en différents styles visuels. " + +#: lutris/runners/dosbox.py:98 +msgid "Exit DOSBox with the game" +msgstr "Quitter DOSBox avec le jeu" + +#: lutris/runners/dosbox.py:101 +msgid "Shut down DOSBox when the game is quit." +msgstr "Éteindre DOSBox quand le jeu est quitté." + +#: lutris/runners/dosbox.py:105 +msgid "Open game in fullscreen" +msgstr "Ouvrir le jeu en plein écran" + +#: lutris/runners/dosbox.py:108 +msgid "Tells DOSBox to launch the game in fullscreen." +msgstr "Dit à DOSBox de lancer le jeu en plein écran." + +#: lutris/runners/easyrpg.py:10 +msgid "EasyRPG Player" +msgstr "Player EasyRPG" + +#: lutris/runners/easyrpg.py:11 +msgid "Runs RPG Maker 2000/2003 games" +msgstr "Exécute des jeux RPG Maker 2000 / 2003" + +#: lutris/runners/easyrpg.py:12 lutris/runners/linux.py:14 +#: lutris/runners/linux.py:16 lutris/runners/residualvm.py:15 +#: lutris/runners/scummvm.py:14 lutris/runners/steam.py:30 +#: lutris/runners/zdoom.py:15 +msgid "Linux" +msgstr "Linux" + +#: lutris/runners/easyrpg.py:22 +msgid "Game directory" +msgstr "Répertoire du jeu" + +#: lutris/runners/easyrpg.py:23 +msgid "Select the directory of the game. (required)" +msgstr "Sélectionnez le répertoire du jeu. (requis)" + +#: lutris/runners/easyrpg.py:28 +msgid "Encoding" +msgstr "Encodage" + +#: lutris/runners/easyrpg.py:30 +msgid "" +"Instead of auto detecting the encoding or using the one in RPG_RT.ini, the " +"specified encoding is used. Use 'auto' for automatic detection." +msgstr "" +"Au lieu de détecter automatiquement le codage ou d’utiliser celui de RPG_RT." +"ini, le codage spécifié est utilisé. Utilisez 'auto' pour une détection " +"automatique." + +#: lutris/runners/easyrpg.py:38 +msgid "Engine" +msgstr "Moteur" + +#: lutris/runners/easyrpg.py:39 +msgid "Disable auto detection of the simulated engine." +msgstr "Désactiver l’auto-détection du moteur simulé." + +#: lutris/runners/easyrpg.py:41 lutris/runners/fsuae.py:50 +#: lutris/runners/mame.py:173 lutris/runners/wine.py:82 +#: lutris/runners/wine.py:416 +msgid "Auto" +msgstr "Auto" + +#: lutris/runners/easyrpg.py:42 +msgid "RPG Maker 2000 engine (v1.00 - v1.10)" +msgstr "Moteur RPG Maker 2000 (v1.00 - v1.10)" + +#: lutris/runners/easyrpg.py:43 +msgid "RPG Maker 2000 engine (v1.50 - v1.51)" +msgstr "Moteur RPG Maker 2000 (v1.50 - v1.51)" + +#: lutris/runners/easyrpg.py:44 +msgid "RPG Maker 2000 (English release) engine" +msgstr "Moteur RPG Maker 2000 (version anglaise)" + +#: lutris/runners/easyrpg.py:45 +msgid "RPG Maker 2003 engine (v1.00 - v1.04)" +msgstr "Moteur RPG Maker 2003 (v1.00 - v1.04)" + +#: lutris/runners/easyrpg.py:46 +msgid "RPG Maker 2003 engine (v1.05 - v1.09a)" +msgstr "Moteur RPG Maker 2003 (v1.05 - v1.09a)" + +#: lutris/runners/easyrpg.py:47 +msgid "RPG Maker 2003 (English release) engine" +msgstr "Moteur RPG Maker 2003 (version anglaise)" + +#: lutris/runners/easyrpg.py:54 lutris/runners/zdoom.py:46 +msgid "Save path" +msgstr "Enregistrer le chemin" + +#: lutris/runners/easyrpg.py:56 +msgid "" +"Instead of storing save files in the game directory they are stored in the " +"specified path. The directory must exist." +msgstr "" +"Au lieu de stocker les fichiers de sauvegarde dans le répertoire du jeu, ils " +"sont stockés dans le chemin spécifié. Le répertoire doit exister." + +#: lutris/runners/easyrpg.py:63 +msgid "New game" +msgstr "Nouveau jeu" + +#: lutris/runners/easyrpg.py:64 +msgid "Skip the title scene and start a new game directly." +msgstr "Passer la scène titre et commencer un nouveau jeu directement." + +#: lutris/runners/easyrpg.py:70 +msgid "Load game ID" +msgstr "Charger l’ID du jeu" + +#: lutris/runners/easyrpg.py:72 +msgid "Skip the title scene and load SaveXX.lsd. Set to '0' to disable." +msgstr "" +"Ignorer la scène titre et charger SaveXX.lsd. Mettre à '0' pour désactiver." + +#: lutris/runners/easyrpg.py:82 +msgid "Start map ID" +msgstr "Démarrer map ID" + +#: lutris/runners/easyrpg.py:84 +msgid "" +"Overwrite the map used for new games and use MapXXXX.lmu instead. Set to '0' " +"to disable. \n" +"\n" +"Incompatible with 'Load game ID'." +msgstr "" +"Ecrase la carte utilisée pour les nouvelles parties et utilise MapXXXX.lmu à " +"la place. Mettre à '0' pour désactiver. \n" +"\n" +"Incompatible avec 'Charger l’ID du jeu'." + +#: lutris/runners/easyrpg.py:95 +msgid "Start position" +msgstr "Démarrer la position" + +#: lutris/runners/easyrpg.py:97 +msgid "" +"Overwrite the party start position and move the party to the specified " +"position. Provide two numbers separated by a space. \n" +"\n" +"Incompatible with 'Load game ID'." +msgstr "" +"Écraser la position de départ du groupe et déplacer le groupe à la position " +"spécifiée. Fournir deux nombres séparés par un espace. \n" +"\n" +"Incompatible avec 'Charger l’ID du jeu'." + +#: lutris/runners/easyrpg.py:106 +msgid "Start party" +msgstr "Commencer le groupe" + +#: lutris/runners/easyrpg.py:108 +msgid "" +"Overwrite the starting party members with the actors with the specified IDs. " +"Provide one to four numbers separated by spaces. \n" +"\n" +"Incompatible with 'Load game ID'." +msgstr "" +"Remplacer les membres du groupe de départ par les acteurs ayant les ID " +"spécifiés. Fournissez un à quatre chiffres séparés par des espaces. \n" +"\n" +"Incompatible avec « Charger l’identifiant du jeu »." + +#: lutris/runners/easyrpg.py:117 +msgid "Monster party" +msgstr "Groupe de monstre" + +#: lutris/runners/easyrpg.py:118 +msgid "Start a battle test with the specified monster party." +msgstr "Commencez un test de combat avec le groupe de monstres spécifié." + +#: lutris/runners/easyrpg.py:123 +msgid "Record input" +msgstr "Enregistrement de l’entrée" + +#: lutris/runners/easyrpg.py:124 +msgid "Records all button input to the specified log file." +msgstr "" +"Enregistre toutes les entrées des boutons dans le fichier journal spécifié." + +#: lutris/runners/easyrpg.py:129 +msgid "Replay input" +msgstr "Rejouer l’entrée" + +#: lutris/runners/easyrpg.py:131 +msgid "" +"Replays button input from the specified log file, as generated by 'Record " +"input'. If the RNG seed and the state of the save file directory is also the " +"same as it was when the log was recorded, this should reproduce an identical " +"run to the one recorded." +msgstr "" +"Reprend l'entrée des boutons du fichier journal spécifié, telle qu’elle a " +"été générée par « Enregistrement de l'entrée ». Si la graine RNG et l'état " +"du répertoire du fichier de sauvegarde sont également les mêmes que lors de " +"l'enregistrement du journal, cela devrait reproduire une exécution identique " +"à celle enregistrée." + +#: lutris/runners/easyrpg.py:145 +msgid "Start in fullscreen mode." +msgstr "Démarrer en mode plein écran." + +#: lutris/runners/easyrpg.py:151 +msgid "Enable audio" +msgstr "Activer l’audio" + +#: lutris/runners/easyrpg.py:153 +msgid "Switch off to disable audio (in case you prefer your own music)." +msgstr "" +"Éteindre pour désactiver l’audio (dans le cas où vous préférez votre propre " +"musique)." + +#: lutris/runners/easyrpg.py:161 +msgid "Enable mouse" +msgstr "Activer la souris" + +#: lutris/runners/easyrpg.py:163 +msgid "Use mouse click for decision and scroll wheel for lists." +msgstr "" +"Utiliser le clic de la souris pour la décision et la roulette de défilement " +"pour les listes." + +#: lutris/runners/easyrpg.py:170 +msgid "Enable touch" +msgstr "Activer le toucher" + +#: lutris/runners/easyrpg.py:171 +msgid "Use one/two finger tap for decision/cancel." +msgstr "Utiliser le toucher à un / deux doigts pour la décision / annuler." + +#: lutris/runners/easyrpg.py:177 +msgid "Hide title" +msgstr "Cacher le titre" + +#: lutris/runners/easyrpg.py:179 +msgid "Hide the title background image and center the command menu." +msgstr "Cacher l’arrière-plan du titre et centrer le menu de commande." + +#: lutris/runners/easyrpg.py:186 +msgid "Enable VSync" +msgstr "Activer VSync" + +#: lutris/runners/easyrpg.py:188 +msgid "" +"Switch off to disable VSync and use the FPS limit. VSync may or may not be " +"supported on all platforms." +msgstr "" +"Éteindre pour désactiver VSync et utiliser la limite de FPS. VSync peut ou " +"peut ne pas être supporté sur toutes les plateformes." + +#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:318 +msgid "FPS limit" +msgstr "Limite de FPS" + +#: lutris/runners/easyrpg.py:198 +msgid "" +"Set a custom frames per second limit. If unspecified, the default is 60 FPS. " +"Set to '0' to disable the frame limiter. This option may not be supported on " +"all platforms." +msgstr "" +"Définir une limite personnalisée d’images par secondes. Si non-spécifiée, " +"celle par défaut est de 60 FPS. Mettez à 0 pour désactiver le limiteur " +"d’images. Cette option peut ne pas être supportée sur toutes les plateformes." + +#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:442 +msgid "Show FPS" +msgstr "Afficher les FPS" + +#: lutris/runners/easyrpg.py:207 +msgid "Enable frames per second counter." +msgstr "Activer le compteur d’images par secondes." + +#: lutris/runners/easyrpg.py:209 lutris/runners/mednafen.py:85 +#: lutris/runners/wine.py:439 +msgid "Disabled" +msgstr "Désactivé" + +#: lutris/runners/easyrpg.py:210 +msgid "Fullscreen & title bar" +msgstr "Plein écran & Barre de titre" + +#: lutris/runners/easyrpg.py:211 +msgid "Fullscreen, title bar & window" +msgstr "Plein écran, barre de titre & fenêtre" + +#: lutris/runners/easyrpg.py:218 +msgid "RNG seed" +msgstr "Graine RNG" + +#: lutris/runners/easyrpg.py:219 +msgid "Seeds the random number generator" +msgstr "Ensemence le générateur de nombres aléatoires" + +#: lutris/runners/easyrpg.py:224 +msgid "Test play" +msgstr "Test Play" + +#: lutris/runners/easyrpg.py:225 +msgid "Enable TestPlay mode." +msgstr "Activer le mode TestPlay" + +#: lutris/runners/easyrpg.py:231 +msgid "Enable RTP" +msgstr "Activer RTP" + +#: lutris/runners/easyrpg.py:233 +msgid "Switch off to disable support for the Runtime Package (RTP)." +msgstr "Éteindre pour désactiver le support pour le « Runtime Package » (RTP)" + +#: lutris/runners/easyrpg.py:240 +msgid "RPG2000 RTP location" +msgstr "Emplacement RTP RPG2000" + +#: lutris/runners/easyrpg.py:242 +msgid "" +"Full path to a directory containing an extracted RPG Maker 2000 Run-Time-" +"Package (RTP)." +msgstr "" +"Chemin complet vers un répertoire contenant un Run-Time-Package (RTP) " +"extrait de RPG Maker 2000." + +#: lutris/runners/easyrpg.py:249 +msgid "RPG2003 RTP location" +msgstr "Emplacement RTP RPG2003" + +#: lutris/runners/easyrpg.py:251 +msgid "" +"Full path to a directory containing an extracted RPG Maker 2003 Run-Time-" +"Package (RTP)." +msgstr "" +"Chemin complet vers un répertoire contenant un Run-Time-Package (RTP) " +"extrait de RPG Maker 2003." + +#: lutris/runners/easyrpg.py:258 +msgid "Fallback RTP location" +msgstr "Emplacement RTP de repli" + +#: lutris/runners/easyrpg.py:259 +msgid "Full path to a directory containing a combined RTP." +msgstr "Chemin complet vers un répertoire contenant un RTP combiné" + +#: lutris/runners/easyrpg.py:349 +msgid "No game directory provided" +msgstr "Aucun répertoire de jeu fourni" + +#: lutris/runners/easyrpg.py:409 +msgid "The directory {} could not be found" +msgstr "Le répertoire {} n’a pu être trouvé" + +#: lutris/runners/fsuae.py:11 +msgid "FS-UAE" +msgstr "FS-UAE" + +#: lutris/runners/fsuae.py:12 +msgid "Amiga emulator" +msgstr "Émulateur Amiga" + +#: lutris/runners/fsuae.py:14 lutris/runners/fsuae.py:25 +msgid "Amiga 500" +msgstr "Amiga 500" + +#: lutris/runners/fsuae.py:15 +msgid "Amiga 500+" +msgstr "Amiga 500+" + +#: lutris/runners/fsuae.py:16 +msgid "Amiga 600" +msgstr "Amiga 600" + +#: lutris/runners/fsuae.py:17 +msgid "Amiga 1000" +msgstr "Amiga 1000" + +#: lutris/runners/fsuae.py:18 lutris/runners/fsuae.py:19 +msgid "Amiga 1200" +msgstr "Amiga 1200" + +#: lutris/runners/fsuae.py:20 +msgid "Amiga 4000" +msgstr "Amiga 4000" + +#: lutris/runners/fsuae.py:21 lutris/runners/fsuae.py:32 +msgid "Amiga CD32" +msgstr "Amiga CD32" + +#: lutris/runners/fsuae.py:22 lutris/runners/fsuae.py:33 +msgid "Commodore CDTV" +msgstr "Commodore CDTV" + +#: lutris/runners/fsuae.py:26 +msgid "Amiga 500+ with 1 MB chip RAM" +msgstr "Amiga 500+ avec une puce 1 Mo RAM" + +#: lutris/runners/fsuae.py:27 +msgid "Amiga 600 with 1 MB chip RAM" +msgstr "Amiga 600 avec une puce 1 Mo RAM" + +#: lutris/runners/fsuae.py:28 +msgid "Amiga 1000 with 512 KB chip RAM" +msgstr "Amiga 1000 avec une puce 512 Ko RAM" + +#: lutris/runners/fsuae.py:29 +msgid "Amiga 1200 with 2 MB chip RAM" +msgstr "Amiga 1200 avec une puce 2 Mo RAM" + +#: lutris/runners/fsuae.py:30 +msgid "Amiga 1200 but with 68020 processor" +msgstr "Amiga 1200 mais avec un processeur 68020" + +#: lutris/runners/fsuae.py:31 +msgid "Amiga 4000 with 2 MB chip RAM and a 68040" +msgstr "Amiga 4000 avec une puce 2 Mo RAM et un 68040" + +#: lutris/runners/fsuae.py:36 +msgid "68000" +msgstr "68000" + +#: lutris/runners/fsuae.py:37 +msgid "68010" +msgstr "68010" + +#: lutris/runners/fsuae.py:38 +msgid "68020 with 24-bit addressing" +msgstr "68020 avec adressage 24 bits" + +#: lutris/runners/fsuae.py:39 +msgid "68020" +msgstr "68020" + +#: lutris/runners/fsuae.py:40 +msgid "68030 without internal MMU" +msgstr "68030 sans MMU interne" + +#: lutris/runners/fsuae.py:41 +msgid "68030" +msgstr "68030" + +#: lutris/runners/fsuae.py:42 +msgid "68040 without internal FPU and MMU" +msgstr "68040 sans FPU et MMU internes" + +#: lutris/runners/fsuae.py:43 +msgid "68040 without internal FPU" +msgstr "68040 sans FPU interne" + +#: lutris/runners/fsuae.py:44 +msgid "68040 without internal MMU" +msgstr "68040 sans MMU interne" + +#: lutris/runners/fsuae.py:45 +msgid "68040" +msgstr "68040" + +#: lutris/runners/fsuae.py:46 +msgid "68060 without internal FPU and MMU" +msgstr "68060 sans FPU et MMU internes" + +#: lutris/runners/fsuae.py:47 +msgid "68060 without internal FPU" +msgstr "68060 sans FPU interne" + +#: lutris/runners/fsuae.py:48 +msgid "68060 without internal MMU" +msgstr "68060 sans MMU interne" + +#: lutris/runners/fsuae.py:49 +msgid "68060" +msgstr "68060" + +#: lutris/runners/fsuae.py:53 lutris/runners/fsuae.py:60 +#: lutris/runners/fsuae.py:94 +msgid "0" +msgstr "0" + +#: lutris/runners/fsuae.py:54 lutris/runners/fsuae.py:61 +#: lutris/runners/fsuae.py:95 +msgid "1 MB" +msgstr "1 Mo" + +#: lutris/runners/fsuae.py:55 lutris/runners/fsuae.py:62 +#: lutris/runners/fsuae.py:96 +msgid "2 MB" +msgstr "2 Mo" + +#: lutris/runners/fsuae.py:56 lutris/runners/fsuae.py:63 +#: lutris/runners/fsuae.py:97 +msgid "4 MB" +msgstr "4 Mo" + +#: lutris/runners/fsuae.py:57 lutris/runners/fsuae.py:64 +#: lutris/runners/fsuae.py:98 +msgid "8 MB" +msgstr "8 Mo" + +#: lutris/runners/fsuae.py:65 lutris/runners/fsuae.py:99 +msgid "16 MB" +msgstr "16 Mo" + +#: lutris/runners/fsuae.py:66 lutris/runners/fsuae.py:100 +msgid "32 MB" +msgstr "32 Mo" + +#: lutris/runners/fsuae.py:67 lutris/runners/fsuae.py:101 +msgid "64 MB" +msgstr "64 Mo" + +#: lutris/runners/fsuae.py:68 lutris/runners/fsuae.py:102 +msgid "128 MB" +msgstr "128 Mo" + +#: lutris/runners/fsuae.py:69 lutris/runners/fsuae.py:103 +msgid "256 MB" +msgstr "256 Mo" + +#: lutris/runners/fsuae.py:70 +msgid "384 MB" +msgstr "384 Mo" + +#: lutris/runners/fsuae.py:71 +msgid "512 MB" +msgstr "512 Mo" + +#: lutris/runners/fsuae.py:72 +msgid "768 MB" +msgstr "768 Mo" + +#: lutris/runners/fsuae.py:73 +msgid "1 GB" +msgstr "1 GB" + +#: lutris/runners/fsuae.py:106 +msgid "Turbo" +msgstr "Turbo" + +#: lutris/runners/fsuae.py:117 +msgid "Boot disk" +msgstr "Disque de démarrage" + +#: lutris/runners/fsuae.py:120 +msgid "" +"The main floppy disk file with the game data. \n" +"FS-UAE supports floppy images in multiple file formats: ADF, IPF, DMS are " +"the most common. ADZ (compressed ADF) and ADFs in zip files are a also " +"supported.\n" +"Files ending in .hdf will be mounted as hard drives and ISOs can be used for " +"Amiga CD32 and CDTV models." +msgstr "" +"Le fichier principal de la disquette contenant les données du jeu. \n" +"FS-UAE prend en charge les images de disquettes dans plusieurs formats de " +"fichiers : ADF, IPF, DMS sont les plus courants. Les ADZ (ADF compressé) et " +"les ADF dans des fichiers zip sont également pris en charge.\n" +"Les fichiers se terminant par .hdf seront montés comme des disques durs et " +"les ISOs peuvent être utilisés pour les modèles Amiga CD32 et CDTV." + +#: lutris/runners/fsuae.py:130 +msgid "Additionnal floppies" +msgstr "Disquettes additionnelles" + +#: lutris/runners/fsuae.py:132 +msgid "The additional floppy disk image(s)." +msgstr "L’(es) image(s) de disquette additionnelle(s)." + +#: lutris/runners/fsuae.py:135 +msgid "CD-ROM image" +msgstr "Image de CD-ROM" + +#: lutris/runners/fsuae.py:137 +msgid "CD-ROM image to use on non CD32/CDTV models" +msgstr "Image du CD-ROM à utiliser sur les modèles non CD32 / CDTV" + +#: lutris/runners/fsuae.py:144 +msgid "Amiga model" +msgstr "Modèle Amiga" + +#: lutris/runners/fsuae.py:148 +msgid "Specify the Amiga model you want to emulate." +msgstr "Spécifiez le modèle Amiga que vous souhaitez émuler" + +#: lutris/runners/fsuae.py:152 +msgid "Kickstart ROMs location" +msgstr "Emplacement des ROMS Kickstart" + +#: lutris/runners/fsuae.py:155 +msgid "" +"Choose the folder containing original Amiga Kickstart ROMs. Refer to FS-UAE " +"documentation to find how to acquire them. Without these, FS-UAE uses a " +"bundled replacement ROM which is less compatible with Amiga software." +msgstr "" +"Choisissez le dossier contenant les ROMs originales Amiga Kickstart. " +"Reportez-vous à la documentation de FS-UAE pour savoir comment les acquérir. " +"Sans elles, FS-UAE utilise une ROM de remplacement qui est moins compatible " +"avec les logiciels Amiga." + +#: lutris/runners/fsuae.py:164 +msgid "Extended Kickstart location" +msgstr "Emplacement Kickstart Étendu" + +#: lutris/runners/fsuae.py:167 +msgid "Location of extended Kickstart used for CD32" +msgstr "Emplacement du Kickstart étendu utilisé pour le CD32" + +#: lutris/runners/fsuae.py:171 +msgid "Fullscreen (F12 + S to switch)" +msgstr "Plein écran (F12 + S pour changer)" + +#: lutris/runners/fsuae.py:177 lutris/runners/o2em.py:81 +msgid "Scanlines display style" +msgstr "Style d'affichage des lignes de balayage" + +#: lutris/runners/fsuae.py:180 lutris/runners/o2em.py:83 +msgid "" +"Activates a display filter adding scanlines to imitate the displays of " +"yesteryear." +msgstr "" +"Active un filtre d'affichage ajoutant des lignes de balayage pour imiter les " +"écrans d'antan." + +#: lutris/runners/fsuae.py:185 +msgid "CPU" +msgstr "CPU" + +#: lutris/runners/fsuae.py:190 +msgid "" +"Use this option to override the CPU model in the emulated Amiga. All Amiga " +"models imply a default CPU model, so you only need to use this option if you " +"want to use another CPU." +msgstr "" +"Utiliser cette option pour remplacer le modèle de CPU dans l’Amiga émulé. " +"Tous les modèles Amiga impliquent un modèle de CPU par défaut, donc vous " +"n’avez besoin d’utiliser cette option que si vous voulez utiliser un autre " +"CPU." + +#: lutris/runners/fsuae.py:196 +msgid "Fast Memory" +msgstr "Mémoire vive" + +#: lutris/runners/fsuae.py:201 +msgid "Specify how much Fast Memory the Amiga model should have." +msgstr "Spécifier combien de mémoire vive le modèle Amiga devrait avoir." + +#: lutris/runners/fsuae.py:205 +msgid "Zorro III RAM" +msgstr "Zorro III RAM" + +#: lutris/runners/fsuae.py:210 +msgid "" +"Override the amount of Zorro III Fast memory, specified in KB. Must be a " +"multiple of 1024. The default value depends on [amiga_model]. Requires a " +"processor with 32-bit address bus, (use for example the A1200/020 model)." +msgstr "" +"Remplacer la quantité de mémoire Zorro III Fast, spécifiée en Ko. Doit être " +"un multiple de 1024. La valeur par défaut dépend de [amiga_model]. Nécessite " +"un processeur avec un bus d'adresse de 32 bits, (utilisez par exemple le " +"modèle A1200 / 020)." + +#: lutris/runners/fsuae.py:216 +msgid "Floppy Drive Volume" +msgstr "Volume de disquette" + +#: lutris/runners/fsuae.py:221 +msgid "" +"Set volume to 0 to disable floppy drive clicks when the drive is empty. Max " +"volume is 100." +msgstr "" +"Réglez le volume sur 0 pour désactiver les clics du lecteur de disquettes " +"lorsque le lecteur est vide. Le volume maximal est de 100." + +#: lutris/runners/fsuae.py:226 +msgid "Floppy Drive Speed" +msgstr "Vitesse des disquettes" + +#: lutris/runners/fsuae.py:232 +msgid "" +"Set the speed of the emulated floppy drives, in percent. For example, you " +"can specify 800 to get an 8x increase in speed. Use 0 to specify turbo mode. " +"Turbo mode means that all floppy operations complete immediately. The " +"default is 100 for most models." +msgstr "" +"Définit la vitesse des lecteurs de disquettes émulés, en pourcentage. Par " +"exemple, vous pouvez spécifier 800 pour obtenir une augmentation de 8x de la " +"vitesse. Utilisez 0 pour spécifier le mode turbo. Le mode turbo signifie que " +"toutes les opérations sur les disquettes se terminent immédiatement. La " +"valeur par défaut est 100 pour la plupart des modèles." + +#: lutris/runners/fsuae.py:240 +msgid "Graphics Card" +msgstr "Carte graphique" + +#: lutris/runners/fsuae.py:246 +msgid "" +"Use this option to enable a graphics card. This option is none by default, " +"in which case only chipset graphics (OCS/ECS/AGA) support is available." +msgstr "" +"Utilisez cette option pour activer une carte graphique. Cette option n’est " +"pas activée par défaut, auquel cas seule la prise en charge de la carte " +"graphique du chipset (OCS/ECS/AGA) est disponible." + +#: lutris/runners/fsuae.py:252 +msgid "Graphics Card RAM" +msgstr "RAM de la carte graphique" + +#: lutris/runners/fsuae.py:258 +msgid "" +"Override the amount of graphics memory on the graphics card. The 0 MB option " +"is not really valid, but exists for user interface reasons." +msgstr "" +"Remplacer la quantité de mémoire graphique sur la carte graphique. L’option " +"0 Mo n'est pas vraiment valable, mais existe pour des raisons d'interface " +"utilisateur." + +#: lutris/runners/fsuae.py:264 +msgid "JIT Compiler" +msgstr "Compilateur JIT" + +#: lutris/runners/fsuae.py:271 +msgid "Feral GameMode" +msgstr "Feral GameMode" + +#: lutris/runners/fsuae.py:275 +msgid "" +"Automatically uses Feral GameMode daemon if available. Set to true to " +"disable the feature." +msgstr "" +"Utilise automatiquement le daemon Feral GameMode s’il est disponible. Mettez " +"la valeur true pour désactiver cette fonctionnalité." + +#: lutris/runners/fsuae.py:280 +msgid "CPU governor warning" +msgstr "Avertissement de gouverneur de CPU" + +#: lutris/runners/fsuae.py:285 +msgid "" +"Warn if running with a CPU governor other than performance. Set to true to " +"disable the warning." +msgstr "" +"Avertir en cas d’exécution avec un gouverneur de CPU autre que la " +"performance. Mettez la valeur true pour désactiver l’avertissement." + +#: lutris/runners/fsuae.py:290 +msgid "UAE bsdsocket.library" +msgstr "UAE bsdsocket.library" + +#: lutris/runners/hatari.py:14 +msgid "Hatari" +msgstr "Hatari" + +#: lutris/runners/hatari.py:15 +msgid "Atari ST computers emulator" +msgstr "Émulateur d’ordinateurs Atari ST" + +#: lutris/runners/hatari.py:16 +msgid "Atari ST" +msgstr "Atari ST" + +#: lutris/runners/hatari.py:28 +msgid "Floppy Disk A" +msgstr "Disquette A" + +#: lutris/runners/hatari.py:30 lutris/runners/hatari.py:44 +msgid "" +"Hatari supports floppy disk images in the following formats: ST, DIM, MSA, " +"STX, IPF, RAW and CRT. The last three require the caps library (capslib). " +"ZIP is supported, you don't need to uncompress the file." +msgstr "" +"Hatari prend en charge les images de disquettes dans les formats suivants : " +"ST, DIM, MSA, STX, IPF, RAW et CRT. Les trois derniers nécessitent la " +"bibliothèque caps (capslib). Le format ZIP est supporté, vous n'avez pas " +"besoin de décompresser le fichier." + +#: lutris/runners/hatari.py:42 +msgid "Floppy Disk B" +msgstr "Disquette B" + +#: lutris/runners/hatari.py:52 lutris/runners/redream.py:74 +#: lutris/runners/zdoom.py:75 +msgid "None" +msgstr "Aucune" + +#: lutris/runners/hatari.py:52 +msgid "Keyboard" +msgstr "Clavier" + +#: lutris/runners/hatari.py:52 lutris/runners/o2em.py:39 +#: lutris/runners/scummvm.py:186 +msgid "Joystick" +msgstr "Joystick" + +#: lutris/runners/hatari.py:61 +msgid "Bios file (TOS)" +msgstr "Fichier BIOS (TOS)" + +#: lutris/runners/hatari.py:63 +msgid "" +"TOS is the operating system of the Atari ST and is necessary to run " +"applications with the best fidelity, minimizing risks of issues.\n" +"TOS 1.02 is recommended for games." +msgstr "" +"TOS est le système d'exploitation de l'Atari ST et est nécessaire pour " +"exécuter les applications avec la meilleure fidélité, en minimisant les " +"risques de problèmes.\n" +"TOS 1.02 est recommandé pour les jeux." + +#: lutris/runners/hatari.py:78 +msgid "Scale up display by 2 (Atari ST/STE)" +msgstr "Agrandir l’affichage par 2 (Atari ST/STE)" + +#: lutris/runners/hatari.py:80 +msgid "Double the screen size in windowed mode." +msgstr "Double la taille de l'écran en mode fenêtré." + +#: lutris/runners/hatari.py:88 +msgid "Add borders to display" +msgstr "Ajoute des bordures à afficher" + +#: lutris/runners/hatari.py:92 +msgid "" +"Useful for some games and demos using the overscan technique. The Atari ST " +"displayed borders around the screen because it was not powerful enough to " +"display graphics in fullscreen. But people from the demo scene were able to " +"remove them and some games made use of this technique." +msgstr "" +"Utile pour certains jeux et démos utilisant la technique de l'overscan. " +"L'Atari ST affichait des bordures autour de l'écran car il n'était pas assez " +"puissant pour afficher des graphiques en plein écran. Mais les gens de la " +"scène des démos ont pu les supprimer et certains jeux ont utilisé cette " +"technique." + +#: lutris/runners/hatari.py:106 +msgid "Display status bar" +msgstr "Afficher la barre d’état" + +#: lutris/runners/hatari.py:110 +msgid "" +"Displays a status bar with some useful information, like green leds lighting " +"up when the floppy disks are read." +msgstr "" +"Affiche une barre d'état avec quelques informations utiles, comme des " +"voyants verts s'allumant lorsque les disquettes sont lues." + +#: lutris/runners/hatari.py:118 +msgid "Joystick 1" +msgstr "Joystick 1" + +#: lutris/runners/hatari.py:125 +msgid "Joystick 2" +msgstr "Joystick 2" + +#: lutris/runners/hatari.py:137 +msgid "Do you want to select an Atari ST BIOS file?" +msgstr "Voulez-vous sélectionner un fichier BIOS Atari ST ?" + +#: lutris/runners/hatari.py:138 +msgid "Use BIOS file?" +msgstr "Utiliser un fichier BIOS ?" + +#: lutris/runners/hatari.py:142 +msgid "Select a BIOS file" +msgstr "Sélectionnez un fichier BIOS" + +#: lutris/runners/jzintv.py:11 +msgid "jzIntv" +msgstr "jzIntv" + +#: lutris/runners/jzintv.py:12 +msgid "Intellivision Emulator" +msgstr "Émulateur Intellivision" + +#: lutris/runners/jzintv.py:13 +msgid "Intellivision" +msgstr "Intellivision" + +#: lutris/runners/jzintv.py:22 +msgid "" +"The game data, commonly called a ROM image. \n" +"Supported formats: ROM, BIN+CFG, INT, ITV \n" +"The file extension must be lower-case." +msgstr "" +"Les données du jeu, communément appelées image ROM. \n" +"Formats pris en charge : ROM, BIN+CFG, INT, ITV \n" +"L'extension du fichier doit être en minuscule." + +#: lutris/runners/jzintv.py:32 +msgid "Bios location" +msgstr "Emplacement BIOS" + +#: lutris/runners/jzintv.py:34 +msgid "" +"Choose the folder containing the Intellivision BIOS files (exec.bin and grom." +"bin).\n" +"These files contain code from the original hardware necessary to the " +"emulation." +msgstr "" +"Choisissez le dossier contenant les fichiers BIOS Intellivision (exec.bin et " +"grom.bin).\n" +"Ces fichiers contiennent le code du matériel original nécessaire à " +"l'émulation." + +#: lutris/runners/jzintv.py:48 +msgid "Resolution" +msgstr "Résolution" + +#: lutris/runners/libretro.py:65 +msgid "Libretro" +msgstr "Libretro" + +#: lutris/runners/libretro.py:66 +msgid "Multi-system emulator" +msgstr "Émulateur multi-système" + +#: lutris/runners/libretro.py:79 +msgid "Core" +msgstr "Core" + +#: lutris/runners/libretro.py:88 lutris/runners/zdoom.py:87 +msgid "Config file" +msgstr "Fichier de configuration" + +#: lutris/runners/libretro.py:100 +msgid "Verbose logging" +msgstr "Journalisation verbeuse" + +#: lutris/runners/libretro.py:271 +msgid "No core has been selected for this game" +msgstr "Aucun core n’a été sélectionné pour ce jeu" + +#: lutris/runners/libretro.py:282 +msgid "No game file specified" +msgstr "Pas de fichier de jeu spécifié" + +#: lutris/runners/linux.py:15 +msgid "Runs native games" +msgstr "Exécuter des jeux natifs" + +#: lutris/runners/linux.py:24 lutris/runners/wine.py:48 +msgid "Executable" +msgstr "Exécutable" + +#: lutris/runners/linux.py:25 +msgid "The game's main executable file" +msgstr "Le fichier exécutable principal du jeu" + +#: lutris/runners/linux.py:30 lutris/runners/mame.py:124 +#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:47 +#: lutris/runners/steam.py:99 lutris/runners/wine.py:54 +#: lutris/runners/zdoom.py:27 +msgid "Arguments" +msgstr "Arguments" + +#: lutris/runners/linux.py:31 lutris/runners/mame.py:125 +#: lutris/runners/scummvm.py:32 +msgid "Command line arguments used when launching the game" +msgstr "Arguments de ligne de commande utilisés lors du lancement du jeu" + +#: lutris/runners/linux.py:49 +msgid "Preload library" +msgstr "Bibliothèque de préchargement" + +#: lutris/runners/linux.py:51 +msgid "A library to load before running the game's executable." +msgstr "Une bibliothèque à charger avant d’exécuter l’exécutable du jeu." + +#: lutris/runners/linux.py:59 +msgid "Add directory to LD_LIBRARY_PATH" +msgstr "Ajouter le répertoire à LD_LIBRARY_PATH" + +#: lutris/runners/linux.py:63 +msgid "" +"A directory where libraries should be searched for first, before the " +"standard set of directories; this is useful when debugging a new library or " +"using a nonstandard library for special purposes." +msgstr "" +"Un répertoire dans lequel les bibliothèques doivent être recherchées en " +"premier, avant l’ensemble standard des répertoires ; ceci est utile pour le " +"débogage d’une nouvelle bibliothèque ou l’utilisation d’une bibliothèque non " +"standard à des fins spéciales." + +#: lutris/runners/mame.py:65 lutris/services/mame.py:11 +msgid "MAME" +msgstr "MAME" + +#: lutris/runners/mame.py:66 +msgid "Arcade game emulator" +msgstr "Émulateur de jeu d’arcade" + +#: lutris/runners/mame.py:85 lutris/runners/mednafen.py:67 +msgid "The emulated machine." +msgstr "La machine émulée" + +#: lutris/runners/mame.py:90 +msgid "Storage type" +msgstr "Type de stockage" + +#: lutris/runners/mame.py:92 +msgid "Floppy disk" +msgstr "Disquette" + +#: lutris/runners/mame.py:93 +msgid "Floppy drive 1" +msgstr "Disquette 1" + +#: lutris/runners/mame.py:94 +msgid "Floppy drive 2" +msgstr "Disquette 2" + +#: lutris/runners/mame.py:95 +msgid "Floppy drive 3" +msgstr "Disquette 3" + +#: lutris/runners/mame.py:96 +msgid "Floppy drive 4" +msgstr "Disquette 4" + +#: lutris/runners/mame.py:97 +msgid "Cassette (tape)" +msgstr "Cassette (bande)" + +#: lutris/runners/mame.py:98 +msgid "Cassette 1 (tape)" +msgstr "Cassette 1 (bande)" + +#: lutris/runners/mame.py:99 +msgid "Cassette 2 (tape)" +msgstr "Cassette 2 (bande)" + +#: lutris/runners/mame.py:100 +msgid "Cartridge" +msgstr "Cartouche" + +#: lutris/runners/mame.py:101 +msgid "Cartridge 1" +msgstr "Cartouche 1" + +#: lutris/runners/mame.py:102 +msgid "Cartridge 2" +msgstr "Cartouche 2" + +#: lutris/runners/mame.py:103 +msgid "Cartridge 3" +msgstr "Cartouche 3" + +#: lutris/runners/mame.py:104 +msgid "Cartridge 4" +msgstr "Cartouche 4" + +#: lutris/runners/mame.py:105 lutris/runners/mame.py:112 +msgid "Snapshot" +msgstr "Instantané" + +#: lutris/runners/mame.py:106 +msgid "Hard Disk" +msgstr "Disque dur" + +#: lutris/runners/mame.py:107 +msgid "Hard Disk 1" +msgstr "Disque dur 1" + +#: lutris/runners/mame.py:108 +msgid "Hard Disk 2" +msgstr "Disque dur 2" + +#: lutris/runners/mame.py:109 +msgid "CD-ROM" +msgstr "CD-ROM" + +#: lutris/runners/mame.py:110 +msgid "CD-ROM 1" +msgstr "CD-ROM 1" + +#: lutris/runners/mame.py:111 +msgid "CD-ROM 2" +msgstr "CD-ROM 2" + +#: lutris/runners/mame.py:113 +msgid "Quickload" +msgstr "Chargement rapide" + +#: lutris/runners/mame.py:114 +msgid "Memory Card" +msgstr "Carte Mémoire" + +#: lutris/runners/mame.py:115 +msgid "Cylinder" +msgstr "Cylindre" + +#: lutris/runners/mame.py:116 +msgid "Punch Tape 1" +msgstr "Bande perforée 1" + +#: lutris/runners/mame.py:117 +msgid "Punch Tape 2" +msgstr "Bande perforée 2" + +#: lutris/runners/mame.py:118 +msgid "Print Out" +msgstr "Imprimer" + +#: lutris/runners/mame.py:130 +msgid "Autoboot command" +msgstr "Commande d’autodémarrage" + +#: lutris/runners/mame.py:131 +msgid "" +"Autotype this command when the system has started, an enter keypress is " +"automatically added." +msgstr "" +"Saisir cette commande automatiquement lorsque le système a démarré, une " +"touche d’entrée est automatiquement ajoutée." + +#: lutris/runners/mame.py:137 +msgid "Delay before entering autoboot command" +msgstr "Délai avant d'entrer dans la commande de démarrage automatique" + +#: lutris/runners/mame.py:147 +msgid "ROM/BIOS path" +msgstr "Chemin ROM / BIOS" + +#: lutris/runners/mame.py:149 +msgid "" +"Choose the folder containing ROMs and BIOS files.\n" +"These files contain code from the original hardware necessary to the " +"emulation." +msgstr "" +"Choisissez le dossier contenant les ROMs et les fichiers BIOS.\n" +"Ces fichiers contiennent le code du matériel d'origine nécessaire à " +"l'émulation." + +#: lutris/runners/mame.py:163 +msgid "CRT effect ()" +msgstr "Effet CRT ()" + +#: lutris/runners/mame.py:164 +msgid "Applies a CRT effect to the screen.Requires OpenGL renderer." +msgstr "Applique un effet CRT à l'écran. Requiert un moteur de rendu OpenGL." + +#: lutris/runners/mame.py:171 +msgid "Video backend" +msgstr "Backend vidéo" + +#: lutris/runners/mame.py:177 lutris/runners/residualvm.py:50 +#: lutris/runners/vice.py:82 +msgid "Software" +msgstr "Logiciel" + +#: lutris/runners/mame.py:184 +msgid "Wait for VSync" +msgstr "Attendre VSync" + +#: lutris/runners/mame.py:186 +msgid "" +"Enable waiting for the start of vblank before flipping screens; " +"reduces tearing effects." +msgstr "" +"Permet d’attendre le début de vblank avant de retourner les écrans ; réduit " +"les effets de déchirement." + +#: lutris/runners/mame.py:194 +msgid "Menu mode key" +msgstr "Touche mode menu" + +#: lutris/runners/mame.py:196 +msgid "Scroll Lock" +msgstr "Arrêt défil" + +#: lutris/runners/mame.py:197 +msgid "Num Lock" +msgstr "Verr Num" + +#: lutris/runners/mame.py:198 +msgid "Caps Lock" +msgstr "Verr Maj" + +#: lutris/runners/mame.py:199 +msgid "Menu" +msgstr "Menu" + +#: lutris/runners/mame.py:200 +msgid "Right Control" +msgstr "Contrôle Droite" + +#: lutris/runners/mame.py:201 +msgid "Left Control" +msgstr "Contrôle Gauche" + +#: lutris/runners/mame.py:202 +msgid "Right Alt" +msgstr "Alt Droite" + +#: lutris/runners/mame.py:203 +msgid "Left Alt" +msgstr "Alt Gauche" + +#: lutris/runners/mame.py:204 +msgid "Right Super" +msgstr "Super Droite" + +#: lutris/runners/mame.py:205 +msgid "Left Super" +msgstr "Super Gauche" + +#: lutris/runners/mame.py:209 +msgid "" +"Key to switch between Full Keyboard Mode and Partial Keyboard Mode (default: " +"Scroll Lock)" +msgstr "" +"Touche permettant de basculer entre le mode Clavier complet et le mode " +"Clavier partiel (par défaut : Arrêt défil)" + +#: lutris/runners/mame.py:223 lutris/runners/mame.py:265 +msgid "Arcade" +msgstr "Arcade" + +#: lutris/runners/mame.py:223 lutris/runners/mame.py:264 +msgid "Nintendo Game & Watch" +msgstr "Nintendo Game & Watch" + +#: lutris/runners/mednafen.py:16 +msgid "Mednafen" +msgstr "Mednafen" + +#: lutris/runners/mednafen.py:17 +msgid "Multi-system emulator: NES, PC Engine, PSX…" +msgstr "Émulateur multi-système : NES, PC Engine, PSX…" + +#: lutris/runners/mednafen.py:19 +msgid "Nintendo Game Boy (Color)" +msgstr "Nintendo Game Boy (Color)" + +#: lutris/runners/mednafen.py:20 +msgid "Nintendo Game Boy Advance" +msgstr "Nintendo Game Boy Advance" + +#: lutris/runners/mednafen.py:21 +msgid "Sega Game Gear" +msgstr "Sega Game Gear" + +#: lutris/runners/mednafen.py:22 +msgid "Sega Genesis/Mega Drive" +msgstr "Sega Genesis / Mega Drive" + +#: lutris/runners/mednafen.py:23 +msgid "Atari Lynx" +msgstr "Atari Lynx" + +#: lutris/runners/mednafen.py:24 lutris/runners/osmose.py:12 +msgid "Sega Master System" +msgstr "Sega Master System" + +#: lutris/runners/mednafen.py:25 +msgid "SNK Neo Geo Pocket (Color)" +msgstr "SNK Neo Geo Pocket (Color)" + +#: lutris/runners/mednafen.py:26 +msgid "Nintendo NES" +msgstr "Nintendo NES" + +#: lutris/runners/mednafen.py:27 +msgid "NEC PC Engine TurboGrafx-16" +msgstr "NEC PC Engine TurboGrafx-16" + +#: lutris/runners/mednafen.py:28 +msgid "NEC PC-FX" +msgstr "NEC PC-FX" + +#: lutris/runners/mednafen.py:29 +msgid "Sony PlayStation" +msgstr "Sony PlayStation" + +#: lutris/runners/mednafen.py:30 +msgid "Sega Saturn" +msgstr "Sega Saturn" + +#: lutris/runners/mednafen.py:31 lutris/runners/snes9x.py:19 +msgid "Nintendo SNES" +msgstr "Nintendo SNES" + +#: lutris/runners/mednafen.py:32 +msgid "Bandai WonderSwan" +msgstr "Bandai WonderSwan" + +#: lutris/runners/mednafen.py:33 +msgid "Nintendo Virtual Boy" +msgstr "Nintendo Virtual Boy" + +#: lutris/runners/mednafen.py:36 +msgid "Game Boy (Color)" +msgstr "Game Boy (Color)" + +#: lutris/runners/mednafen.py:37 +msgid "Game Boy Advance" +msgstr "Game Boy Advance" + +#: lutris/runners/mednafen.py:38 +msgid "Game Gear" +msgstr "Game Gear" + +#: lutris/runners/mednafen.py:39 +msgid "Genesis/Mega Drive" +msgstr "Genesis / Mega Drive" + +#: lutris/runners/mednafen.py:40 +msgid "Lynx" +msgstr "Lynx" + +#: lutris/runners/mednafen.py:41 +msgid "Master System" +msgstr "Master System" + +#: lutris/runners/mednafen.py:42 +msgid "Neo Geo Pocket (Color)" +msgstr "Neo Geo Pocket (Color)" + +#: lutris/runners/mednafen.py:43 +msgid "NES" +msgstr "NES" + +#: lutris/runners/mednafen.py:44 +msgid "PC Engine" +msgstr "PC Engine" + +#: lutris/runners/mednafen.py:45 +msgid "PC-FX" +msgstr "PC-FX" + +#: lutris/runners/mednafen.py:46 +msgid "PlayStation" +msgstr "PlayStation" + +#: lutris/runners/mednafen.py:47 +msgid "Saturn" +msgstr "Saturn" + +#: lutris/runners/mednafen.py:48 +msgid "SNES" +msgstr "SNES" + +#: lutris/runners/mednafen.py:49 +msgid "WonderSwan" +msgstr "WonderSwan" + +#: lutris/runners/mednafen.py:50 +msgid "Virtual Boy" +msgstr "Virtual Boy" + +#: lutris/runners/mednafen.py:59 +msgid "" +"The game data, commonly called a ROM image. \n" +"Mednafen supports GZIP and ZIP compressed ROMs." +msgstr "" +"Les données du jeu, communément appelées image ROM. \n" +"Mednafen supporte les ROMs compressées en GZIP et ZIP." + +#: lutris/runners/mednafen.py:65 +msgid "Machine type" +msgstr "Type de machine" + +#: lutris/runners/mednafen.py:83 +msgid "Aspect ratio" +msgstr "Ratio d’aspect" + +#: lutris/runners/mednafen.py:86 +msgid "Stretched" +msgstr "Étiré" + +#: lutris/runners/mednafen.py:87 lutris/runners/vice.py:69 +msgid "Preserve aspect ratio" +msgstr "Préserver le ratio d’aspect" + +#: lutris/runners/mednafen.py:88 +msgid "Integer scale" +msgstr "Échelle entière" + +#: lutris/runners/mednafen.py:89 +msgid "Multiple of 2 scale" +msgstr "Échelle multiple de 2" + +#: lutris/runners/mednafen.py:100 +msgid "Video scaler" +msgstr "Échelleur vidéo" + +#: lutris/runners/mednafen.py:128 +msgid "Sound device" +msgstr "Appareil de son" + +#: lutris/runners/mednafen.py:130 +msgid "Mednafen default" +msgstr "Mednasen par défaut" + +#: lutris/runners/mednafen.py:131 +msgid "ALSA default" +msgstr "ALSA par défaut" + +#: lutris/runners/mednafen.py:142 +msgid "Use default Mednafen controller configuration" +msgstr "Utiliser la configuration par défaut du contrôleur Mednafen" + +#: lutris/runners/mupen64plus.py:12 +msgid "Mupen64Plus" +msgstr "Mupen64Plus" + +#: lutris/runners/mupen64plus.py:13 +msgid "Nintendo 64 emulator" +msgstr "Émulateur Nintendo 64" + +#: lutris/runners/mupen64plus.py:14 +msgid "Nintendo 64" +msgstr "Nintendo 64" + +#: lutris/runners/mupen64plus.py:21 lutris/runners/o2em.py:47 +#: lutris/runners/openmsx.py:18 lutris/runners/ryujinx.py:26 +#: lutris/runners/snes9x.py:28 lutris/runners/yuzu.py:24 +msgid "The game data, commonly called a ROM image." +msgstr "Les données du jeu, communément appelées image ROM." + +#: lutris/runners/mupen64plus.py:34 +msgid "Hide OSD" +msgstr "Cacher OSD" + +#: lutris/runners/o2em.py:11 +msgid "O2EM" +msgstr "O2EM" + +#: lutris/runners/o2em.py:12 +msgid "Magnavox Odyssey² Emulator" +msgstr "Émulateur Magnavox Odyssey²" + +#: lutris/runners/o2em.py:14 lutris/runners/o2em.py:30 +msgid "Magnavox Odyssey²" +msgstr "Magnavox Odyssey²" + +#: lutris/runners/o2em.py:15 lutris/runners/o2em.py:31 +msgid "Phillips C52" +msgstr "Phillips C52" + +#: lutris/runners/o2em.py:16 lutris/runners/o2em.py:32 +msgid "Phillips Videopac+" +msgstr "Phillips Videopac+" + +#: lutris/runners/o2em.py:17 lutris/runners/o2em.py:33 +msgid "Brandt Jopac" +msgstr "Brandt Jopac" + +#: lutris/runners/o2em.py:36 lutris/runners/wine.py:397 +msgid "Disable" +msgstr "Désactiver" + +#: lutris/runners/o2em.py:37 +msgid "Arrow Keys and Right Shift" +msgstr "Flèches et Maj Droite" + +#: lutris/runners/o2em.py:38 +msgid "W,S,A,D,SPACE" +msgstr "W,S,A,D,ESPACE" + +#: lutris/runners/o2em.py:55 +msgid "BIOS" +msgstr "BIOS" + +#: lutris/runners/o2em.py:62 +msgid "First controller" +msgstr "Premier contrôleur" + +#: lutris/runners/o2em.py:69 +msgid "Second controller" +msgstr "Second contrôleur" + +#: lutris/runners/openmsx.py:10 +msgid "openMSX" +msgstr "openMSX" + +#: lutris/runners/openmsx.py:11 +msgid "MSX computer emulator" +msgstr "Émulateur ordinateur MSX" + +#: lutris/runners/openmsx.py:12 +msgid "MSX, MSX2, MSX2+, MSX turboR" +msgstr "MSX, MSX2, MSX2+, MSX turboR" + +#: lutris/runners/osmose.py:10 +msgid "Osmose" +msgstr "Osmose" + +#: lutris/runners/osmose.py:11 +msgid "Sega Master System Emulator" +msgstr "Émulateur Sega Master System" + +#: lutris/runners/osmose.py:25 +msgid "" +"The game data, commonly called a ROM image.\n" +"Supported formats: SMS and GG files. ZIP compressed ROMs are supported." +msgstr "" +"Les données du jeu, communément appelées image ROM.\n" +"Formats pris en charge : Fichiers SMS et GG. Les ROM compressées au format " +"ZIP sont prises en charge." + +#: lutris/runners/pcsx2.py:8 +msgid "PCSX2" +msgstr "PCSX2" + +#: lutris/runners/pcsx2.py:9 +msgid "PlayStation 2 emulator" +msgstr "Émulateur PlayStation 2" + +#: lutris/runners/pcsx2.py:10 +msgid "Sony PlayStation 2" +msgstr "Sony PlayStation 2" + +#: lutris/runners/pcsx2.py:32 +msgid "Fullboot" +msgstr "Fullboot" + +#: lutris/runners/pcsx2.py:44 +msgid "Custom config file" +msgstr "Fichier de configuration personnalisé" + +#: lutris/runners/pcsx2.py:50 +msgid "Custom config path" +msgstr "Chemin de configuration personnalisé" + +#: lutris/runners/pico8.py:21 +msgid "Runs PICO-8 fantasy console cartridges" +msgstr "Fait fonctionner les cartouches de la console fantaisie PICO-8" + +#: lutris/runners/pico8.py:23 lutris/runners/pico8.py:24 +msgid "PICO-8" +msgstr "PICO-8" + +#: lutris/runners/pico8.py:29 +msgid "Cartridge file/URL/ID" +msgstr "Fichier / URL / ID de cartouche" + +#: lutris/runners/pico8.py:30 +msgid "You can put a .p8.png file path, URL, or BBS cartridge ID here." +msgstr "" +"Vous pouvez mettre un chemin d'accès au fichier .p8.png, une URL ou un " +"identifiant de cartouche BBS ici." + +#: lutris/runners/pico8.py:40 +msgid "Launch in fullscreen." +msgstr "Lancer en plein écran." + +#: lutris/runners/pico8.py:44 lutris/runners/web.py:45 +msgid "Window size" +msgstr "Taille de la fenêtre" + +#: lutris/runners/pico8.py:47 +msgid "The initial size of the game window." +msgstr "La teille initiale de la fenêtre du jeu." + +#: lutris/runners/pico8.py:52 +msgid "Start in splore mode" +msgstr "Démarrer en mode splore" + +#: lutris/runners/pico8.py:58 +msgid "Extra arguments" +msgstr "Arguments supplémentaires" + +#: lutris/runners/pico8.py:60 +msgid "Extra arguments to the executable" +msgstr "Arguments supplémentaires pour l'exécutable" + +#: lutris/runners/pico8.py:66 +msgid "Engine (web only)" +msgstr "Moteur (web seulement)" + +#: lutris/runners/pico8.py:68 +msgid "Name of engine (will be downloaded) or local file path" +msgstr "Nom du moteur (qui sera téléchargé) ou chemin du fichier local" + +#: lutris/runners/pico8.py:82 +#, python-format +msgid "PICO-8 runner (%s)" +msgstr "Exécuteur PICO-8 (%s)" + +#: lutris/runners/redream.py:11 +msgid "Redream" +msgstr "Redream" + +#: lutris/runners/redream.py:12 lutris/runners/reicast.py:18 +msgid "Sega Dreamcast emulator" +msgstr "Émulateur Sega Dreamcast" + +#: lutris/runners/redream.py:13 lutris/runners/reicast.py:19 +msgid "Sega Dreamcast" +msgstr "Sega Dreamcast" + +#: lutris/runners/redream.py:20 lutris/runners/reicast.py:29 +msgid "Disc image file" +msgstr "Fichier image du disque" + +#: lutris/runners/redream.py:21 +msgid "" +"Game data file\n" +"Supported formats: GDI, CDI, CHD" +msgstr "" +"Fichier des données de jeu\n" +"Formats supportés : GDI, CDI, CHD" + +#: lutris/runners/redream.py:29 +msgid "Aspect Ratio" +msgstr "Ratio d’aspect" + +#: lutris/runners/redream.py:30 +msgid "4:3" +msgstr "4:3" + +#: lutris/runners/redream.py:30 +msgid "Stretch" +msgstr "Étirer" + +#: lutris/runners/redream.py:36 +msgid "Region" +msgstr "Région" + +#: lutris/runners/redream.py:37 +msgid "USA" +msgstr "États-Unis" + +#: lutris/runners/redream.py:37 +msgid "Europe" +msgstr "Europe" + +#: lutris/runners/redream.py:37 +msgid "Japan" +msgstr "Japon" + +#: lutris/runners/redream.py:43 +msgid "System Language" +msgstr "Langage système" + +#: lutris/runners/redream.py:45 +msgid "English" +msgstr "Anglais" + +#: lutris/runners/redream.py:46 +msgid "German" +msgstr "Allemand" + +#: lutris/runners/redream.py:47 +msgid "French" +msgstr "Français" + +#: lutris/runners/redream.py:48 +msgid "Spanish" +msgstr "Espagnol" + +#: lutris/runners/redream.py:49 +msgid "Italian" +msgstr "Italien" + +#: lutris/runners/redream.py:50 +msgid "Japanese" +msgstr "Japonais" + +#: lutris/runners/redream.py:59 +msgid "NTSC" +msgstr "NTSC" + +#: lutris/runners/redream.py:60 +msgid "PAL" +msgstr "PAL" + +#: lutris/runners/redream.py:61 +msgid "PAL-M (Brazil)" +msgstr "PAL-M (Brésil)" + +#: lutris/runners/redream.py:62 +msgid "PAL-N (Argentina, Paraguay, Uruguay)" +msgstr "PAL-N (Argentine, Paraguay, Uruguay)" + +#: lutris/runners/redream.py:69 +msgid "Time Sync" +msgstr "Synchronisation du temps" + +#: lutris/runners/redream.py:71 +msgid "Audio and video" +msgstr "Audio et vidéo" + +#: lutris/runners/redream.py:72 +msgid "Audio" +msgstr "Audio" + +#: lutris/runners/redream.py:73 +msgid "Video" +msgstr "Vidéo" + +#: lutris/runners/redream.py:82 +msgid "Internal Video Resolution Scale" +msgstr "Échelle de résolution vidéo interne" + +#: lutris/runners/redream.py:95 +msgid "Only available in premium version." +msgstr "Disponible seulement dans la version premium." + +#: lutris/runners/redream.py:103 +msgid "Do you want to select a premium license file?" +msgstr "Voulez-vous sélectionner un fichier de licence premium ?" + +#: lutris/runners/redream.py:104 +msgid "Use premium version?" +msgstr "Utiliser une version premium ?" + +#: lutris/runners/redream.py:108 +msgid "Select a license file" +msgstr "Sélectionnez un fichier de licence" + +#: lutris/runners/reicast.py:17 +msgid "Reicast" +msgstr "Reicast" + +#: lutris/runners/reicast.py:30 +msgid "" +"The game data.\n" +"Supported formats: ISO, CDI" +msgstr "" +"Les données du jeu.\n" +"Formats supportés : ISO, CDI" + +#: lutris/runners/reicast.py:48 +msgid "Gamepad 1" +msgstr "Gamepad 1" + +#: lutris/runners/reicast.py:55 +msgid "Gamepad 2" +msgstr "Gamepad 2" + +#: lutris/runners/reicast.py:62 +msgid "Gamepad 3" +msgstr "Gamepad 3" + +#: lutris/runners/reicast.py:69 +msgid "Gamepad 4" +msgstr "Gamepad 4" + +#: lutris/runners/reicast.py:84 +msgid "You have to copy valid BIOS files to ~/.reicast/data before playing" +msgstr "" +"Vous devez copier les fichiers BIOS valides dans ~/.reicast/data avant de " +"jouer" + +#: lutris/runners/residualvm.py:14 +msgid "ResidualVM" +msgstr "ResidualVM" + +#. TODO +#: lutris/runners/residualvm.py:16 +msgid "3D point-and-click adventure games engine" +msgstr "Moteur de jeux d'aventure pointer-et-cliquer en 3D" + +#: lutris/runners/residualvm.py:22 lutris/runners/scummvm.py:21 +msgid "Game identifier" +msgstr "Identifiant du jeu" + +#: lutris/runners/residualvm.py:27 lutris/runners/scummvm.py:26 +msgid "Game files location" +msgstr "Emplacement des fichiers du jeu" + +#: lutris/runners/residualvm.py:31 +msgid "Enable subtitles (if the game has voice)" +msgstr "Activer les sous-titres (si le jeu contient des voix)" + +#: lutris/runners/residualvm.py:45 +msgid "Renderer" +msgstr "Moteur de rendu" + +#: lutris/runners/residualvm.py:49 +msgid "OpenGL shaders" +msgstr "Shaders OpenGL" + +#: lutris/runners/residualvm.py:56 +msgid "Display FPS information" +msgstr "Afficher les informations FPS" + +#: lutris/runners/rpcs3.py:10 +msgid "RPCS3" +msgstr "RPCS3" + +#: lutris/runners/rpcs3.py:11 +msgid "PlayStation 3 emulator" +msgstr "Émulateur Sony PlayStation 3" + +#: lutris/runners/rpcs3.py:12 +msgid "Sony PlayStation 3" +msgstr "Sony PlayStation 3" + +#: lutris/runners/rpcs3.py:20 +msgid "Path to EBOOT.BIN" +msgstr "Chemin vers EBOOT.BIN" + +#: lutris/runners/runner.py:148 +msgid "Custom executable for the runner" +msgstr "Exécutable personnalisé pour l’exécuteur" + +#: lutris/runners/runner.py:293 +msgid "" +"The required runner is not installed.\n" +"Do you wish to install it now?" +msgstr "" +"L’exécuteur requis n’est pas installé.\n" +"Souhaitez-vous l’installer maintenant ?" + +#: lutris/runners/runner.py:295 +msgid "Required runner unavailable" +msgstr "Exécuteur requis indisponible" + +#: lutris/runners/ryujinx.py:14 +msgid "Ryujinx" +msgstr "Ryujinx" + +#: lutris/runners/ryujinx.py:15 lutris/runners/yuzu.py:15 +msgid "Nintendo Switch" +msgstr "Nintendo Switch" + +#: lutris/runners/ryujinx.py:16 lutris/runners/yuzu.py:16 +msgid "Nintendo Switch emulator" +msgstr "Émulateur Nintendo Switch" + +#: lutris/runners/ryujinx.py:25 +msgid "NSP file" +msgstr "Fichier NSP" + +#: lutris/runners/ryujinx.py:32 lutris/runners/yuzu.py:30 +msgid "Encryption keys" +msgstr "Clés de chiffrement" + +#: lutris/runners/ryujinx.py:34 lutris/runners/yuzu.py:32 +msgid "File containing the encryption keys." +msgstr "Fichier contenant les clés de chiffrement" + +#: lutris/runners/ryujinx.py:37 lutris/runners/yuzu.py:35 +msgid "Title keys" +msgstr "Clés du titre" + +#: lutris/runners/ryujinx.py:39 lutris/runners/yuzu.py:37 +msgid "File containing the title keys." +msgstr "Fichier contenant les clés du titre." + +#: lutris/runners/scummvm.py:12 +msgid "Engine for point-and-click games." +msgstr "Moteur pour les jeux de type pointer-et-cliquer." + +#: lutris/runners/scummvm.py:13 lutris/services/scummvm.py:10 +msgid "ScummVM" +msgstr "ScummVM" + +#: lutris/runners/scummvm.py:82 +msgid "Enable subtitles" +msgstr "Activer les sous-titres" + +#: lutris/runners/scummvm.py:89 +msgid "Aspect ratio correction" +msgstr "Correction du ratio d’aspect" + +#: lutris/runners/scummvm.py:93 +msgid "" +"Most games supported by ScummVM were made for VGA display modes using " +"rectangular pixels. Activating this option for these games will preserve the " +"4:3 aspect ratio they were made for." +msgstr "" +"La plupart des jeux pris en charge par ScummVM ont été conçus pour des modes " +"d'affichage VGA utilisant des pixels rectangulaires. En activant cette " +"option pour ces jeux, vous préserverez le rapport d’aspect 4:3 pour lequel " +"ils ont été conçus." + +#: lutris/runners/scummvm.py:140 +msgid "Render mode" +msgstr "Mode de rendu" + +#: lutris/runners/scummvm.py:157 +msgid "Changes how the game is rendered." +msgstr "Change la manière dont le jeu est rendu." + +#: lutris/runners/scummvm.py:161 +msgid "Filtering" +msgstr "Filtrage" + +#: lutris/runners/scummvm.py:163 +msgid "" +"Uses bilinear interpolation instead of nearest neighbor resampling for the " +"aspect ratio correction and stretch mode." +msgstr "" +"Utilise l’interpolation bilinéaire au lieu du rééchantillonnage du plus " +"proche voisin pour la correction du ratio d’aspect et le mode d’étirement." + +#: lutris/runners/scummvm.py:170 +msgid "Data directory" +msgstr "Répertoire de données" + +#: lutris/runners/scummvm.py:172 +msgid "Defaults to share/scummvm if unspecified." +msgstr "La valeur par défaut est share/scummvm si elle n'est pas spécifiée." + +#: lutris/runners/scummvm.py:179 +msgid "" +"Specifes platform of game. Allowed values: 2gs, 3do, acorn, amiga, atari, " +"c64, fmtowns, nes, mac, pc pc98, pce, segacd, wii, windows" +msgstr "" +"Spécifie la plateforme du jeu. Valeurs autorisées : 2gs, 3do, acorn, amiga, " +"atari, c64, fmtowns, nes, mac, pc pc98, pce, segacd, wii, windows" + +#: lutris/runners/scummvm.py:187 +msgid "Enables joystick input (default: 0 = first joystick)" +msgstr "Active l'entrée joystick (par défaut : 0 = premier joystick)" + +#: lutris/runners/scummvm.py:193 +msgid "Language" +msgstr "Langage" + +#: lutris/runners/scummvm.py:194 +msgid "" +"Selects language (en, de, fr, it, pt, es, jp, zh, kr, se, gb, hb, ru, cz)" +msgstr "" +"Sélectionnez un langage (en, de, fr, it, pt, es, jp, zh, kr, se, gb, hb, ru, " +"cz)" + +#: lutris/runners/scummvm.py:200 +msgid "Engine speed" +msgstr "Vitesse du moteur" + +#: lutris/runners/scummvm.py:201 +msgid "" +"Sets frames per second limit (0 - 100) for Grim Fandango or Escape from " +"Monkey Island (default: 60)." +msgstr "" +"Définit la limite d’images par seconde (0 - 100) pour Grim Fandango ou " +"Escape from Monkey Island (par défaut : 60)." + +#: lutris/runners/scummvm.py:208 +msgid "Talk speed" +msgstr "Vitesse de conversation" + +#: lutris/runners/scummvm.py:209 +msgid "Sets talk speed for games (default: 60)" +msgstr "Définit la vitesse de conversation pour les jeux (par défaut : 60)" + +#: lutris/runners/scummvm.py:215 +msgid "Music tempo" +msgstr "Tempo de la musique" + +#: lutris/runners/scummvm.py:216 +msgid "Sets music tempo (in percent, 50-200) for SCUMM games (default: 100)" +msgstr "" +"Définit le tempo de la musique (en pourcentage, 50-200) pour les jeux SCUMM " +"(par défaut : 100)" + +#: lutris/runners/scummvm.py:222 +msgid "Digital iMuse tempo" +msgstr "Tempo de Digital iMuse" + +#: lutris/runners/scummvm.py:223 +msgid "Sets internal Digital iMuse tempo (10 - 100) per second (default: 10)" +msgstr "" +"Règle le tempo interne de Digital iMuse (10 - 100) par seconde (par défaut : " +"10)" + +#: lutris/runners/scummvm.py:228 +msgid "Music driver" +msgstr "Pilote de musique" + +#: lutris/runners/scummvm.py:244 +msgid "Specifies the device ScummVM uses to output audio." +msgstr "Spécifie au périphérique que ScummVM utilise pour la sortie audio." + +#: lutris/runners/scummvm.py:249 +msgid "Output rate" +msgstr "Fréquence de sortie" + +#: lutris/runners/scummvm.py:256 +msgid "Selects output sample rate in Hz." +msgstr "Sélectionne la fréquence d'échantillonnage de sortie en Hz." + +#: lutris/runners/scummvm.py:261 +msgid "OPL driver" +msgstr "Pilote OPL" + +#: lutris/runners/scummvm.py:273 +msgid "" +"Chooses which emulator is used by ScummVM when the AdLib emulator is chosen " +"as the Preferred device." +msgstr "" +"Choisit quel émulateur est utilisé par ScummVM lorsque l’émulateur AdLib est " +"choisi comme périphérique préféré." + +#: lutris/runners/scummvm.py:280 +msgid "Music volume" +msgstr "Volume de la musique" + +#: lutris/runners/scummvm.py:281 +msgid "Sets the music volume, 0-255 (default: 192)" +msgstr "Définit le volume de la musique, 0-255 (par défaut : 192)" + +#: lutris/runners/scummvm.py:287 +msgid "SFX volume" +msgstr "Volume SFX" + +#: lutris/runners/scummvm.py:288 +msgid "Sets the sfx volume, 0-255 (default: 192)" +msgstr "Définit le volume sfx, 0-255 (par défaut : 192)" + +#: lutris/runners/scummvm.py:294 +msgid "Speech volume" +msgstr "Volume de parole" + +#: lutris/runners/scummvm.py:295 +msgid "Sets the speech volume, 0-255 (default: 192)" +msgstr "Définit le volume de parole, 0-255 (par défaut : 192)" + +#: lutris/runners/scummvm.py:301 +msgid "MIDI gain" +msgstr "Gain MIDI" + +#: lutris/runners/scummvm.py:302 +msgid "Sets the gain for MIDI playback. 0-1000 (default: 100)" +msgstr "Règle le gain pour la lecture MIDI. 0-1000 (par défaut : 100)" + +#: lutris/runners/scummvm.py:308 +msgid "Soundfont" +msgstr "Soundfont" + +#: lutris/runners/scummvm.py:309 +msgid "Specifies the path to a soundfont file." +msgstr "Spécifie le chemin d’accès à un fichier soundfont." + +#: lutris/runners/scummvm.py:314 +msgid "Mixed AdLib/MIDI mode" +msgstr "Mode AdLib / Midi mixé" + +#: lutris/runners/scummvm.py:317 +msgid "Combines MIDI music with AdLib sound effects." +msgstr "Combine de la musique MIDI avec des effets sonores AdLib." + +#: lutris/runners/scummvm.py:322 +msgid "True Roland MT-32" +msgstr "True Roland MT-32" + +#: lutris/runners/scummvm.py:325 +msgid "" +"Tells ScummVM that the MIDI device is an actual Roland MT-32, LAPC-I, CM-64, " +"CM-32L, CM-500 or other MT-32 device." +msgstr "" +"Indique à ScummVM que le dispositif MIDI est un véritable Roland MT-32, LAPC-" +"I, CM-64, CM-32L, CM-500 ou autre dispositif MT-32." + +#: lutris/runners/scummvm.py:331 +msgid "Enable Roland GS" +msgstr "Activer Roland GS" + +#: lutris/runners/scummvm.py:334 +msgid "" +"Tells ScummVM that the MIDI device is a GS device that has an MT-32 map, " +"such as an SC-55, SC-88 or SC-8820." +msgstr "" +"Indique à ScummVM que le dispositif MIDI est un appareil GS qui a une carte " +"MT-32, comme un SC-55, SC-88 ou SC-8820." + +#: lutris/runners/scummvm.py:341 +msgid "Use alternate intro" +msgstr "Utiliser une introduction alternative" + +#: lutris/runners/scummvm.py:342 +msgid "Uses alternative intro for CD versions" +msgstr "Utilise une intro alternative pour les versions CD" + +#: lutris/runners/scummvm.py:348 +msgid "Copy protection" +msgstr "Protection contre les copies" + +#: lutris/runners/scummvm.py:349 +msgid "Enables copy protection" +msgstr "Active la protection contre les copies" + +#: lutris/runners/scummvm.py:355 +msgid "Demo mode" +msgstr "Mode Démo" + +#: lutris/runners/scummvm.py:356 +msgid "Starts demo mode of Maniac Mansion or The 7th Guest" +msgstr "Lance le mode démo de Maniac Mansion ou The 7th Guest." + +#: lutris/runners/scummvm.py:362 +msgid "Debug level" +msgstr "Niveau de débogage" + +#: lutris/runners/scummvm.py:363 +msgid "Sets debug verbosity level" +msgstr "Définit le niveau de verbosité du débogage" + +#: lutris/runners/scummvm.py:369 +msgid "Debug flags" +msgstr "Balises de débogage" + +#: lutris/runners/scummvm.py:370 +msgid "Enables engine specific debug flags" +msgstr "Active les balises de débogage spécifiques au moteur" + +#: lutris/runners/snes9x.py:17 +msgid "Super Nintendo emulator" +msgstr "Émulateur Super Nintendo" + +#: lutris/runners/snes9x.py:18 +msgid "Snes9x" +msgstr "Snes9x" + +#: lutris/runners/snes9x.py:45 +msgid "Maintain aspect ratio (4:3)" +msgstr "Maintenir le ratio d’aspect (4:3)" + +#: lutris/runners/snes9x.py:49 +msgid "" +"Super Nintendo games were made for 4:3 screens with rectangular pixels, but " +"modern screens have square pixels, which results in a vertically squeezed " +"image. This option corrects this by displaying rectangular pixels." +msgstr "" +"Les jeux Super Nintendo ont été conçus pour des écrans 4:3 avec des pixels " +"rectangulaires, mais les écrans modernes ont des pixels carrés, ce qui donne " +"une image écrasée verticalement. Cette option corrige ce problème en " +"affichant des pixels rectangulaires." + +#: lutris/runners/snes9x.py:59 +msgid "Sound driver" +msgstr "Pilote de son" + +#: lutris/runners/steam.py:28 +msgid "Runs Steam for Linux games" +msgstr "Lance Steam pour les jeux Linux" + +#: lutris/runners/steam.py:35 +msgid "Application ID" +msgstr "ID de l’application" + +#: lutris/runners/steam.py:38 +msgid "" +"The application ID can be retrieved from the game's page at steampowered." +"com. Example: 235320 is the app ID for Original War in: \n" +"http://store.steampowered.com/app/235320/" +msgstr "" +"L’identifiant de l’application peut être récupéré depuis la page du jeu sur " +"steampowered.com. Exemple: 235320 est l’identifiant d’application pour " +"Original War dans : \n" +"http://store.steampowered.com/app/235320/" + +#: lutris/runners/steam.py:49 +msgid "" +"Command line arguments used when launching the game.\n" +"Ignored when Steam Big Picture mode is enabled." +msgstr "" +"Arguments de ligne de commande utilisés lors du lancement du jeu.\n" +"Ignorés lorsque le mode Steam Big Picture est activé." + +#: lutris/runners/steam.py:55 +msgid "DRM free mode (Do not launch Steam)" +msgstr "Mode sans DRM (Ne pas lancer Steam)" + +#: lutris/runners/steam.py:60 +msgid "" +"Run the game directly without Steam, requires the game binary path to be set" +msgstr "" +"Lancer le jeu directement sans Steam, nécessite de définir le chemin du " +"binary du jeu." + +#: lutris/runners/steam.py:66 +msgid "Game binary path" +msgstr "Chemin du binary du jeu" + +#: lutris/runners/steam.py:68 +msgid "Path to the game executable (Required by DRM free mode)" +msgstr "Chemin vers l'exécutable du jeu (requis par le mode sans DRM)" + +#: lutris/runners/steam.py:74 +msgid "Start Steam in Big Picture mode" +msgstr "Lancer Steam en mode Big Picture" + +#: lutris/runners/steam.py:78 +msgid "" +"Launches Steam in Big Picture mode.\n" +"Only works if Steam is not running or already running in Big Picture mode.\n" +"Useful when playing with a Steam Controller." +msgstr "" +"Lance Steam en mode Big Picture.\n" +"Ne fonctionne que si Steam n’est pas lancé ou est déjà lancé en mode Big " +"Picture.\n" +"Utile lorsque vous jouez avec une manette Steam." + +#: lutris/runners/steam.py:86 +msgid "Start Steam with LSI" +msgstr "Lancer Steam avec LSI" + +#: lutris/runners/steam.py:90 +msgid "" +"Launches steam with LSI patches enabled. Make sure Lutris Runtime is " +"disabled and you have LSI installed. https://github.com/solus-project/linux-" +"steam-integration" +msgstr "" +"Lance steam avec les correctifs LSI activés. Assurez-vous que Lutris Runtime " +"est désactivé et que vous avez installé LSI. https://github.com/solus-" +"project/linux-steam-integration" + +#: lutris/runners/steam.py:101 +msgid "Extra command line arguments used when launching Steam" +msgstr "" +"Arguments de ligne de commande supplémentaires utilisés lors du lancement de " +"Steam" + +#: lutris/runners/steam.py:108 +msgid "Remove game data (through Steam)" +msgstr "Supprimer les données du jeu (à travers Steam)" + +#: lutris/runners/vice.py:13 +msgid "Commodore Emulator" +msgstr "Émulateur Commodore" + +#: lutris/runners/vice.py:14 +msgid "Vice" +msgstr "Vice" + +#: lutris/runners/vice.py:16 +msgid "Commodore 64" +msgstr "Commodore 64" + +#: lutris/runners/vice.py:17 +msgid "Commodore 128" +msgstr "Commodore 128" + +#: lutris/runners/vice.py:18 +msgid "Commodore VIC20" +msgstr "Commodore VIC20" + +#: lutris/runners/vice.py:19 +msgid "Commodore PET" +msgstr "Commodore PET" + +#: lutris/runners/vice.py:20 +msgid "Commodore Plus/4" +msgstr "Commodore Plus/4" + +#: lutris/runners/vice.py:21 +msgid "Commodore CBM II" +msgstr "Commodore CBM II" + +#: lutris/runners/vice.py:40 +msgid "" +"The game data, commonly called a ROM image.\n" +"Supported formats: X64, D64, G64, P64, D67, D71, D81, D80, D82, D1M, D2M, " +"D4M, T46, P00 and CRT." +msgstr "" +"Les données du jeu, communément appelées image ROM.\n" +"Formats pris en charge : X64, D64, G64, P64, D67, D71, D81, D80, D82, D1M, " +"D2M, D4M, T46, P00 et CRT." + +#: lutris/runners/vice.py:51 +msgid "Use joysticks" +msgstr "Utiliser les joysticks" + +#: lutris/runners/vice.py:63 +msgid "Scale up display by 2" +msgstr "Agrandissement de l'affichage par 2" + +#: lutris/runners/vice.py:75 +msgid "Enable sound emulation of disk drives" +msgstr "Activer l'émulation sonore des disques" + +#: lutris/runners/vice.py:81 +msgid "Graphics renderer" +msgstr "Moteur de rendu graphique" + +#: lutris/runners/web.py:17 lutris/runners/web.py:19 +msgid "Web" +msgstr "Web" + +#: lutris/runners/web.py:18 +msgid "Runs web based games" +msgstr "Exécute des jeux en ligne" + +#: lutris/runners/web.py:24 +msgid "Full URL or HTML file path" +msgstr "URL complet ou chemin du fichier HTML" + +#: lutris/runners/web.py:25 +msgid "The full address of the game's web page or path to a HTML file." +msgstr "" +"L’adresse complète de la page web du jeu ou le chemin d’accès à un fichier " +"HTML." + +#: lutris/runners/web.py:31 +msgid "Open in fullscreen" +msgstr "Ouvrir en plein écran" + +#: lutris/runners/web.py:34 +msgid "Launch the game in fullscreen." +msgstr "Lancer le jeu en plein écran." + +#: lutris/runners/web.py:38 +msgid "Open window maximized" +msgstr "Ouvrir la fenêtre maximisée" + +#: lutris/runners/web.py:41 +msgid "Maximizes the window when game starts." +msgstr "Maximise la fenêtre quand le jeu démarre." + +#: lutris/runners/web.py:56 +msgid "The initial size of the game window when not opened." +msgstr "La teille initiale de la fenêtre du jeu quand non ouvert." + +#: lutris/runners/web.py:60 +msgid "Disable window resizing (disables fullscreen and maximize)" +msgstr "" +"Désactiver le redimensionnement de la fenêtre (désactive le plein écran et " +"la maximisation)" + +#: lutris/runners/web.py:63 +msgid "You can't resize this window." +msgstr "Vous ne pouvez pas redimensionner cette fenêtre." + +#: lutris/runners/web.py:67 +msgid "Borderless window" +msgstr "Fenêtre sans bordures" + +#: lutris/runners/web.py:70 +msgid "The window has no borders/frame." +msgstr "La fenêtre n'a pas de bordures / cadre." + +#: lutris/runners/web.py:74 +msgid "Disable menu bar and default shortcuts" +msgstr "Désactiver la barre de menu et les raccourcis par défaut" + +#: lutris/runners/web.py:77 +msgid "" +"This also disables default keyboard shortcuts, like copy/paste and " +"fullscreen toggling." +msgstr "" +"Cela désactive également les raccourcis clavier par défaut, comme copier / " +"coller et le basculement en plein écran." + +#: lutris/runners/web.py:82 +msgid "Disable page scrolling and hide scrollbars" +msgstr "Désactiver le défilement des pages et masquer les barres de défilement" + +#: lutris/runners/web.py:85 +msgid "Disables scrolling on the page." +msgstr "Désactiver le défilement sur la page." + +#: lutris/runners/web.py:89 +msgid "Hide mouse cursor" +msgstr "Cacher le curseur de la souris" + +#: lutris/runners/web.py:92 +msgid "Prevents the mouse cursor from showing when hovering above the window." +msgstr "" +"Empêche l'affichage du curseur de la souris lors du survol de la fenêtre." + +#: lutris/runners/web.py:99 +msgid "Open links in game window" +msgstr "Ouvrir les liens dans la fenêtre du jeu" + +#: lutris/runners/web.py:105 +msgid "" +"Enable this option if you want clicked links to open inside the game window. " +"By default all links open in your default web browser." +msgstr "" +"Activez cette option si vous souhaitez que les liens cliqués s'ouvrent dans " +"la fenêtre du jeu. Par défaut, tous les liens s'ouvrent dans votre " +"navigateur web par défaut." + +#: lutris/runners/web.py:111 +msgid "Remove default margin & padding" +msgstr "Suppression de la marge et du padding par défaut de " + +#: lutris/runners/web.py:114 +msgid "" +"Sets margin and padding to zero on <html> and <body> elements." +msgstr "" +"Met la marge et le padding à zéro sur les éléments <html> et <" +"body>." + +#: lutris/runners/web.py:119 +msgid "Enable Adobe Flash Player" +msgstr "Activer Adobe Flash Player" + +#: lutris/runners/web.py:122 +msgid "Enable Adobe Flash Player." +msgstr "Activer Adobe Flash Player." + +#: lutris/runners/web.py:126 +msgid "Custom User-Agent" +msgstr "User-Agent personnalisé" + +#: lutris/runners/web.py:129 +msgid "Overrides the default User-Agent header used by the runner." +msgstr "Remplace l'en-tête User-Agent par défaut utilisé par l’exécuteur." + +#: lutris/runners/web.py:134 +msgid "Debug with Developer Tools" +msgstr "Déboguer avec des Outils Développeur" + +#: lutris/runners/web.py:137 +msgid "Let's you debug the page." +msgstr "Vous permet de déboguer la page." + +#: lutris/runners/web.py:142 +msgid "Open in web browser (old behavior)" +msgstr "Ouvrir dans le navigateur web (ancien comportement)" + +#: lutris/runners/web.py:145 +msgid "Launch the game in a web browser." +msgstr "Lancer le jeu dans un navigateur web." + +#: lutris/runners/web.py:151 +msgid "Custom web browser executable" +msgstr "Exécutable de navigateur web personnalisé" + +#: lutris/runners/web.py:155 +msgid "" +"Select the executable of a browser on your system.\n" +"If left blank, Lutris will launch your default browser (xdg-open)." +msgstr "" +"Sélectionnez l’exécutable d'un navigateur sur votre système.\n" +"S’il est laissé vide, Lutris lancera votre navigateur par défaut (xdg-open)." + +#: lutris/runners/web.py:163 +msgid "Web browser arguments" +msgstr "Arguments du navigateur Web" + +#: lutris/runners/web.py:169 +msgid "" +"Command line arguments to pass to the executable.\n" +"$GAME or $URL inserts the game url.\n" +"\n" +"For Chrome/Chromium app mode use: --app=\"$GAME\"" +msgstr "" +"Arguments de ligne de commande à passer à l'exécutable.\n" +"$GAME ou $URL insère l'url du jeu.\n" +"\n" +"Pour le mode application Chrome / Chromium, utilisez : --app=\"$GAME\"" + +#: lutris/runners/web.py:191 +msgid "" +"The web address is empty, \n" +"verify the game's configuration." +msgstr "" +"L’adresse web est vide,\n" +"Vérifiez la configuration du jeu." + +#: lutris/runners/web.py:202 +#, python-format +msgid "" +"The file %s does not exist, \n" +"verify the game's configuration." +msgstr "" +"Le fichier %s n’existe pas,\n" +"Vérifiez la configuration du jeu." + +#: lutris/runners/wine.py:38 +msgid "Runs Windows games" +msgstr "Exécuter des jeux Windows" + +#: lutris/runners/wine.py:39 +msgid "Wine" +msgstr "Wine" + +#: lutris/runners/wine.py:40 +msgid "Windows" +msgstr "Windows" + +#: lutris/runners/wine.py:49 +msgid "The game's main EXE file" +msgstr "Le fichier EXE principal du jeu" + +#: lutris/runners/wine.py:55 +msgid "Windows command line arguments used when launching the game" +msgstr "" +"Arguments de la ligne de commande Windows utilisés lors du lancement du jeu" + +#: lutris/runners/wine.py:71 +msgid "Wine prefix" +msgstr "Préfixe Wine" + +#: lutris/runners/wine.py:73 +msgid "" +"The prefix used by Wine.\n" +"It's a directory containing a set of files and folders making up a confined " +"Windows environment." +msgstr "" +"Le préfixe utilisé par Wine.\n" +"Il s'agit d'un répertoire contenant un ensemble de fichiers et de dossiers " +"constituant un environnement Windows confiné." + +#: lutris/runners/wine.py:81 +msgid "Prefix architecture" +msgstr "Architecture du Préfixe" + +#: lutris/runners/wine.py:82 +msgid "32-bit" +msgstr "32 bits" + +#: lutris/runners/wine.py:82 +msgid "64-bit" +msgstr "64 bits" + +#: lutris/runners/wine.py:84 +msgid "The architecture of the Windows environment" +msgstr "L’architecture de l’environnement Windows" + +#: lutris/runners/wine.py:112 +msgid "Custom (select executable below)" +msgstr "Personnalisé (sélectionnez un exécutable ci-dessous)" + +#: lutris/runners/wine.py:114 +msgid "WineHQ Devel ({})" +msgstr "WineHQ Devel ({})" + +#: lutris/runners/wine.py:115 +msgid "WineHQ Staging ({})" +msgstr "WineHQ Staging ({})" + +#: lutris/runners/wine.py:116 +msgid "Wine Development ({})" +msgstr "Wine Development ({})" + +#: lutris/runners/wine.py:117 +msgid "System ({})" +msgstr "Système ({})" + +#: lutris/runners/wine.py:169 +msgid "Wine version" +msgstr "Version de Wine" + +#: lutris/runners/wine.py:174 +msgid "" +"The version of Wine used to launch the game.\n" +"Using the last version is generally recommended, but some games work better " +"on older versions." +msgstr "" +"La version de Wine utilisée pour lancer le jeu.\n" +"Il est généralement recommandé d'utiliser la dernière version, mais certains " +"jeux fonctionnent mieux avec des versions plus anciennes." + +#: lutris/runners/wine.py:181 +msgid "Custom Wine executable" +msgstr "Exécutable Wine personnalisé" + +#: lutris/runners/wine.py:184 +msgid "" +"The Wine executable to be used if you have selected \"Custom\" as the Wine " +"version." +msgstr "" +"L'exécutable Wine à utiliser si vous avez sélectionné « Personnalisé » comme " +"version de Wine." + +#: lutris/runners/wine.py:189 +msgid "Use system winetricks" +msgstr "Utiliser winetricks système" + +#: lutris/runners/wine.py:193 +msgid "Switch on to use /usr/bin/winetricks for winetricks." +msgstr "Activer l'utilisation de /usr/bin/winetricks pour winetricks." + +#: lutris/runners/wine.py:197 +msgid "Enable DXVK" +msgstr "Activer DXVK" + +#: lutris/runners/wine.py:204 +msgid "" +"Use DXVK to increase compatibility and performance in Direct3D 11, 10 and 9 " +"applications by translating their calls to Vulkan." +msgstr "" +"Utiliser DXVK pour améliorer la compatibilité et les performances des " +"applications Direct3D 11, 10 et 9 en traduisant leurs appels à Vulkan." + +#: lutris/runners/wine.py:210 +msgid "DXVK version" +msgstr "Version DXVK" + +#: lutris/runners/wine.py:219 +msgid "Enable VKD3D" +msgstr "Activer VKD3D" + +#: lutris/runners/wine.py:226 +msgid "" +"Use VKD3D to enable support for Direct3D 12 applications by translating " +"their calls to Vulkan." +msgstr "" +"Utiliser VKD3D pour permettre la prise en charge des applications Direct3D " +"12 en traduisant leurs appels à Vulkan." + +#: lutris/runners/wine.py:231 +msgid "VKD3D version" +msgstr "Version VKD3D" + +#: lutris/runners/wine.py:239 +msgid "Enable D3D Extras" +msgstr "Activer les Extras D3D" + +#: lutris/runners/wine.py:244 +msgid "" +"Replace Wine's D3DX and D3DCOMPILER libraries with alternative ones. Needed " +"for proper functionality of DXVK with some games." +msgstr "" +"Remplacer les bibliothèques D3DX et D3DCOMPILER de Wine par des " +"bibliothèques alternatives. Nécessaire pour le bon fonctionnement de DXVK " +"avec certains jeux." + +#: lutris/runners/wine.py:250 +msgid "D3D Extras version" +msgstr "Versions Extras D3D" + +#: lutris/runners/wine.py:258 +msgid "Enable DXVK-NVAPI / DLSS" +msgstr "Activer DXVK-NVAPI / DLSS" + +#: lutris/runners/wine.py:263 +msgid "Enable emulation of Nvidia's NVAPI and add DLSS support, if available." +msgstr "" +"Activer l'émulation de l'interface NVAPI de Nvidia et ajouter le support " +"DLSS, si disponible." + +#: lutris/runners/wine.py:268 +msgid "DXVK NVAPI version" +msgstr "Version DXVK NVAPI" + +#: lutris/runners/wine.py:276 +msgid "Enable dgvoodoo2" +msgstr "Activer dgvoodoo2" + +#: lutris/runners/wine.py:281 +msgid "" +"dgvoodoo2 is an alternative translation layer for rendering old games that " +"utilize D3D1-7 and Glide APIs. As it translates to D3D11, it's recommended " +"to use it in combination with DXVK. Only 32-bit apps are supported." +msgstr "" +"dgvoodoo2 est une couche de traduction alternative pour le rendu de vieux " +"jeux qui utilisent les API D3D1-7 et Glide. Comme elle traduit en D3D11, il " +"est recommandé de l'utiliser en combinaison avec DXVK. Seules les " +"applications 32 bits sont supportées." + +#: lutris/runners/wine.py:288 +msgid "dgvoodoo2 version" +msgstr "Version dgvoodoo2" + +#: lutris/runners/wine.py:296 +msgid "Enable Esync" +msgstr "Activer Esync" + +#: lutris/runners/wine.py:303 +msgid "" +"Enable eventfd-based synchronization (esync). This will increase performance " +"in applications that take advantage of multi-core processors." +msgstr "" +"Activer la synchronisation basée sur eventfd (esync). Cela augmentera les " +"performances des applications qui tirent parti des processeurs multi-cœurs." + +#: lutris/runners/wine.py:310 +msgid "Enable Fsync" +msgstr "Enable Fsync" + +#: lutris/runners/wine.py:317 +msgid "" +"Enable futex-based synchronization (fsync). This will increase performance " +"in applications that take advantage of multi-core processors. Requires " +"kernel 5.16 or above." +msgstr "" +"Activer la synchronisation basée sur futex (fsync). Cela augmentera les " +"performances des applications qui tirent parti des processeurs multi-cœurs. " +"Nécessite le noyau 5.16 ou plus." + +#: lutris/runners/wine.py:325 +msgid "Enable AMD FidelityFX Super Resolution (FSR)" +msgstr "Activer AMD FidelityFX Super Resolution (FSR)" + +#: lutris/runners/wine.py:329 +msgid "" +"Use FSR to upscale the game window to native resolution.\n" +"Requires Lutris Wine FShack >= 6.13 and setting the game to a lower " +"resolution.\n" +"Does not work with games running in borderless window mode or that perform " +"their own upscaling." +msgstr "" +"Utiliser FSR pour mettre à l'échelle la fenêtre du jeu en résolution " +"native.\n" +"Nécessite Lutris Wine FShack ≥ 6.13 et le réglage du jeu à une résolution " +"inférieure.\n" +"Ne fonctionne pas avec les jeux fonctionnant en mode fenêtre sans bordure ou " +"qui effectuent leur propre mise à l'échelle." + +#: lutris/runners/wine.py:336 +msgid "Enable BattlEye Anti-Cheat" +msgstr "Activer BattlEye Anti-Cheat" + +#: lutris/runners/wine.py:340 +msgid "" +"Enable support for BattlEye Anti-Cheat in supported games\n" +"Requires Lutris Wine 6.21-2 and newer or any other compatible Wine build.\n" +msgstr "" +"Activer le support pour BattlEye Anti-Cheat dans les jeux le prenant en " +"charge\n" +"Requiert Lutris Wine ≥ 6.21-2 ou toute autre version de Wine compatible.\n" + +#: lutris/runners/wine.py:346 +msgid "Enable Easy Anti-Cheat" +msgstr "Activer Easy Anti-Cheat" + +#: lutris/runners/wine.py:350 +msgid "" +"Enable support for Easy Anti-Cheat in supported games\n" +"Requires Lutris Wine 7.2 and newer or any other compatible Wine build.\n" +msgstr "" +"Activer le support pour Easy Anti-Cheat dans les jeux le prendant en charge\n" +"Requiert Lutris Wine ≥ 7.22 ou toute autre version de Wine Compatible.\n" + +#: lutris/runners/wine.py:356 +msgid "Windowed (virtual desktop)" +msgstr "Windowed (bureau virtuel)" + +#: lutris/runners/wine.py:360 +msgid "" +"Run the whole Windows desktop in a window.\n" +"Otherwise, run it fullscreen.\n" +"This corresponds to Wine's Virtual Desktop option." +msgstr "" +"Exécute l'ensemble du bureau Windows dans une fenêtre.\n" +"Sinon, il est exécuté en plein écran.\n" +"Cela correspond à l'option Bureau virtuel de Wine." + +#: lutris/runners/wine.py:367 +msgid "Virtual desktop resolution" +msgstr "Résolution du bureau virtuel" + +#: lutris/runners/wine.py:370 +msgid "The size of the virtual desktop in pixels." +msgstr "La taille du bureau virtuel en pixels." + +#: lutris/runners/wine.py:374 +msgid "Enable DPI Scaling" +msgstr "Activer la mise à l’échelle DPI" + +#: lutris/runners/wine.py:378 +msgid "" +"Enables the Windows application's DPI scaling.\n" +"Otherwise, the Screen Resolution option in 'Wine configuration' controls " +"this." +msgstr "" +"Active la mise à l'échelle DPI de l'application Windows.\n" +"Sinon, c'est l'option Résolution d'écran de la configuration de Wine qui " +"s'en charge." + +#: lutris/runners/wine.py:384 +msgid "DPI" +msgstr "DPI" + +#: lutris/runners/wine.py:387 +msgid "" +"The DPI to be used if 'Enable DPI Scaling' is turned on.\n" +"If blank or 'auto', Lutris will auto-detect this." +msgstr "" +"Le DPI à utiliser si « Activer la mise à l’échelle DPI » est activé.\n" +"S'il est vide ou défini en « auto », Lutris le détectera automatiquement." + +#: lutris/runners/wine.py:393 +msgid "Mouse Warp Override" +msgstr "Remplacement du déplacement de la souris" + +#: lutris/runners/wine.py:396 +msgid "Enable" +msgstr "Activer" + +#: lutris/runners/wine.py:398 +msgid "Force" +msgstr "Forcer" + +#: lutris/runners/wine.py:403 +msgid "" +"Override the default mouse pointer warping behavior\n" +"Enable: (Wine default) warp the pointer when the mouse is exclusively " +"acquired \n" +"Disable: never warp the mouse pointer \n" +"Force: always warp the pointer" +msgstr "" +"Remplace le comportement par défaut de déplacement du pointeur de la souris\n" +"Activer : (Wine par défaut) déplace le pointeur lorsque la souris est " +"exclusivement acquise \n" +"Désactiver : ne déplace jamais le pointeur de la souris \n" +"Forcer : déplace toujours le pointeur" + +#: lutris/runners/wine.py:412 +msgid "Audio driver" +msgstr "Pilote audio" + +#: lutris/runners/wine.py:423 +msgid "" +"Which audio backend to use.\n" +"By default, Wine automatically picks the right one for your system." +msgstr "" +"Quel backend audio utiliser.\n" +"Par défaut, Wine choisit automatiquement celui qui convient à votre système." + +#: lutris/runners/wine.py:431 +msgid "DLL overrides" +msgstr "Primautés DLL" + +#: lutris/runners/wine.py:432 +msgid "Sets WINEDLLOVERRIDES when launching the game." +msgstr "Définit WINEDLLOVERRIDES lors du lancement du jeu." + +#: lutris/runners/wine.py:436 +msgid "Output debugging info" +msgstr "Afficher les informations de débogage" + +#: lutris/runners/wine.py:440 +msgid "Enabled" +msgstr "Activé" + +#: lutris/runners/wine.py:441 +msgid "Inherit from environment" +msgstr "Hériter de l’environnement" + +#: lutris/runners/wine.py:443 +msgid "Full (CAUTION: Will cause MASSIVE slowdown)" +msgstr "Complet (ATTENTION : provoquera un ralentissement MASSIF)" + +#: lutris/runners/wine.py:446 +msgid "Output debugging information in the game log (might affect performance)" +msgstr "" +"Afficher les informations de débogage dans le journal du jeu (peut affecter " +"les performances)" + +#: lutris/runners/wine.py:451 +msgid "Show crash dialogs" +msgstr "Montrer la fenêtre de dialogue des crashs" + +#: lutris/runners/wine.py:459 +msgid "Autoconfigure joypads" +msgstr "Auto-configurer les joypads" + +#: lutris/runners/wine.py:463 +msgid "" +"Automatically disables one of Wine's detected joypad to avoid having 2 " +"controllers detected" +msgstr "" +"Désactive automatiquement un des joypads détectés par Wine pour éviter " +"d’avoir 2 contrôleurs détectés" + +#: lutris/runners/wine.py:469 +msgid "Create a sandbox for Wine folders" +msgstr "Créer un bac à sable pour les dossiers Wine" + +#: lutris/runners/wine.py:473 +msgid "" +"Do not use $HOME for desktop integration folders.\n" +"By default, it use the directories in the confined Windows environment." +msgstr "" +"Ne pas utiliser $HOME pour les dossiers d’intégration à l’ordinateur.\n" +"Par défaut, cela utilise les répertoires de l’environnement Windows confiné." + +#: lutris/runners/wine.py:481 +msgid "Sandbox directory" +msgstr "Répertoire du bac à sable" + +#: lutris/runners/wine.py:482 +msgid "Custom directory for desktop integration folders." +msgstr "" +"Répertoire personnalisé pour les dossiers d’intégration à l’ordinateur." + +#: lutris/runners/wine.py:490 +msgid "Run EXE inside Wine prefix" +msgstr "Exécuter EXE dans le préfixe Wine" + +#: lutris/runners/wine.py:492 +msgid "Wine configuration" +msgstr "Configuration de Wine" + +#: lutris/runners/wine.py:494 +msgid "Open Bash terminal" +msgstr "Ouvrir un terminal Bash" + +#: lutris/runners/wine.py:495 +msgid "Open Wine console" +msgstr "Ouvrir la console de Wine" + +#: lutris/runners/wine.py:496 +msgid "Wine registry" +msgstr "Registre Wine" + +#: lutris/runners/wine.py:497 +msgid "Winetricks" +msgstr "Winetricks" + +#: lutris/runners/wine.py:498 +msgid "Wine Control Panel" +msgstr "Panneau de contrôle Wine" + +#: lutris/runners/wine.py:661 +msgid "Select an EXE or MSI file" +msgstr "Sélectionnez un fichier EXE ou MSI" + +#: lutris/runners/yuzu.py:14 +msgid "Yuzu" +msgstr "Yuzu" + +#. http://zdoom.org/wiki/Command_line_parameters +#: lutris/runners/zdoom.py:13 +msgid "ZDoom DOOM Game Engine" +msgstr "Moteur de jeu ZDoom DOOM" + +#: lutris/runners/zdoom.py:14 +msgid "ZDoom" +msgstr "ZDoom" + +#: lutris/runners/zdoom.py:21 +msgid "WAD file" +msgstr "Fichier WAD" + +#: lutris/runners/zdoom.py:22 +msgid "The game data, commonly called a WAD file." +msgstr "Les données du jeu, habituellement appelées un fichier WAD." + +#: lutris/runners/zdoom.py:28 +msgid "Command line arguments used when launching the game." +msgstr "Arguments en ligne de commande utilisés lors du lancement du jeu." + +#: lutris/runners/zdoom.py:33 +msgid "PWAD files" +msgstr "Fichiers PWAD" + +#: lutris/runners/zdoom.py:34 +msgid "" +"Used to load one or more PWAD files which generally contain user-created " +"levels." +msgstr "" +"Utilisé pour charger un ou plusieurs fichiers PWAD qui contiennent " +"généralement des niveaux créés par l’utilisateur." + +#: lutris/runners/zdoom.py:40 +msgid "Warp to map" +msgstr "Passer à la carte" + +#: lutris/runners/zdoom.py:41 +msgid "Starts the game on the given map." +msgstr "Démarre le jeu sur la carte donnée." + +#: lutris/runners/zdoom.py:47 +msgid "User-specified path where save files should be located." +msgstr "" +"Chemin spécifié par l’utilisateur où les fichiers enregistrés devraient se " +"situer." + +#: lutris/runners/zdoom.py:53 +msgid "Pixel Doubling" +msgstr "Doublage de pixels" + +#: lutris/runners/zdoom.py:59 +msgid "Pixel Quadrupling" +msgstr "Quadruplage de pixels" + +#: lutris/runners/zdoom.py:65 +msgid "Disable Startup Screens" +msgstr "Désactiver les écrans de démarrage" + +#: lutris/runners/zdoom.py:71 +msgid "Skill" +msgstr "Talent" + +#: lutris/runners/zdoom.py:76 +msgid "I'm Too Young To Die (1)" +msgstr "Je suis trop jeune pour mourir (1)" + +#: lutris/runners/zdoom.py:77 +msgid "Hey, Not Too Rough (2)" +msgstr "Hey, pas trop fort (2)" + +#: lutris/runners/zdoom.py:78 +msgid "Hurt Me Plenty (3)" +msgstr "Faites-moi mal (3)" + +#: lutris/runners/zdoom.py:79 +msgid "Ultra-Violence (4)" +msgstr "Ultra-Violence (4)" + +#: lutris/runners/zdoom.py:80 +msgid "Nightmare! (5)" +msgstr "Cauchemar ! (5)" + +#: lutris/runners/zdoom.py:91 +msgid "" +"Used to load a user-created configuration file. If specified, the file must " +"contain the wad directory list or launch will fail." +msgstr "" +"Utilisé pour charger un fichier de configuration créé par l’utilisateur. Si " +"spécifié, le fichier doit contenir la liste des répertoires wad ou le " +"lancement échouera." + +#: lutris/services/battlenet.py:13 +msgid "Battle.net" +msgstr "Battle.net" + +#: lutris/services/bethesda.py:13 +msgid "Bethesda" +msgstr "Bethesda" + +#: lutris/services/egs.py:134 +msgid "Epic Games Store" +msgstr "Epic Games Store" + +#: lutris/services/gog.py:68 +msgid "GOG" +msgstr "GOG" + +#: lutris/services/humblebundle.py:57 +msgid "Humble Bundle" +msgstr "Humble Bundle" + +#: lutris/services/itchio.py:13 +msgid "Itch.io (Not implemented)" +msgstr "Itch.io (Pas implémenté)" + +#: lutris/services/origin.py:87 +msgid "Origin" +msgstr "Origine" + +#: lutris/services/steam.py:102 +msgid "" +"Failed to load games. Check that your profile is set to public during the " +"sync." +msgstr "" +"Échec du chargement des jeux. Vérifiez que votre profil est défini à public " +"durant la synchronisation." + +#: lutris/services/steamwindows.py:25 +msgid "Steam for Windows" +msgstr "Steam pour Windows" + +#: lutris/services/tosec.py:11 +msgid "TOSEC" +msgstr "TOSEC" + +#: lutris/services/ubisoft.py:81 +msgid "Ubisoft Connect" +msgstr "Connexion Ubisoft" + +#: lutris/services/xdg.py:43 +msgid "Local" +msgstr "Local" + +#: lutris/settings.py:13 +msgid "(c) 2010-2022 Lutris Team" +msgstr "(c) 2010-2022 L’équipe Lutris" + +#: lutris/settings.py:14 +msgid "The Lutris team" +msgstr "L’équipe Lutris" + +#: lutris/startup.py:87 +msgid "Your NVIDIA driver is outdated." +msgstr "Votre pilote NVIDIA est obsolète." + +#: lutris/startup.py:89 +#, python-format +msgid "" +"You are currently running driver %s which does not fully support all " +"features for Vulkan and DXVK games.\n" +"Please upgrade your driver as described in our installation " +"guide" +msgstr "" +"Vous utilisez actuellement le pilote %s qui ne supporte pas totalement " +"toutes les fonctionnalités pour les jeux Vulkan et DXVK.\n" +"Merci de mettre à jour votre pilote comme décrit dans notre guide d’installation" + +#: lutris/startup.py:120 +msgid "Missing vulkan libraries" +msgstr "Bibliothèques Vulkan manquantes" + +#: lutris/startup.py:122 +#, python-format +msgid "" +"Lutris was unable to detect Vulkan support for the %s architecture.\n" +"This will prevent many games and programs from working.\n" +"To install it, please use the following guide: Installing " +"Graphics Drivers" +msgstr "" +"Lutris n'a pas pu détecter la prise en charge de l’architecture %s par " +"Vulkan.\n" +"Cela empêchera beaucoup de jeux et de programmes de fonctionner.\n" +"Pour l’installer, merci d’utiliser le guide suivant : Installer " +"des Pilotes Graphiques" + +#: lutris/startup.py:128 +msgid " and " +msgstr " et " + +#: lutris/sysoptions.py:29 +msgid "Keep current" +msgstr "Garder l’actuel" + +#: lutris/sysoptions.py:37 lutris/sysoptions.py:46 lutris/sysoptions.py:57 +#: lutris/sysoptions.py:501 +msgid "Off" +msgstr "Désactivé" + +#: lutris/sysoptions.py:38 +msgid "Primary" +msgstr "Primaire" + +#: lutris/sysoptions.py:85 +msgid "Auto: WARNING -- No Vulkan Loader detected!" +msgstr "Auto : AVERTISSEMENT -- Pas de chargeur Vulkan détecté !" + +#: lutris/sysoptions.py:119 +msgid "Auto: Intel Open Source (MESA: ANV)" +msgstr "Auto : Intel Open Source (MESA : ANV)" + +#: lutris/sysoptions.py:121 +msgid "Auto: AMD RADV Open Source (MESA: RADV)" +msgstr "Auto : AMD RADV Open Source (MESA : RADV)" + +#: lutris/sysoptions.py:123 +msgid "Auto: Nvidia Proprietary" +msgstr "Auto : Nvidia Propriétaire" + +#: lutris/sysoptions.py:145 +msgid "Default installation folder" +msgstr "Dossier d’installation par défaut" + +#: lutris/sysoptions.py:148 +msgid "The default folder where you install your games." +msgstr "Le dossier par défaut où vous installez vos jeux." + +#: lutris/sysoptions.py:156 +msgid "Disable Lutris Runtime" +msgstr "Désactiver l’environnement d’exécution Lutris" + +#: lutris/sysoptions.py:159 +msgid "" +"The Lutris Runtime loads some libraries before running the game, which can " +"cause some incompatibilities in some cases. Check this option to disable it." +msgstr "" +"L’environnement d’exécution Lutris charge certaines librairies avant de " +"lancer le jeu, ce qui peut causer certaines incompatibilités dans certains " +"cas. Vérifiez cette option pour la désactiver." + +#: lutris/sysoptions.py:166 +msgid "Prefer system libraries" +msgstr "Préférer les librairies système" + +#: lutris/sysoptions.py:168 +msgid "" +"When the runtime is enabled, prioritize the system libraries over the " +"provided ones." +msgstr "" +"Quand l’environnement d’exécution est activé, prioriser les librairies du " +"système sur celles fournies." + +#: lutris/sysoptions.py:174 +msgid "Restore resolution on game exit" +msgstr "Restaurer la résolution quand le jeu est quitté" + +#: lutris/sysoptions.py:176 +msgid "" +"Some games don't restore your screen resolution when \n" +"closed or when they crash. This is when this option comes \n" +"into play to save your bacon." +msgstr "" +"Certains jeux ne restaurent pas la résolution de votre écran quand\n" +"ils sont fermés ou crashent. C’est ici que cette option intervient\n" +"pour vous sauver la mise." + +#: lutris/sysoptions.py:183 +msgid "Enable gamescope" +msgstr "Activer gamescope" + +#: lutris/sysoptions.py:187 +msgid "" +"Use gamescope to draw the game window isolated from your desktop.\n" +"Use Ctrl+Super+F to toggle fullscreen" +msgstr "" +"Utilisez gamescope pour dessiner la fenêtre de jeu isolée de votre bureau.\n" +"Utilisez Ctrl+Super+F pour activer le mode plein écran" + +#: lutris/sysoptions.py:193 +msgid "Gamescope output resolution" +msgstr "Résolution gamescope de sortie" + +#: lutris/sysoptions.py:197 +msgid "Resolution of the window on your desktop" +msgstr "Résolution de la fenêtre sur votre ordinateur" + +#: lutris/sysoptions.py:202 +msgid "Gamescope game resolution" +msgstr "Résolution gamescope du jeu" + +#: lutris/sysoptions.py:206 +msgid "Resolution of the screen visible to the game" +msgstr "Résolution de l’écran visible par le jeu" + +#: lutris/sysoptions.py:211 +msgid "Restrict number of cores used" +msgstr "Limiter le nombre de cœurs utilisés" + +#: lutris/sysoptions.py:214 +msgid "Restrict the game to a maximum number of CPU cores." +msgstr "Limiter le jeu à un nombre maximum de cœurs CPU." + +#: lutris/sysoptions.py:219 +msgid "Restrict number of cores to" +msgstr "Limiter le nombre de cœurs à" + +#: lutris/sysoptions.py:222 +msgid "" +"Maximum number of CPU cores to be used, if 'Restrict number of cores used' " +"is turned on." +msgstr "" +"Nombre maximum de cœurs CPU à utiliser, si l’option « Limiter le nombre de " +"cœurs utilisés » est activée." + +#: lutris/sysoptions.py:228 +msgid "Restore gamma on game exit" +msgstr "Restaurer le gamma lors de la sortie" + +#: lutris/sysoptions.py:230 +msgid "" +"Some games don't correctly restores gamma on exit, making your display too " +"bright. Select this option to correct it." +msgstr "" +"Certains jeu ne restaurent pas correctement le gamma lorsqu'ils sont " +"quittés, ce qui rend votre écran trop clair. Sélectionnez cette option pour " +"corriger cela." + +#: lutris/sysoptions.py:235 +msgid "Disable desktop effects" +msgstr "Désactiver les effets de bureau" + +#: lutris/sysoptions.py:239 +msgid "" +"Disable desktop effects while game is running, reducing stuttering and " +"increasing performance" +msgstr "" +"Désactiver les effets de bureau quand le jeu est lancé, pour réduire les " +"saccades et augmenter la performance" + +#: lutris/sysoptions.py:244 +msgid "Disable screen saver" +msgstr "Désactiver l’économiseur d’écran" + +#: lutris/sysoptions.py:249 +msgid "" +"Disable the screen saver while a game is running. Requires the screen " +"saver's functionality to be exposed over DBus." +msgstr "" +"Désactiver l’économiseur d’écran quand le jeu est lancé. Cela requiert que " +"la fonction économiseur d’écran soit exposée à travers DBus." + +#: lutris/sysoptions.py:256 +msgid "Reset PulseAudio" +msgstr "Réinitialiser PulseAudio" + +#: lutris/sysoptions.py:260 +msgid "Restart PulseAudio before launching the game." +msgstr "Redémarrer PulseAudio avant de lancer le jeu." + +#: lutris/sysoptions.py:265 +msgid "Reduce PulseAudio latency" +msgstr "Réduire la latence PulseAudio" + +#: lutris/sysoptions.py:269 +msgid "" +"Set the environment variable PULSE_LATENCY_MSEC=60 to improve audio quality " +"on some games" +msgstr "" +"Définir la variable d’environnement PULSE_LATENCY_MSEC=60 pour améliorer la " +"qualité audio sur certains jeux" + +#: lutris/sysoptions.py:275 +msgid "Switch to US keyboard layout" +msgstr "Passer à une configuration clavier US" + +#: lutris/sysoptions.py:278 +msgid "Switch to US keyboard QWERTY layout while game is running" +msgstr "" +"Passer à la configuration clavier US QWERTY pendant que le jeu est lancé" + +#: lutris/sysoptions.py:285 +msgid "Optimus launcher (NVIDIA Optimus laptops)" +msgstr "Lanceur Optimus (laptops NVIDIA Optimus)" + +#: lutris/sysoptions.py:287 +msgid "" +"If you have installed the primus or bumblebee packages, select what launcher " +"will run the game with the command, activating your NVIDIA graphic chip for " +"high 3D performance. primusrun normally has better performance, butoptirun/" +"virtualgl works better for more games.Primus VK provide vulkan support under " +"bumblebee." +msgstr "" +"Si vous avez installé les paquets primus ou bumblebee, sélectionnez le " +"lanceur qui exécutera le jeu avec la commande , en activant votre puce " +"graphique NVIDIA pour des performances 3D élevées. primusrun a normalement " +"de meilleures performances, mais optirun / virtualgl fonctionne mieux pour " +"plus de jeux. Primus VK fournit un support vulkan sous bumblebee." + +#: lutris/sysoptions.py:299 +msgid "Vulkan ICD loader" +msgstr "Chargeur Vulkan ICD" + +#: lutris/sysoptions.py:301 +msgid "" +"The ICD loader is a library that is placed between a Vulkan application and " +"any number of Vulkan drivers, in order to support multiple drivers and the " +"instance-level functionality that works across these drivers." +msgstr "" +"Le chargeur ICD est une bibliothèque qui est placée entre une application " +"Vulkan et un nombre quelconque de pilotes Vulkan, afin de prendre en charge " +"plusieurs pilotes et la fonctionnalité de niveau instance qui fonctionne sur " +"ces pilotes." + +#: lutris/sysoptions.py:309 +msgid "FPS counter (MangoHud)" +msgstr "Compteur de FPS (MangoHud)" + +#: lutris/sysoptions.py:312 +msgid "" +"Display the game's FPS + other information. Requires MangoHud to be " +"installed." +msgstr "" +"Afficher les FPS du jeu + d’autres informations. Requiert que MangoHud soit " +"installé." + +#: lutris/sysoptions.py:321 +msgid "Limit the game's FPS to desired number" +msgstr "Limiter les FPS du jeu à un nombre voulu" + +#: lutris/sysoptions.py:328 +msgid "Enable Feral GameMode" +msgstr "Activer Feral GameMode" + +#: lutris/sysoptions.py:329 +msgid "Request a set of optimisations be temporarily applied to the host OS" +msgstr "" +"Demande qu'un ensemble d'optimisations soit temporairement appliqué au " +"système d'exploitation hôte" + +#: lutris/sysoptions.py:336 +msgid "Enable NVIDIA Prime Render Offload" +msgstr "Activer NVIDIA Prime Render Offload" + +#: lutris/sysoptions.py:337 +msgid "" +"If you have the latest NVIDIA driver and the properly patched xorg-server " +"(see https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/" +"primerenderoffload.html), you can launch a game on your NVIDIA GPU by " +"toggling this switch. This will apply __NV_PRIME_RENDER_OFFLOAD=1 and " +"__GLX_VENDOR_LIBRARY_NAME=nvidia environment variables." +msgstr "" +"Si vous avez le dernier pilote NVIDIA et le serveur xorg correctement patché " +"(voir https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/" +"primerenderoffload.html), vous pouvez lancer un jeu sur votre GPU NVIDIA en " +"activant ce commutateur. Cela appliquera les variables d'environnement " +"__NV_PRIME_RENDER_OFFLOAD=1 et __GLX_VENDOR_LIBRARY_NAME=nvidia." + +#: lutris/sysoptions.py:348 +msgid "Use discrete graphics" +msgstr "Utilisez des graphiques discrets" + +#: lutris/sysoptions.py:350 +msgid "" +"If you have open source graphic drivers (Mesa), selecting this option will " +"run the game with the 'DRI_PRIME=1' environment variable, activating your " +"discrete graphic chip for high 3D performance." +msgstr "" +"Si vous avez des pilotes graphiques open source (Mesa), en sélectionnant " +"cette option, le jeu sera exécuté avec la variable d'environnement " +"'DRI_PRIME=1', activant votre puce graphique discrète pour des performances " +"3D élevées." + +#: lutris/sysoptions.py:358 +msgid "SDL 1.2 Fullscreen Monitor" +msgstr "Moniteur plein écran SDL 1.2" + +#: lutris/sysoptions.py:362 +msgid "" +"Hint SDL 1.2 games to use a specific monitor when going fullscreen by " +"setting the SDL_VIDEO_FULLSCREEN environment variable" +msgstr "" +"Indique aux jeux SDL 1.2 d'utiliser un moniteur spécifique lors du passage " +"en plein écran en définissant la variable d'environnement " +"SDL_VIDEO_FULLSCREEN" + +#: lutris/sysoptions.py:369 +msgid "Turn off monitors except" +msgstr "Éteindre les moniteurs à part" + +#: lutris/sysoptions.py:374 +msgid "" +"Only keep the selected screen active while the game is running. \n" +"This is useful if you have a dual-screen setup, and are \n" +"having display issues when running a game in fullscreen." +msgstr "" +"Garder uniquement l’écran sélectionné actif quand le jeu est lancé.\n" +"Cela est utile si vous avez une configuration à 2 écrans, et avez\n" +"des problèmes d’affichage lors du lancement du jeu en plein écran." + +#: lutris/sysoptions.py:382 +msgid "Switch resolution to" +msgstr "Basculer la résolution à" + +#: lutris/sysoptions.py:386 +msgid "Switch to this screen resolution while the game is running." +msgstr "Passer à cette résolution d’écran pendant que le jeu est lancé." + +#: lutris/sysoptions.py:390 +msgid "CLI mode" +msgstr "Mode CLI" + +#: lutris/sysoptions.py:394 +msgid "" +"Enable a terminal for text-based games. Only useful for ASCII based games. " +"May cause issues with graphical games." +msgstr "" +"Active un terminal pour les jeux basés sur du texte. Utile uniquement pour " +"les jeux basés sur ASCII. Peut causer des problèmes avec des jeux graphiques." + +#: lutris/sysoptions.py:399 +msgid "Text based games emulator" +msgstr "Émulateur de jeux basés sur du texte" + +#: lutris/sysoptions.py:404 +msgid "" +"The terminal emulator used with the CLI mode. Choose from the list of " +"detected terminal apps or enter the terminal's command or path." +msgstr "" +"L’émulateur de terminal utilisé avec le mode CLI. Choisissez depuis la liste " +"des applications de terminal détectées ou entrez la commande ou le chemin du " +"terminal." + +#: lutris/sysoptions.py:411 +msgid "Environment variables" +msgstr "Variables d’environnement" + +#: lutris/sysoptions.py:412 +msgid "Environment variables loaded at run time" +msgstr "Variables d’environnement chargées lors de l’exécution" + +#: lutris/sysoptions.py:417 +msgid "AntiMicroX Profile" +msgstr "Profil AntiMicroX" + +#: lutris/sysoptions.py:419 +msgid "Path to an AntiMicroX profile file" +msgstr "Chemin vers un fichier de profil AntiMicroX" + +#: lutris/sysoptions.py:424 +msgid "Command prefix" +msgstr "Préfixe de commande" + +#: lutris/sysoptions.py:426 +msgid "" +"Command line instructions to add in front of the game's execution command." +msgstr "" +"Instructions en ligne de commande à ajouter devant la commande d'exécution " +"du jeu." + +#: lutris/sysoptions.py:432 +msgid "Manual script" +msgstr "Script Manuel" + +#: lutris/sysoptions.py:434 +msgid "Script to execute from the game's contextual menu" +msgstr "Script à exécuter depuis le menu contextuel du jeu" + +#: lutris/sysoptions.py:439 +msgid "Pre-launch script" +msgstr "Script de pré-lancement" + +#: lutris/sysoptions.py:441 +msgid "Script to execute before the game starts" +msgstr "Script à exécuter avant le début du jeu" + +#: lutris/sysoptions.py:446 +msgid "Wait for pre-launch script completion" +msgstr "Attendre la fin du script de pré-lancement" + +#: lutris/sysoptions.py:449 +msgid "Run the game only once the pre-launch script has exited" +msgstr "" +"Lancer le jeu seulement une fois que le script de pré-lancement s’est terminé" + +#: lutris/sysoptions.py:454 +msgid "Post-exit script" +msgstr "Script post-sortie" + +#: lutris/sysoptions.py:456 +msgid "Script to execute when the game exits" +msgstr "Script à exécuter quand le jeu est quitté" + +#: lutris/sysoptions.py:461 +msgid "Include processes" +msgstr "Inclure des processus" + +#: lutris/sysoptions.py:463 +msgid "" +"What processes to include in process monitoring. This is to override the " +"built-in exclude list.\n" +"Space-separated list, processes including spaces can be wrapped in quotation " +"marks." +msgstr "" +"Quels processus inclure dans la surveillance du processus. Ceci écrasera la " +"liste d’exclusion .\n" +"Liste séparée par des espaces, les processus incluant des espaces peuvent " +"être englobés avec des guillemets." + +#: lutris/sysoptions.py:471 +msgid "Exclude processes" +msgstr "Exclure des processus" + +#: lutris/sysoptions.py:473 +msgid "" +"What processes to exclude in process monitoring. For example background " +"processes that stick around after the game has been closed.\n" +"Space-separated list, processes including spaces can be wrapped in quotation " +"marks." +msgstr "" +"Quels processus exclure dans la surveillance du processus. Par exemple des " +"processus d’arrière plan qui traînent après que le jeu ait été fermé.\n" +"Liste séparée par des espaces, les processus incluant des espaces peuvent " +"être englobés avec des guillemets." + +#: lutris/sysoptions.py:482 +msgid "Killswitch file" +msgstr "Fichier Killswitch" + +#: lutris/sysoptions.py:484 +msgid "" +"Path to a file which will stop the game when deleted \n" +"(usually /dev/input/js0 to stop the game on joystick unplugging)" +msgstr "" +"Chemin vers un fichier qui stoppera le jeu quand supprimé\n" +"(habituellement /dev/input/js0 pour arrêter le jeu lors du débranchement du " +"joystick)" + +#: lutris/sysoptions.py:491 +msgid "SDL2 gamepad mapping" +msgstr "SDL2 gamepad mapping" + +#: lutris/sysoptions.py:493 +msgid "" +"SDL_GAMECONTROLLERCONFIG mapping string or path to a custom gamecontrollerdb." +"txt file containing mappings." +msgstr "" +"Chaîne de mappage SDL_GAMECONTROLLERCONFIG ou chemin vers un fichier " +"gamecontrollerdb.txt personnalisé contenant des mappages." + +#: lutris/sysoptions.py:498 +msgid "Use Xephyr" +msgstr "Utiliser Xephyr" + +#: lutris/sysoptions.py:502 +msgid "8BPP (256 colors)" +msgstr "8BPP (256 couleurs)" + +#: lutris/sysoptions.py:503 +msgid "16BPP (65536 colors)" +msgstr "16BPP (65536 couleurs)" + +#: lutris/sysoptions.py:504 +msgid "24BPP (16M colors)" +msgstr "24BPP (16M de couleurs)" + +#: lutris/sysoptions.py:508 +msgid "Run program in Xephyr to support 8BPP and 16BPP color modes" +msgstr "" +"Exécute le programme dans Xephyr pour supporter les modes de couleur 8BPP et " +"16BPP" + +#: lutris/sysoptions.py:513 +msgid "Xephyr resolution" +msgstr "Résolution Xephyr" + +#: lutris/sysoptions.py:515 +msgid "Screen resolution of the Xephyr server" +msgstr "Résolution d’écran du serveur Xephyr" + +#: lutris/sysoptions.py:520 +msgid "Xephyr Fullscreen" +msgstr "Xephyr plein écran" + +#: lutris/sysoptions.py:523 +msgid "Open Xephyr in fullscreen (at the desktop resolution)" +msgstr "Ouvrir Xephyr en plein écran (à la résolution de l'ordinateur)" + +#: lutris/util/system.py:20 +msgid "Documents" +msgstr "Documents" + +#: lutris/util/system.py:21 +msgid "Downloads" +msgstr "Téléchargements" + +#: lutris/util/system.py:22 +msgid "Desktop" +msgstr "Bureau" + +#: lutris/util/system.py:23 lutris/util/system.py:25 +msgid "Pictures" +msgstr "Images" + +#: lutris/util/system.py:24 +msgid "Videos" +msgstr "Vidéos" + +#: lutris/util/system.py:26 +msgid "Projects" +msgstr "Projets" + +#: lutris/util/ubisoft/client.py:102 +#, python-format +msgid "Ubisoft authentication has been lost: %s" +msgstr "L'authentification Ubisoft a été perdue : %s" + +#: lutris/util/wine/dll_manager.py:63 +msgid "Manual" +msgstr "Manuel" + +#: lutris/util/wine/wine.py:346 lutris/util/wine/wine.py:384 +#: lutris/util/wine/wine.py:404 +msgid "Launch anyway and do not show this message again." +msgstr "Lancer quand même et ne plus montrer ce message." + +#: lutris/util/wine/wine.py:348 lutris/util/wine/wine.py:386 +#: lutris/util/wine/wine.py:406 +msgid "Enable anyway and do not show this message again." +msgstr "Activer quand même et ne plus montrer ce message." + +#: lutris/util/wine/wine.py:353 +msgid "Vulkan is not installed or is not supported by your system" +msgstr "Vulkan n'est pas installé ou n'est pas supporté par votre système" + +#: lutris/util/wine/wine.py:355 +msgid "" +"If you have compatible hardware, please follow the installation procedures " +"as described in\n" +"How-to:-" +"DXVK (https://github.com/lutris/docs/blob/master/HowToDXVK.md)" +msgstr "" +"Si vous avez un matériel compatible, merci de suivre les procédures " +"d'installation comme décrit dans\n" +"Comment : -" +"DXVK (https://github.com/lutris/docs/blob/master/HowToDXVK.md)" + +#: lutris/util/wine/wine.py:367 +msgid "" +"Your limits are not set correctly. Please increase them as described here: " +"How-to:-" +"Esync (https://github.com/lutris/docs/blob/master/HowToEsync.md)" +msgstr "" +"Vos limites ne sont pas définies correctement. Merci de les augmenter comme " +"décrit ici : Comment : -Esync (https://github.com/lutris/docs/blob/master/HowToEsync." +"md)" + +#: lutris/util/wine/wine.py:376 +msgid "" +"Your kernel is not patched for fsync. Please get a patched kernel to use " +"fsync." +msgstr "" +"Votre noyau n'est pas patché pour fsync. Veuillez obtenir un noyau patché " +"pour utiliser fsync." + +#: lutris/util/wine/wine.py:390 lutris/util/wine/wine.py:410 +msgid "Incompatible Wine version detected" +msgstr "Version de Wine incompatible détectée" + +#: lutris/util/wine/wine.py:392 +msgid "" +"The Wine build you have selected does not support Esync.\n" +"Please switch to an Esync-capable version." +msgstr "" +"La version de Wine que vous avez sélectionnée ne prend pas en charge Esync.\n" +"Veuillez passer à une version compatible avec Esync." + +#: lutris/util/wine/wine.py:412 +msgid "" +"The Wine build you have selected does not support Fsync.\n" +"Please switch to an Fsync-capable version." +msgstr "" +"La version de Wine que vous avez sélectionnée ne prend pas en charge Fsync.\n" +"Veuillez passer à une version compatible avec Fsync." + +#~ msgid "Open Source Gaming Platform" +#~ msgstr "Plateforme libre de jeu" + +#~ msgid "Personnal Game Archives sources" +#~ msgstr "Sources des archives personnels de jeu" + +#~ msgid "" +#~ "Remove all data from game folder\n" +#~ "( {path})" +#~ msgstr "" +#~ "Supprimer toutes les données du dossier de jeu ({path})" + +#~ msgid "description" +#~ msgstr "déscription" + +#~ msgid "Remove ALL versions?" +#~ msgstr "Supprimer TOUTES les versions ?" -#: share/lutris/ui/runners-dialog.ui:24 -msgid "Refresh Runners" -msgstr "Rafraîchir les exécuteurs" +#~ msgid "" +#~ "This will remove ALL versions of %s.\n" +#~ "\n" +#~ "Use the Manage Versions button if you want to remove just one version." +#~ msgstr "" +#~ "Cela supprimera TOUTES les versions de %s.\n" +#~ "\n" +#~ "Utiliser le bouton « Gérer les versions » si vous voulez juste supprimer " +#~ "une version." -#: share/lutris/ui/runners-dialog.ui:40 -msgid "Open Runners Folder" -msgstr "Ouvrir le dossier des exécuteurs" +#~ msgid "Refresh Runners" +#~ msgstr "Rafraîchir les exécuteurs" diff --git a/po/hr.po b/po/hr.po index 7280f1877cb3f8e86a054fa767583733931306bf..cbf26ff18769bb27691660f3cdb5685facdd7534 100644 --- a/po/hr.po +++ b/po/hr.po @@ -2,21 +2,21 @@ msgid "" msgstr "" "Project-Id-Version: lutris\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-14 13:41+0100\n" -"PO-Revision-Date: 2021-12-14 14:33+0100\n" +"POT-Creation-Date: 2022-06-20 16:54+0200\n" +"PO-Revision-Date: 2022-08-30 19:37+0200\n" "Last-Translator: gogo \n" "Language-Team: \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.3\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" +"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: Poedit 3.0.1\n" #: share/applications/net.lutris.Lutris.desktop:3 -#: share/lutris/ui/lutris-window.ui:25 lutris/gui/application.py:71 -#: lutris/gui/widgets/status_icon.py:116 lutris/services/lutris.py:40 +#: share/lutris/ui/lutris-window.ui:25 lutris/gui/application.py:76 +#: lutris/gui/widgets/status_icon.py:116 lutris/services/lutris.py:39 msgid "Lutris" msgstr "Lutris" @@ -28,10 +28,6 @@ msgstr "platforma za očuvanje videoigara" msgid "gaming;wine;emulator;" msgstr "igranje;wine;emulator;" -#: share/applications/net.lutris.Lutris.desktop:8 -msgid "lutris" -msgstr "lutris" - #: share/metainfo/net.lutris.Lutris.metainfo.xml:11 #: share/lutris/ui/about-dialog.ui:18 msgid "Video game preservation platform" @@ -53,7 +49,7 @@ msgstr "" "reimplementacije pogona i slojeva kompatibilnosti, omogućuje vam središnje " "sučelje za pokretanje svih vaših igara." -#: share/lutris/ui/about-dialog.ui:8 share/lutris/ui/lutris-window.ui:618 +#: share/lutris/ui/about-dialog.ui:8 share/lutris/ui/lutris-window.ui:581 msgid "About Lutris" msgstr "O Lutrisu" @@ -94,7 +90,7 @@ msgid "Forgot password?" msgstr "Zaboravili ste lozinku?" #: share/lutris/ui/dialog-lutris-login.ui:43 lutris/gui/dialogs/issue.py:52 -#: lutris/gui/installerwindow.py:73 +#: lutris/gui/installerwindow.py:76 msgid "C_ancel" msgstr "O_dustani" @@ -114,84 +110,80 @@ msgstr "Korisničko ime" msgid "Search..." msgstr "Pretraži..." -#: share/lutris/ui/lutris-window.ui:77 -msgid "Your Library" -msgstr "Vaša igroteka" - -#: share/lutris/ui/lutris-window.ui:93 -msgid "Community Installers" -msgstr "Instalacijski program zajednice" - -#: share/lutris/ui/lutris-window.ui:204 +#: share/lutris/ui/lutris-window.ui:154 msgid "Search games" msgstr "Pretraži igre" -#: share/lutris/ui/lutris-window.ui:219 +#: share/lutris/ui/lutris-window.ui:169 msgid "Add Game" msgstr "Dodaj igru" -#: share/lutris/ui/lutris-window.ui:252 +#: share/lutris/ui/lutris-window.ui:201 msgid "Toggle View" msgstr "Promijeni pogled" -#: share/lutris/ui/lutris-window.ui:350 +#: share/lutris/ui/lutris-window.ui:299 msgid "Zoom:" msgstr "Uvećanje:" -#: share/lutris/ui/lutris-window.ui:403 +#: share/lutris/ui/lutris-window.ui:352 msgid "Sort Ascending" msgstr "Razvrstaj rastući" -#: share/lutris/ui/lutris-window.ui:418 lutris/gui/config/common.py:97 -#: lutris/gui/views/list.py:44 lutris/gui/views/list.py:158 +#: share/lutris/ui/lutris-window.ui:367 lutris/gui/config/common.py:113 +#: lutris/gui/views/list.py:45 lutris/gui/views/list.py:159 msgid "Name" msgstr "Naslov" -#: share/lutris/ui/lutris-window.ui:433 lutris/gui/views/list.py:45 +#: share/lutris/ui/lutris-window.ui:382 lutris/gui/views/list.py:46 msgid "Year" msgstr "Godina" -#: share/lutris/ui/lutris-window.ui:448 lutris/gui/views/list.py:48 +#: share/lutris/ui/lutris-window.ui:397 lutris/gui/views/list.py:49 msgid "Last Played" msgstr "Posljednje igranje" -#: share/lutris/ui/lutris-window.ui:463 lutris/gui/views/list.py:50 +#: share/lutris/ui/lutris-window.ui:412 lutris/gui/views/list.py:51 msgid "Installed At" msgstr "Instalirano" -#: share/lutris/ui/lutris-window.ui:478 lutris/gui/views/list.py:52 +#: share/lutris/ui/lutris-window.ui:427 lutris/gui/views/list.py:53 msgid "Play Time" msgstr "Vrijeme igranja" -#: share/lutris/ui/lutris-window.ui:507 +#: share/lutris/ui/lutris-window.ui:456 msgid "_Installed Games Only" msgstr "_Samo instalirane igre" -#: share/lutris/ui/lutris-window.ui:522 +#: share/lutris/ui/lutris-window.ui:471 msgid "Show _Hidden Games" msgstr "Prikaži _skrivene igre" -#: share/lutris/ui/lutris-window.ui:536 +#: share/lutris/ui/lutris-window.ui:485 msgid "Show Side _Panel" msgstr "Prikaži bočni _panel" -#: share/lutris/ui/lutris-window.ui:551 +#: share/lutris/ui/lutris-window.ui:500 +msgid "Add games" +msgstr "Dodaj igre" + +#: share/lutris/ui/lutris-window.ui:514 msgid "Preferences" msgstr "Osobitosti" -#: share/lutris/ui/lutris-window.ui:576 +#: share/lutris/ui/lutris-window.ui:539 msgid "Discord" msgstr "Discord" -#: share/lutris/ui/lutris-window.ui:590 +#: share/lutris/ui/lutris-window.ui:553 msgid "Lutris forums" msgstr "Lutris forum" -#: share/lutris/ui/lutris-window.ui:604 +#: share/lutris/ui/lutris-window.ui:567 msgid "Make a donation" msgstr "Donirajte" -#: lutris/exceptions.py:27 +#: lutris/exceptions.py:26 #, python-brace-format msgid "" "The following {arch} libraries are required but are not installed on your " @@ -202,93 +194,124 @@ msgstr "" "sustavu:\n" "{libs}" -#: lutris/game_actions.py:56 lutris/gui/widgets/game_bar.py:187 -#: lutris/gui/widgets/game_bar.py:201 +#. Local services don't show an install dialog, they can be launched directly +#: lutris/game_actions.py:60 lutris/gui/widgets/game_bar.py:201 +#: lutris/gui/widgets/game_bar.py:215 msgid "Play" msgstr "Igraj" -#: lutris/game_actions.py:57 lutris/gui/widgets/game_bar.py:193 +#: lutris/game_actions.py:61 lutris/gui/widgets/game_bar.py:207 msgid "Stop" msgstr "Zaustavi" -#: lutris/game_actions.py:58 -msgid "Show logs" -msgstr "Prikaži zapise" - -#: lutris/game_actions.py:59 lutris/gui/installer/script_box.py:58 -#: lutris/gui/widgets/game_bar.py:196 +#: lutris/game_actions.py:62 lutris/gui/dialogs/runner_install.py:193 +#: lutris/gui/installer/script_box.py:62 lutris/gui/widgets/game_bar.py:210 msgid "Install" msgstr "Instaliraj" -#: lutris/game_actions.py:60 +#: lutris/game_actions.py:63 +msgid "Install updates" +msgstr "Instaliraj nadopune" + +#: lutris/game_actions.py:65 +msgid "Show logs" +msgstr "Prikaži zapise" + +#: lutris/game_actions.py:66 msgid "Add installed game" msgstr "Dodaj instaliranu igru" -#: lutris/game_actions.py:61 lutris/gui/widgets/sidebar.py:194 +#: lutris/game_actions.py:67 +msgid "Duplicate" +msgstr "Duplikat" + +#: lutris/game_actions.py:68 lutris/gui/widgets/sidebar.py:205 msgid "Configure" msgstr "Prilagodi" -#: lutris/game_actions.py:62 +#: lutris/game_actions.py:69 msgid "Add to favorites" msgstr "Dodaj u omiljene" -#: lutris/game_actions.py:63 +#: lutris/game_actions.py:70 msgid "Remove from favorites" msgstr "Ukloni iz omiljenih" -#: lutris/game_actions.py:64 +#: lutris/game_actions.py:71 msgid "Execute script" msgstr "Pokreni skriptu" -#: lutris/game_actions.py:65 +#: lutris/game_actions.py:72 msgid "Browse files" msgstr "Pregledaj datoteke" -#: lutris/game_actions.py:68 lutris/gui/installerwindow.py:425 +#: lutris/game_actions.py:75 lutris/gui/installerwindow.py:178 msgid "Create desktop shortcut" msgstr "Stvori prečac radne površine" -#: lutris/game_actions.py:73 +#: lutris/game_actions.py:80 msgid "Delete desktop shortcut" msgstr "Obriši prečac radne površine" -#: lutris/game_actions.py:78 lutris/gui/installerwindow.py:429 +#: lutris/game_actions.py:85 lutris/gui/installerwindow.py:182 msgid "Create application menu shortcut" msgstr "Stvori prečac izbornika aplikacija" -#: lutris/game_actions.py:83 +#: lutris/game_actions.py:90 msgid "Delete application menu shortcut" msgstr "Obriši prečac izbornika aplikacija" -#: lutris/game_actions.py:86 +#: lutris/game_actions.py:95 lutris/gui/installerwindow.py:187 +msgid "Create steam shortcut" +msgstr "Stvori steam prečac" + +#: lutris/game_actions.py:100 +msgid "Delete steam shortcut" +msgstr "Obriši steam prečac" + +#: lutris/game_actions.py:103 msgid "Install another version" msgstr "Instaliraj drugu inačicu" -#: lutris/game_actions.py:87 lutris/gui/dialogs/uninstall_game.py:139 +#: lutris/game_actions.py:104 lutris/gui/dialogs/uninstall_game.py:139 msgid "Remove" msgstr "Ukloni" -#: lutris/game_actions.py:88 +#: lutris/game_actions.py:105 msgid "View on WineGame.net" -msgstr "Pogledaj na winegame.net" +msgstr "Pogledaj na WineGame.net" -#: lutris/game_actions.py:89 +#: lutris/game_actions.py:106 msgid "Hide game from library" msgstr "Sakrij igru u igroteci" -#: lutris/game_actions.py:90 +#: lutris/game_actions.py:107 msgid "Unhide game from library" msgstr "Otkrij igru u igroteci" -#: lutris/game_actions.py:152 +#: lutris/game_actions.py:185 msgid "Log for {}" msgstr "Zapis za {}" -#: lutris/game_actions.py:211 +#: lutris/game_actions.py:220 +#, python-format +msgid "" +"Do you wish to duplicate %s?\n" +"The configuration will be duplicated, but the games files will not be " +"duplicated." +msgstr "" +"Želite li stvoriti duplikat %s?\n" +"Podešavanje će biti duplikat, ali datoteke igre neće biti duplicirane." + +#: lutris/game_actions.py:223 +msgid "Duplicate game?" +msgstr "Stvori duplikat igre?" + +#: lutris/game_actions.py:284 msgid "This game has no installation directory" msgstr "Ova igra nema direktorij instalacije" -#: lutris/game_actions.py:215 +#: lutris/game_actions.py:288 #, python-format msgid "" "Can't open %s \n" @@ -297,49 +320,62 @@ msgstr "" "Nemoguće je otvoriti %s \n" "Mapa ne postoji." -#: lutris/game.py:166 +#: lutris/game.py:178 msgid "Error the runner is not installed" msgstr "Greška, pokretač nije instaliran" -#: lutris/game.py:168 +#: lutris/game.py:180 msgid "A bios file is required to run this game" msgstr "Bios datoteka je potrebna za pokretanje ove igre" -#: lutris/game.py:172 +#: lutris/game.py:184 msgid "The file {} could not be found" msgstr "Datoteka {} se ne može pronaći" -#: lutris/game.py:174 +#: lutris/game.py:186 msgid "" "This game has no executable set. The install process didn't finish properly." msgstr "" "Ova igra nema skup pokretačkih datoteka. Proces instalacije nije uspješno " "završio." -#: lutris/game.py:178 +#: lutris/game.py:189 #, python-format msgid "The file %s is not executable" msgstr "Datoteka %s nije izvršna datoteka" -#: lutris/game.py:180 +#: lutris/game.py:191 #, python-format msgid "The path '%s' is not set. please set it in the options." msgstr "Putanja '%s' nije postavljena. Postavite ju u mogućnostima." -#: lutris/game.py:183 +#: lutris/game.py:193 #, python-format msgid "Unhandled error: %s" msgstr "Neobrađena greška: %s" -#: lutris/game.py:294 +#: lutris/game.py:298 +msgid "Tried to launch a game that isn't installed." +msgstr "Pokušaj pokretanja igre koja nije instalirana." + +#: lutris/game.py:300 lutris/game.py:417 +msgid "Invalid game configuration: Missing runner" +msgstr "Nevaljano podešavanje igre: Nedostaje pokretač" + +#: lutris/game.py:309 msgid "Runtime currently updating" msgstr "Tijek izvođenja se trenutno nadopunjuje" -#: lutris/game.py:294 +#: lutris/game.py:309 msgid "Game might not work as expected" msgstr "Igra možda neće očekivano raditi" -#: lutris/game.py:380 +#: lutris/game.py:342 +msgid "Unable to find Xephyr, install it or disable the Xephyr option" +msgstr "" +"Neuspjeli Xephyr pronalazak, instalirajte ili onemogućite Xephyr mogućnost" + +#: lutris/game.py:398 #, python-format msgid "" "The selected terminal application could not be launched:\n" @@ -348,19 +384,16 @@ msgstr "" "Odabrana aplikacija terminala se ne može pokrenuti:\n" "%s" -#: lutris/game.py:417 -msgid "An error prevented the game from running" -msgstr "Greška je spriječila pokretanje igre" - -#: lutris/game.py:490 -msgid "Invalid game configuration: Missing runner" -msgstr "Nevaljano podešavanje igre: Nedostaje pokretač" +#. The 'file' sort of gameplay_info cannot be made to use a configuration +#: lutris/game.py:434 +msgid "The runner could not find a command to apply the configuration to." +msgstr "Pokretač nije mogao pronaći naredbu za primjenjivanje podešavanja." -#: lutris/game.py:576 +#: lutris/game.py:635 msgid "Error lauching the game:\n" msgstr "Greška pokretanja igre:\n" -#: lutris/game.py:668 +#: lutris/game.py:727 #, python-format msgid "" "Error: Missing shared library.\n" @@ -371,24 +404,116 @@ msgstr "" "\n" "%s" -#: lutris/game.py:674 +#: lutris/game.py:733 msgid "" "Error: A different Wine version is already using the same Wine prefix." msgstr "Greška: Druga Wine inačica već koristi isti Wine prefiks." -#: lutris/gui/application.py:81 +#: lutris/gui/addgameswindow.py:21 +msgid "Search the Lutris website for installers" +msgstr "Pretražite instalacijske programe na Lutris web stranici" + +#: lutris/gui/addgameswindow.py:22 +msgid "Query our website for community installers" +msgstr "" +"Provjerite našu web stranicu za instalacijskim programima pružanih od strane " +"zajednice" + +#: lutris/gui/addgameswindow.py:27 +msgid "Scan a folder for games" +msgstr "Pretraži igre u mapi" + +#: lutris/gui/addgameswindow.py:28 +msgid "Mass-import a folder of games" +msgstr "Masovni uvoz mape igara" + +#: lutris/gui/addgameswindow.py:33 +msgid "Install a Windows game from media" +msgstr "Instaliraj Windows igru iz medija" + +#: lutris/gui/addgameswindow.py:34 +msgid "Launch a setup file from an optical drive or download" +msgstr "Pokreni datoteku instalacije s optičkog uređaja ili preuzetih datoteka" + +#: lutris/gui/addgameswindow.py:39 +msgid "Install from a local install script" +msgstr "Instaliraj s lokalnom skriptom instalacije" + +#: lutris/gui/addgameswindow.py:40 +msgid "Run a YAML install script" +msgstr "Pokreni YAML instalacijsku skriptu" + +#: lutris/gui/addgameswindow.py:45 +msgid "Add locally installed game" +msgstr "Dodaj lokalno instaliranu igru" + +#: lutris/gui/addgameswindow.py:46 +msgid "Manually configure a game available locally" +msgstr "Ručno podesi lokalno dostupnu igru" + +#: lutris/gui/addgameswindow.py:51 +msgid "Add games to Lutris" +msgstr "Dodaj igre u Lutris" + +#: lutris/gui/addgameswindow.py:126 +msgid "Search Lutris.net" +msgstr "Pretraži Lutris.net" + +#: lutris/gui/addgameswindow.py:149 +msgid "Select folder to scan" +msgstr "Odaberi mapu za pretragu" + +#: lutris/gui/addgameswindow.py:223 +msgid "No results" +msgstr "Nema rezultata" + +#: lutris/gui/addgameswindow.py:225 +#, python-brace-format +msgid "Showing {count} results" +msgstr "Prikazuje se {count} rezultata" + +#: lutris/gui/addgameswindow.py:227 +#, python-brace-format +msgid "{total_count} results, only displaying first {count}" +msgstr "{total_count} rezultata, prikazuje se samo prvih {count}" + +#: lutris/gui/addgameswindow.py:243 +msgid "Select setup file" +msgstr "Odaberi datoteku instalacije" + +#: lutris/gui/addgameswindow.py:245 +msgid "Game name" +msgstr "Naslov igre" + +#: lutris/gui/addgameswindow.py:249 +msgid "Continue" +msgstr "Nastavi" + +#: lutris/gui/addgameswindow.py:257 +msgid "Setup file" +msgstr "Datoteka instalacije" + +#: lutris/gui/addgameswindow.py:266 +msgid "Select the setup file" +msgstr "Odaberi datoteku instalacije" + +#: lutris/gui/addgameswindow.py:279 +msgid "Select a Lutris installer" +msgstr "Odaberi Lutris instalacijski program" + +#: lutris/gui/application.py:87 msgid "" "Running Lutris as root is not recommended and may cause unexpected issues" msgstr "" "Pokretanje Lutrisa kao korijenskog korisnika nije preporučljivo i može " "prouzrokovati neočekivane probleme" -#: lutris/gui/application.py:91 +#: lutris/gui/application.py:97 msgid "Your Linux distribution is too old. Lutris won't function properly." msgstr "" "Vaša Linux distribucija je zastarjela. Lutris neće ispravno funkcionirati." -#: lutris/gui/application.py:96 +#: lutris/gui/application.py:102 msgid "" "Run a game directly by adding the parameter lutris:rungame/game-identifier.\n" "If several games share the same identifier you can use the numerical ID " @@ -403,81 +528,118 @@ msgstr "" "rungameid/brojčani-id.\n" "Za instalaciju igre, dodajte lutris:install/identifikator-igre." -#: lutris/gui/application.py:109 +#: lutris/gui/application.py:115 msgid "Print the version of Lutris and exit" msgstr "Prikaži inačicu Lutrisa i izađi" -#: lutris/gui/application.py:117 +#: lutris/gui/application.py:123 msgid "Show debug messages" msgstr "Prikaži poruke otklanjanja greške" -#: lutris/gui/application.py:125 +#: lutris/gui/application.py:131 msgid "Install a game from a yml file" msgstr "Instaliraj igru iz yml datoteke" -#: lutris/gui/application.py:133 +#: lutris/gui/application.py:139 msgid "Generate a bash script to run a game without the client" msgstr "Stvori bash skriptu za pokretanje igre bez klijenta" -#: lutris/gui/application.py:141 +#: lutris/gui/application.py:147 msgid "Execute a program with the Lutris Runtime" msgstr "Pokreni program s lutris tijekom izvođenja" -#: lutris/gui/application.py:149 +#: lutris/gui/application.py:155 msgid "List all games in database" msgstr "Prikaži sve igre iz baze podataka" -#: lutris/gui/application.py:157 +#: lutris/gui/application.py:163 msgid "Only list installed games" msgstr "Samo prikaži instalirane igre" -#: lutris/gui/application.py:165 +#: lutris/gui/application.py:171 msgid "List available Steam games" msgstr "Prikaži dostupne Steam igre" -#: lutris/gui/application.py:173 +#: lutris/gui/application.py:179 msgid "List all known Steam library folders" msgstr "Prikaži sve poznate mape Steam biblioteke" -#: lutris/gui/application.py:181 +#: lutris/gui/application.py:187 +msgid "List all known runners" +msgstr "Prikaži sve poznate pokretače" + +#: lutris/gui/application.py:195 +msgid "List all known Wine versions" +msgstr "Prikaži sve poznate Wine inačice" + +#: lutris/gui/application.py:203 +msgid "Install a Runner" +msgstr "Instaliraj pokretač" + +#: lutris/gui/application.py:211 +msgid "Uninstall a Runner" +msgstr "Deinstaliraj pokretač" + +#: lutris/gui/application.py:219 +msgid "Export a game" +msgstr "Izvezi igru" + +#: lutris/gui/application.py:227 +msgid "Import a game" +msgstr "Uvezi igru" + +#: lutris/gui/application.py:235 +msgid "Destination path for export" +msgstr "Putanja za izvoz" + +#: lutris/gui/application.py:243 msgid "Display the list of games in JSON format" msgstr "Prikaži popis igara u JSON formatu" -#: lutris/gui/application.py:189 +#: lutris/gui/application.py:251 msgid "Reinstall game" msgstr "Ponovno instaliraj igru" -#: lutris/gui/application.py:192 +#: lutris/gui/application.py:254 msgid "Submit an issue" msgstr "Prijavi problem" -#: lutris/gui/application.py:198 +#: lutris/gui/application.py:260 msgid "URI to open" msgstr "URI za otvoriti" -#: lutris/gui/application.py:373 +#: lutris/gui/application.py:489 #, python-format msgid "%s is not a valid URI" msgstr "%s nije valjan URI" -#: lutris/gui/application.py:391 +#: lutris/gui/application.py:509 #, python-format msgid "Failed to download %s" msgstr "Neuspjelo preuzimanje %s" -#: lutris/gui/application.py:399 +#: lutris/gui/application.py:517 #, python-brace-format msgid "download {url} to {file} started" msgstr "preuzimanje {url} u {file} je započelo" -#: lutris/gui/application.py:410 +#: lutris/gui/application.py:528 #, python-format msgid "No such file: %s" msgstr "Nema takve datoteke: %s" -#: lutris/gui/application.py:510 -msgid "Could not retrieve game installer." -msgstr "Nemoguće preuzimanje instalacijskog programa igre." +#: lutris/gui/application.py:645 +#, python-format +msgid "There is no installer available for %s." +msgstr "Nema dostupnog instalacijskog programa za %s." + +#: lutris/gui/application.py:655 +msgid "No updates found" +msgstr "Nema pronađenih nadopuna" + +#: lutris/gui/application.py:665 +msgid "No DLC found" +msgstr "Nema pronađenog DLC-a" #: lutris/gui/config/add_game.py:11 msgid "Add a new game" @@ -508,8 +670,7 @@ msgstr "" msgid "%s (default)" msgstr "%s (zadano)" -#: lutris/gui/config/boxes.py:391 lutris/gui/installer/file_box.py:145 -#: lutris/gui/widgets/common.py:45 +#: lutris/gui/config/boxes.py:391 lutris/gui/widgets/common.py:45 msgid "Select file" msgstr "Odaberi datoteku" @@ -529,18 +690,18 @@ msgstr "Datoteke" msgid "Select files" msgstr "Odaberi datoteke" -#: lutris/gui/config/boxes.py:512 lutris/gui/dialogs/__init__.py:129 -#: lutris/gui/dialogs/__init__.py:155 lutris/gui/dialogs/issue.py:74 -#: lutris/gui/widgets/common.py:99 +#: lutris/gui/config/boxes.py:511 +msgid "_Add" +msgstr "_Dodaj" + +#: lutris/gui/config/boxes.py:512 lutris/gui/dialogs/__init__.py:134 +#: lutris/gui/dialogs/__init__.py:161 lutris/gui/dialogs/issue.py:75 +#: lutris/gui/widgets/common.py:98 #: lutris/gui/widgets/download_progress_box.py:47 msgid "_Cancel" msgstr "_Odustani" -#: lutris/gui/config/boxes.py:514 -msgid "_Add" -msgstr "_Dodaj" - -#: lutris/gui/config/boxes.py:644 +#: lutris/gui/config/boxes.py:640 msgid "" "If modified, these options supersede the same options from the base runner " "configuration." @@ -548,7 +709,7 @@ msgstr "" "Ako je promijenjeno, te mogućnosti zamjenjuju iste mogućnosti iz podešavanja " "osnovnog pokretača." -#: lutris/gui/config/boxes.py:665 +#: lutris/gui/config/boxes.py:661 msgid "" "If modified, these options supersede the same options from the base runner " "configuration, which themselves supersede the global preferences." @@ -556,7 +717,7 @@ msgstr "" "Ako je promijenjeno, te mogućnosti zamjenjuju iste mogućnosti iz podešavanja " "osnovnog pokretača, koje zatim zamjenjuju globalne osobitosti." -#: lutris/gui/config/boxes.py:671 +#: lutris/gui/config/boxes.py:667 msgid "" "If modified, these options supersede the same options from the global " "preferences." @@ -564,81 +725,84 @@ msgstr "" "Ako je promijenjeno, te mogućnosti zamjenjuju iste mogućnosti iz globalnih " "osobitosti." -#: lutris/gui/config/common.py:27 +#: lutris/gui/config/common.py:28 msgid "Select a runner in the Game Info tab" msgstr "Odaberi pokretača iz kartice informacije igre" -#: lutris/gui/config/common.py:93 +#: lutris/gui/config/common.py:109 msgid "Game info" msgstr "Informacije igre" -#: lutris/gui/config/common.py:108 +#: lutris/gui/config/common.py:124 msgid "Identifier" msgstr "Identifikator" -#: lutris/gui/config/common.py:117 lutris/gui/config/common.py:243 +#: lutris/gui/config/common.py:133 lutris/gui/config/common.py:259 msgid "Change" msgstr "Promijeni" -#: lutris/gui/config/common.py:126 +#: lutris/gui/config/common.py:142 msgid "Directory" msgstr "Direktorij" -#: lutris/gui/config/common.py:132 +#: lutris/gui/config/common.py:148 msgid "Move" msgstr "Premjesti" -#: lutris/gui/config/common.py:140 lutris/gui/views/list.py:46 +#: lutris/gui/config/common.py:156 lutris/gui/views/list.py:47 msgid "Runner" msgstr "Pokretač" -#: lutris/gui/config/common.py:161 +#: lutris/gui/config/common.py:177 msgid "Remove custom banner" msgstr "Ukloni prilagođeni transparent" -#: lutris/gui/config/common.py:172 +#: lutris/gui/config/common.py:188 msgid "Remove custom icon" msgstr "Ukloni prilagođenu ikonu" -#: lutris/gui/config/common.py:181 +#: lutris/gui/config/common.py:197 msgid "Release year" msgstr "Godina izdanja" -#: lutris/gui/config/common.py:224 +#: lutris/gui/config/common.py:240 msgid "Select a runner from the list" msgstr "Odaberi pokretača s popisa" -#: lutris/gui/config/common.py:232 +#: lutris/gui/config/common.py:248 msgid "Apply" msgstr "Primjeni" -#: lutris/gui/config/common.py:279 +#: lutris/gui/config/common.py:296 msgid "Game options" msgstr "Mogućnosti igre" -#: lutris/gui/config/common.py:287 +#: lutris/gui/config/common.py:304 msgid "Runner options" msgstr "Mogućnosti pokretača" -#: lutris/gui/config/common.py:295 +#: lutris/gui/config/common.py:312 msgid "System options" msgstr "Mogućnosti sustava" -#: lutris/gui/config/common.py:305 +#. Advanced settings checkbox +#: lutris/gui/config/common.py:322 msgid "Show advanced options" msgstr "Prikaži napredne mogućnosti" -#: lutris/gui/config/common.py:313 lutris/gui/dialogs/uninstall_game.py:60 +#: lutris/gui/config/common.py:330 lutris/gui/dialogs/__init__.py:268 +#: lutris/gui/dialogs/runner_install.py:186 +#: lutris/gui/dialogs/uninstall_game.py:60 #: lutris/gui/dialogs/uninstall_game.py:135 #: lutris/gui/widgets/download_progress_box.py:95 msgid "Cancel" msgstr "Odustani" -#: lutris/gui/config/common.py:317 +#: lutris/gui/config/common.py:334 msgid "Save" msgstr "Spremi" -#: lutris/gui/config/common.py:350 +#: lutris/gui/config/common.py:368 msgid "" "Are you sure you want to change the runner for this game ? This will reset " "the full configuration for this game and is not reversible." @@ -646,35 +810,35 @@ msgstr "" "Sigurno želite promijeniti pokretača za ovu igru? To će poništiti potpuno " "podešavanje za ovu igru i ne može se vratiti natrag." -#: lutris/gui/config/common.py:354 +#: lutris/gui/config/common.py:372 msgid "Confirm runner change" msgstr "Potvrdi promjenu pokretača" -#: lutris/gui/config/common.py:402 +#: lutris/gui/config/common.py:420 msgid "Runner not provided" msgstr "Pokretač nije naveden" -#: lutris/gui/config/common.py:405 +#: lutris/gui/config/common.py:423 msgid "Please fill in the name" msgstr "Navedite naziv" -#: lutris/gui/config/common.py:408 -msgid "Steam AppId not provided" +#: lutris/gui/config/common.py:426 +msgid "Steam AppID not provided" msgstr "Steam AppId nije naveden" -#: lutris/gui/config/common.py:426 +#: lutris/gui/config/common.py:444 msgid "The following fields have invalid values: " msgstr "Sljedeća polja imaju nevaljane vrijednosti: " -#: lutris/gui/config/common.py:433 +#: lutris/gui/config/common.py:451 msgid "Current configuration is not valid, ignoring save request" msgstr "Trenutno podešavanje nije valjano, zanemarivanje zahtjeva spremanja" -#: lutris/gui/config/common.py:468 +#: lutris/gui/config/common.py:486 msgid "Please choose a custom image" msgstr "Odaberite prilagođenu sliku" -#: lutris/gui/config/common.py:480 +#: lutris/gui/config/common.py:494 msgid "Images" msgstr "Slike" @@ -711,13 +875,13 @@ msgstr "WineGame postavke" msgid "Interface" msgstr "Sučelje" -#: lutris/gui/config/preferences_dialog.py:27 lutris/gui/widgets/sidebar.py:260 +#: lutris/gui/config/preferences_dialog.py:27 lutris/gui/widgets/sidebar.py:271 msgid "Runners" msgstr "Pokretači" -#: lutris/gui/config/preferences_dialog.py:28 -msgid "Services" -msgstr "Usluge" +#: lutris/gui/config/preferences_dialog.py:28 lutris/gui/widgets/sidebar.py:270 +msgid "Sources" +msgstr "Izvori" #: lutris/gui/config/preferences_dialog.py:29 msgid "Hardware information" @@ -727,17 +891,17 @@ msgstr "Informacije hardvera" msgid "Global options" msgstr "Globalne mogućnosti" -#: lutris/gui/config/runner_box.py:88 lutris/gui/widgets/sidebar.py:203 +#: lutris/gui/config/runner_box.py:90 lutris/gui/widgets/sidebar.py:214 #, python-format msgid "Manage %s versions" msgstr "Upravljanje %s inačicom" -#: lutris/gui/config/runner_box.py:117 +#: lutris/gui/config/runner_box.py:121 #, python-format msgid "Do you want to uninstall %s?" msgstr "Sigurno želite ukloniti %s?" -#: lutris/gui/config/runner_box.py:118 +#: lutris/gui/config/runner_box.py:122 #, python-format msgid "This will remove %s and all associated data." msgstr "Ovo će ukloniti %s i sve povezane podatke." @@ -815,54 +979,59 @@ msgstr "Preuzimanje datoteke" msgid "Downloading %s" msgstr "Preuzimam %s" -#: lutris/gui/dialogs/__init__.py:129 lutris/gui/dialogs/__init__.py:155 -#: lutris/gui/dialogs/issue.py:74 lutris/gui/dialogs/runner_install.py:33 -#: lutris/gui/widgets/common.py:99 +#: lutris/gui/dialogs/__init__.py:133 lutris/gui/dialogs/__init__.py:160 +#: lutris/gui/dialogs/issue.py:74 lutris/gui/dialogs/runner_install.py:63 +#: lutris/gui/widgets/common.py:98 msgid "_OK" msgstr "_U redu" -#: lutris/gui/dialogs/__init__.py:146 +#: lutris/gui/dialogs/__init__.py:151 msgid "Please choose a file" msgstr "Odaberite datoteku" -#: lutris/gui/dialogs/__init__.py:175 +#: lutris/gui/dialogs/__init__.py:181 msgid "Checking for runtime updates, please wait…" msgstr "Provjera nadopuna tijeka izvođenja, pričekajte…" -#: lutris/gui/dialogs/__init__.py:201 +#: lutris/gui/dialogs/__init__.py:212 #, python-format msgid "%s is already installed" msgstr "%s je već instalirana" -#: lutris/gui/dialogs/__init__.py:212 +#: lutris/gui/dialogs/__init__.py:221 msgid "Launch game" msgstr "Pokreni igru" -#: lutris/gui/dialogs/__init__.py:216 +#: lutris/gui/dialogs/__init__.py:225 msgid "Install the game again" msgstr "Ponovno instaliraj igru" -#: lutris/gui/dialogs/__init__.py:220 lutris/gui/dialogs/__init__.py:305 +#: lutris/gui/dialogs/__init__.py:229 lutris/gui/dialogs/__init__.py:272 +#: lutris/gui/dialogs/__init__.py:360 msgid "OK" msgstr "U redu" -#: lutris/gui/dialogs/__init__.py:278 +#: lutris/gui/dialogs/__init__.py:248 +msgid "Select game to launch" +msgstr "Odaberite igru za pokretanje" + +#: lutris/gui/dialogs/__init__.py:333 msgid "Login failed" msgstr "Neuspjela prijava" -#: lutris/gui/dialogs/__init__.py:289 +#: lutris/gui/dialogs/__init__.py:344 msgid "Install script for {}" msgstr "Instaliraj skriptu za {}" -#: lutris/gui/dialogs/__init__.py:341 +#: lutris/gui/dialogs/__init__.py:396 msgid "Do not display this message again." msgstr "Ne prikazuj ponovno ovu poruku." -#: lutris/gui/dialogs/__init__.py:362 +#: lutris/gui/dialogs/__init__.py:417 msgid "Wine is not installed on your system." msgstr "Wine nije instaliran na vašem sustavu." -#: lutris/gui/dialogs/__init__.py:364 +#: lutris/gui/dialogs/__init__.py:419 msgid "" "Having Wine installed on your system guarantees that Wine builds from Lutris " "will have all required dependencies.\n" @@ -876,7 +1045,7 @@ msgstr "" "Slijedite zadane upute na Lutris Wiki kako bi instalirali Wine." -#: lutris/gui/dialogs/__init__.py:390 +#: lutris/gui/dialogs/__init__.py:445 #, python-format msgid "Moving %s to %s..." msgstr "Premještam %s u %s..." @@ -903,59 +1072,74 @@ msgstr "_Spremi" msgid "Select a location to save the issue" msgstr "Odaberite lokaciju spremanja informacija problema" -#: lutris/gui/dialogs/issue.py:90 +#: lutris/gui/dialogs/issue.py:91 #, python-format msgid "Issue saved in %s" msgstr "Informacije problema su spremljene u %s" -#: lutris/gui/dialogs/runner_install.py:41 +#: lutris/gui/dialogs/runner_install.py:29 +#, python-format +msgid "Showing games using %s" +msgstr "Prikazuju se igre koristeći %s" + +#: lutris/gui/dialogs/runner_install.py:71 #, python-format msgid "Waiting for response from %s" msgstr "Čekanje odgovora s %s" -#: lutris/gui/dialogs/runner_install.py:57 +#: lutris/gui/dialogs/runner_install.py:87 #, python-format msgid "Unable to get runner versions: %s" msgstr "Nemoguće dobivanje inačice pokretača: %s" -#: lutris/gui/dialogs/runner_install.py:71 +#: lutris/gui/dialogs/runner_install.py:101 msgid "Unable to get runner versions from winegame.net" msgstr "Nemoguće dobivanje inačice pokretača s winegame.net" -#: lutris/gui/dialogs/runner_install.py:80 +#: lutris/gui/dialogs/runner_install.py:108 #, python-format msgid "%s version management" msgstr "%s inačica upravljanja" -#: lutris/gui/dialogs/runner_install.py:139 +#: lutris/gui/dialogs/runner_install.py:158 #, python-format -msgid "In use by %d game" -msgid_plural "In use by %d games" -msgstr[0] "Koristi %d igra" -msgstr[1] "Koriste %d igre" -msgstr[2] "Koristi %d igra" +msgid "_View %d game" +msgid_plural "_View %d games" +msgstr[0] "_Pogledaj %d igru" +msgstr[1] "_Pogledaj %d igre" +msgstr[2] "_Pogledaj %d igra" + +#: lutris/gui/dialogs/runner_install.py:190 +#: lutris/gui/dialogs/uninstall_game.py:34 +msgid "Uninstall" +msgstr "Deinstaliraj" -#: lutris/gui/dialogs/runner_install.py:141 -msgid "Not in use" -msgstr "Ne koristi se" +#: lutris/gui/dialogs/runner_install.py:214 +msgid "Wine version usage" +msgstr "Wine inačica koja se koristi" -#: lutris/gui/dialogs/runner_install.py:173 +#: lutris/gui/dialogs/runner_install.py:256 msgid "Do you want to cancel the download?" msgstr "Želite li prekinuti preuzimanje?" -#: lutris/gui/dialogs/runner_install.py:174 +#: lutris/gui/dialogs/runner_install.py:257 msgid "Download starting" msgstr "Preuzimanje započinje" -#: lutris/gui/dialogs/runner_install.py:231 +#: lutris/gui/dialogs/runner_install.py:307 +#, python-format +msgid "Version %s is not longer available" +msgstr "Inačica %s više nije dostupna" + +#: lutris/gui/dialogs/runner_install.py:332 msgid "Downloading…" msgstr "Preuzimanje…" -#: lutris/gui/dialogs/runner_install.py:234 +#: lutris/gui/dialogs/runner_install.py:335 msgid "Extracting…" msgstr "Raspakiravanje…" -#: lutris/gui/dialogs/runner_install.py:269 +#: lutris/gui/dialogs/runner_install.py:377 msgid "Failed to retrieve the runner archive" msgstr "Neuspjelo preuzimanje arhive pokretača" @@ -964,10 +1148,6 @@ msgstr "Neuspjelo preuzimanje arhive pokretača" msgid "Uninstall %s" msgstr "Deinstaliraj %s" -#: lutris/gui/dialogs/uninstall_game.py:34 -msgid "Uninstall" -msgstr "Deinstaliraj" - #: lutris/gui/dialogs/uninstall_game.py:38 msgid "No file will be deleted" msgstr "Nijedna datoteka neće biti obrisana" @@ -1028,166 +1208,173 @@ msgstr "" "Potpuno ukloni %s iz igroteke?\n" "Sva vremena igranja će biti uklonjena." -#: lutris/gui/dialogs/webconnect_dialog.py:88 +#: lutris/gui/dialogs/webconnect_dialog.py:106 msgid "Loading..." msgstr "Učitavanje..." -#: lutris/gui/installer/file_box.py:96 +#: lutris/gui/installer/file_box.py:95 #, python-brace-format msgid "Steam game {appid}" msgstr "Steam igra {appid}" -#: lutris/gui/installer/file_box.py:111 +#: lutris/gui/installer/file_box.py:110 #, python-brace-format msgid "{file} on {host}" msgstr "{file} na {host}" -#: lutris/gui/installer/file_box.py:138 lutris/gui/installer/file_box.py:182 +#: lutris/gui/installer/file_box.py:121 msgid "Download" msgstr "Preuzmi" -#: lutris/gui/installer/file_box.py:142 -msgid "Use cache" +#: lutris/gui/installer/file_box.py:123 +msgid "Use Cache" msgstr "Koristi predmemoriju" -#: lutris/gui/installer/file_box.py:183 lutris/gui/installerwindow.py:62 -msgid "Cache" -msgstr "Predmemorija" - -#: lutris/gui/installer/file_box.py:184 lutris/services/xdg.py:40 -msgid "Local" -msgstr "Lokalno" - -#: lutris/gui/installer/file_box.py:185 lutris/runners/steam.py:42 +#: lutris/gui/installer/file_box.py:125 lutris/runners/steam.py:29 #: lutris/services/steam.py:73 msgid "Steam" msgstr "Steam" -#: lutris/gui/installer/file_box.py:207 +#: lutris/gui/installer/file_box.py:126 +msgid "Select File" +msgstr "Odaberi datoteku" + +#: lutris/gui/installer/file_box.py:187 msgid "Cache file for future installations" msgstr "Datoteka predmemorije za buduće instalacije" -#: lutris/gui/installer/file_box.py:226 +#: lutris/gui/installer/file_box.py:206 msgid "Source:" msgstr "Izvor:" -#: lutris/gui/installerwindow.py:73 +#: lutris/gui/installerwindow.py:65 +msgid "Cache" +msgstr "Predmemorija" + +#: lutris/gui/installerwindow.py:76 msgid "Abort and revert the installation" msgstr "Prekini i vrati instalaciju" -#: lutris/gui/installerwindow.py:75 +#: lutris/gui/installerwindow.py:78 msgid "_Eject" msgstr "_Izbaci" -#: lutris/gui/installerwindow.py:76 +#: lutris/gui/installerwindow.py:79 msgid "_View source" msgstr "_Pogledaj izvor" -#: lutris/gui/installerwindow.py:77 +#: lutris/gui/installerwindow.py:80 msgid "_Install" msgstr "_Instaliraj" -#: lutris/gui/installerwindow.py:78 +#: lutris/gui/installerwindow.py:81 msgid "_Continue" msgstr "_Nastavi" -#: lutris/gui/installerwindow.py:79 +#: lutris/gui/installerwindow.py:82 msgid "_Launch" msgstr "_Pokreni" -#: lutris/gui/installerwindow.py:80 +#: lutris/gui/installerwindow.py:83 msgid "_Close" msgstr "_Zatvori" -#: lutris/gui/installerwindow.py:117 +#: lutris/gui/installerwindow.py:122 #, python-format msgid "Missing field \"%s\" in install script" msgstr "Polje \"%s\" nedostaje u instalacijskoj skripti" -#: lutris/gui/installerwindow.py:123 +#: lutris/gui/installerwindow.py:128 #, python-format msgid "Install %s" msgstr "Instaliraj %s" -#: lutris/gui/installerwindow.py:163 +#: lutris/gui/installerwindow.py:162 #, python-format msgid "This game requires %s. Do you want to install it?" msgstr "Ova igra zahtijeva %s. Želite li ju instalirati?" -#: lutris/gui/installerwindow.py:164 +#: lutris/gui/installerwindow.py:163 msgid "Missing dependency" msgstr "Nedostajuće zavisnosti" -#: lutris/gui/installerwindow.py:176 +#: lutris/gui/installerwindow.py:175 msgid "Installing {}" msgstr "Instaliram {}" -#: lutris/gui/installerwindow.py:184 +#: lutris/gui/installerwindow.py:196 msgid "Select installation directory" msgstr "Odaberite instalacijski direktorij" -#: lutris/gui/installerwindow.py:234 +#: lutris/gui/installerwindow.py:246 msgid "Autodetect" msgstr "Automatski otkrij" -#: lutris/gui/installerwindow.py:240 +#: lutris/gui/installerwindow.py:252 msgid "Browse…" msgstr "Pregledaj…" -#: lutris/gui/installerwindow.py:247 +#: lutris/gui/installerwindow.py:259 msgid "Select the folder where the disc is mounted" msgstr "Odaberite mapu gdje je disk montiran" -#: lutris/gui/installerwindow.py:307 +#: lutris/gui/installerwindow.py:320 msgid "" "Please review the files needed for the installation then click 'Continue'" msgstr "Pregledajte datoteke potrebne za instalaciju zatim kliknite 'Nastavi'" -#: lutris/gui/installerwindow.py:410 +#: lutris/gui/installerwindow.py:358 +msgid "" +"This game has extra content. \n" +"Select which one you want and they will be available in the 'extras' folder " +"where the game is installed." +msgstr "" +"Ova igra ima dodatan sadržaj. \n" +"Odaberite željeni sadržaj i biti će dostupan u 'extras' mapi gdje je igra " +"instalirana." + +#: lutris/gui/installerwindow.py:459 #, python-format msgid "Unable to get files: %s" msgstr "Nemoguće dobivanje datoteka: %s" -#: lutris/gui/installerwindow.py:493 +#: lutris/gui/installerwindow.py:554 msgid "Remove game files" msgstr "Ukloni datoteke igre" -#: lutris/gui/installerwindow.py:499 +#: lutris/gui/installerwindow.py:560 msgid "Are you sure you want to cancel the installation?" msgstr "Sigurno želite prekinuti instalaciju?" -#: lutris/gui/installerwindow.py:500 +#: lutris/gui/installerwindow.py:561 msgid "Cancel installation?" msgstr "Prekini instalaciju?" -#: lutris/gui/lutriswindow.py:377 +#: lutris/gui/lutriswindow.py:345 #, python-format msgid "Connect your %s account to access your games" msgstr "Povežite se sa svojim %s računom za pristup vašim igrama" -#: lutris/gui/lutriswindow.py:444 +#: lutris/gui/lutriswindow.py:416 #, python-format msgid "No games matching '%s' found " msgstr "Nema podudarajućih igra '%s' pronađenih " -#: lutris/gui/lutriswindow.py:446 -msgid "Use search to find games on winegame.net" -msgstr "Koristite pretragu za pronalazak igra na winegame.net" - -#: lutris/gui/lutriswindow.py:449 +#: lutris/gui/lutriswindow.py:419 msgid "Add games to your favorites to see them here." msgstr "Dodajte igre u svoje omiljene kako bi ih tamo vidjeli." -#: lutris/gui/lutriswindow.py:451 +#: lutris/gui/lutriswindow.py:421 msgid "No installed games found. Press Ctrl+H to show all games." msgstr "" "Nema pronađenih instaliranih igra. Pritisnite Ctrl+H za prikaz svih igra." -#: lutris/gui/lutriswindow.py:453 +#: lutris/gui/lutriswindow.py:430 msgid "No games found" msgstr "Nema pronađenih igara" -#: lutris/gui/views/list.py:47 lutris/runners/dolphin.py:25 +#: lutris/gui/views/list.py:48 lutris/runners/dolphin.py:26 +#: lutris/runners/scummvm.py:178 msgid "Platform" msgstr "Platforma" @@ -1240,7 +1427,7 @@ msgstr "Preuzimanje je prekinuto" msgid "{downloaded:0.2f} / {size:0.2f}MB ({speed:0.2f}MB/s), {time} remaining" msgstr "{downloaded:0.2f} / {size:0.2f}MB ({speed:0.2f}MB/s), {time} preostalo" -#: lutris/gui/widgets/game_bar.py:140 +#: lutris/gui/widgets/game_bar.py:150 #, python-format msgid "" "Platform:\n" @@ -1249,7 +1436,7 @@ msgstr "" "Platforma:\n" "%s" -#: lutris/gui/widgets/game_bar.py:147 +#: lutris/gui/widgets/game_bar.py:159 #, python-format msgid "" "Time played:\n" @@ -1258,7 +1445,7 @@ msgstr "" "Vrijeme igranja:\n" "%s" -#: lutris/gui/widgets/game_bar.py:154 +#: lutris/gui/widgets/game_bar.py:168 #, python-format msgid "" "Last played:\n" @@ -1267,55 +1454,51 @@ msgstr "" "Posljednje igranje:\n" "%s" -#: lutris/gui/widgets/game_bar.py:190 +#: lutris/gui/widgets/game_bar.py:204 msgid "Launching" msgstr "Pokretanje" -#: lutris/gui/widgets/sidebar.py:127 lutris/gui/widgets/sidebar.py:155 +#: lutris/gui/widgets/sidebar.py:128 lutris/gui/widgets/sidebar.py:161 msgid "Reload" msgstr "Učitaj ponovno" -#: lutris/gui/widgets/sidebar.py:156 +#: lutris/gui/widgets/sidebar.py:160 lutris/gui/widgets/sidebar.py:204 +msgid "Run" +msgstr "Pokreni" + +#: lutris/gui/widgets/sidebar.py:162 msgid "Disconnect" msgstr "Prekini povezivanje" -#: lutris/gui/widgets/sidebar.py:157 +#: lutris/gui/widgets/sidebar.py:163 msgid "Connect" msgstr "Poveži" -#: lutris/gui/widgets/sidebar.py:188 +#: lutris/gui/widgets/sidebar.py:199 msgid "Manage Versions" msgstr "Upravljanje inačicma" -#: lutris/gui/widgets/sidebar.py:193 -msgid "Run" -msgstr "Pokreni" - -#: lutris/gui/widgets/sidebar.py:258 +#: lutris/gui/widgets/sidebar.py:269 msgid "Library" msgstr "Igroteka" -#: lutris/gui/widgets/sidebar.py:259 -msgid "Sources" -msgstr "Izvori" - -#: lutris/gui/widgets/sidebar.py:261 +#: lutris/gui/widgets/sidebar.py:272 msgid "Platforms" msgstr "Platforme" -#: lutris/gui/widgets/sidebar.py:296 +#: lutris/gui/widgets/sidebar.py:316 lutris/util/system.py:27 msgid "Games" msgstr "Igre" -#: lutris/gui/widgets/sidebar.py:305 +#: lutris/gui/widgets/sidebar.py:325 msgid "Recent" msgstr "Nedavno" -#: lutris/gui/widgets/sidebar.py:314 +#: lutris/gui/widgets/sidebar.py:334 msgid "Favorites" msgstr "Omiljeno" -#: lutris/gui/widgets/sidebar.py:322 +#: lutris/gui/widgets/sidebar.py:342 msgid "Running" msgstr "Pokrenuto" @@ -1327,27 +1510,27 @@ msgstr "Prikaži WineGame" msgid "Quit" msgstr "Zatvori" -#: lutris/installer/commands.py:55 +#: lutris/installer/commands.py:66 #, python-brace-format msgid "One of {params} parameter is mandatory for the {cmd} command" msgstr "Jedan od {params} parametara je obavezan za {cmd} naredbu" -#: lutris/installer/commands.py:56 lutris/installer/interpreter.py:115 -#: lutris/installer/interpreter.py:138 +#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:123 +#: lutris/installer/interpreter.py:146 msgid " or " msgstr " ili " -#: lutris/installer/commands.py:62 +#: lutris/installer/commands.py:73 #, python-brace-format msgid "The {param} parameter is mandatory for the {cmd} command" msgstr "{param} parametar je obavezan za {cmd} naredbu" -#: lutris/installer/commands.py:79 +#: lutris/installer/commands.py:90 #, python-format msgid "Invalid file '%s'. Can't make it executable" msgstr "Nevaljana datoteka '%s'. Ne može biti izvršna datoteka" -#: lutris/installer/commands.py:92 +#: lutris/installer/commands.py:103 msgid "" "Parameters file and command can't be used at the same time for the execute " "command" @@ -1355,26 +1538,26 @@ msgstr "" "Datoteka parametara i naredba ne mogu se koristiti istovremeno za pokretanje " "naredbe" -#: lutris/installer/commands.py:120 +#: lutris/installer/commands.py:138 msgid "No parameters supplied to execute command." msgstr "Nema navedenih parametra za pokretanje naredbe." -#: lutris/installer/commands.py:134 +#: lutris/installer/commands.py:152 #, python-format msgid "Unable to find executable %s" msgstr "Nemoguć pronalazak izvršne datoteke %s" -#: lutris/installer/commands.py:164 +#: lutris/installer/commands.py:186 #, python-format msgid "%s does not exist" msgstr "%s ne postoji" -#: lutris/installer/commands.py:170 +#: lutris/installer/commands.py:192 #, python-format msgid "Extracting %s" msgstr "Raspakiravanje %s" -#: lutris/installer/commands.py:212 +#: lutris/installer/commands.py:234 msgid "" "Insert or mount game disc and click Autodetect or\n" "use Browse if the disc is mounted on a non standard location." @@ -1382,7 +1565,7 @@ msgstr "" "Umetnite ili montirajte disk igre i kliknite Automatski otkrij ili\n" "koristite Pregledaj ako je disk montiran na nestandardnoj lokaciji." -#: lutris/installer/commands.py:216 +#: lutris/installer/commands.py:238 #, python-format msgid "" "\n" @@ -1397,17 +1580,17 @@ msgstr "" "koji sadrže sljedeću datoteku ili mapu:\n" "%s" -#: lutris/installer/commands.py:258 +#: lutris/installer/commands.py:280 #, python-format msgid "Source does not exist: %s" msgstr "Izvor ne postoji: %s" -#: lutris/installer/commands.py:284 +#: lutris/installer/commands.py:306 #, python-format msgid "Invalid source for 'move' operation: %s" msgstr "Nevaljani izvor za 'move' radnju: %s" -#: lutris/installer/commands.py:303 +#: lutris/installer/commands.py:325 #, python-brace-format msgid "" "Can't move {src} \n" @@ -1416,34 +1599,34 @@ msgstr "" "Nemoguće je premjestiti {src} \n" "u odredište {dst}" -#: lutris/installer/commands.py:310 +#: lutris/installer/commands.py:332 #, python-format msgid "Rename error, source path does not exist: %s" msgstr "Greška preimenovanja, putanja izvora ne postoji: %s" -#: lutris/installer/commands.py:317 +#: lutris/installer/commands.py:339 #, python-format msgid "Rename error, destination already exists: %s" msgstr "Greška preimenovanja, putanja izvora več postoji: %s" -#: lutris/installer/commands.py:333 +#: lutris/installer/commands.py:355 msgid "Missing parameter src" msgstr "Parametar src nedostaje" -#: lutris/installer/commands.py:336 +#: lutris/installer/commands.py:358 msgid "Wrong value for 'src' param" msgstr "Nevaljana vrijednost za 'src' parametar" -#: lutris/installer/commands.py:340 +#: lutris/installer/commands.py:362 msgid "Wrong value for 'dst' param" msgstr "Nevaljana vrijednost za 'dst' parametar" -#: lutris/installer/commands.py:422 +#: lutris/installer/commands.py:451 #, python-format msgid "Command exited with code %s" msgstr "Naredba je završila s kôdom %s" -#: lutris/installer/commands.py:440 +#: lutris/installer/commands.py:469 #, python-format msgid "Wrong value for write_file mode: '%s'" msgstr "Nevaljana vrijednost write_file način: '%s'" @@ -1458,31 +1641,27 @@ msgstr "nedostaje polje `url` za datoteku `%s`" msgid "missing field `filename` in file `%s`" msgstr "nedostaje polje `filename` u datoteci `%s`" -#: lutris/installer/installer_file.py:47 -msgid "Usage of $WINESTEAM location is deprecated" -msgstr "Korištenje $WINESTEAM lokacije je zastarjelo" - -#: lutris/installer/installer_file.py:178 +#: lutris/installer/installer_file.py:176 msgid "Invalid checksum, expected format (type:hash) " msgstr "Nevaljani kontrolni zbroj, očekivani format je (type:hash) " -#: lutris/installer/installer_file.py:181 +#: lutris/installer/installer_file.py:179 msgid " checksum mismatch " msgstr " kontrolni zbroj se ne podudara " -#: lutris/installer/installer.py:162 +#: lutris/installer/installer.py:179 msgid "Game config key must be a string" msgstr "Ključ podešavanja igre mora biti izraz" -#: lutris/installer/installer.py:207 +#: lutris/installer/installer.py:228 msgid "Invalid 'game' section" msgstr "Nevaljani 'game' odjeljak" -#: lutris/installer/interpreter.py:52 +#: lutris/installer/interpreter.py:53 msgid "This installer doesn't have a 'script' section" msgstr "Instalacijski program nema 'script' odjeljak" -#: lutris/installer/interpreter.py:56 +#: lutris/installer/interpreter.py:57 msgid "" "Invalid script: \n" "{}" @@ -1490,34 +1669,38 @@ msgstr "" "Nevaljana skripta: \n" "{}" -#: lutris/installer/interpreter.py:115 lutris/installer/interpreter.py:118 +#: lutris/installer/interpreter.py:123 lutris/installer/interpreter.py:126 #, python-format msgid "This installer requires %s on your system" msgstr "Instalacijski program zahtijeva %s na vašem sustavu" -#: lutris/installer/interpreter.py:178 +#: lutris/installer/interpreter.py:139 +msgid "You need to install {} before" +msgstr "Morate prije instalirati {}" + +#: lutris/installer/interpreter.py:187 msgid "Lutris does not have the necessary permissions to install to path:" msgstr "Lutris nema potrebne dozvole za instalaciju u putanju:" -#: lutris/installer/interpreter.py:262 +#: lutris/installer/interpreter.py:271 #, python-format msgid "Invalid runner provided %s" msgstr "Nevaljani pokretač naveden %s" -#: lutris/installer/interpreter.py:282 +#: lutris/installer/interpreter.py:297 msgid "Installing game data" msgstr "Instalacija podataka igre" -#: lutris/installer/interpreter.py:293 +#: lutris/installer/interpreter.py:309 msgid "Installer commands are not formatted correctly" msgstr "Naredbe instalacijskog programa nisu oblikovane pravilno" -#: lutris/installer/interpreter.py:324 +#: lutris/installer/interpreter.py:342 #, python-format msgid "The command \"%s\" does not exist." msgstr "Naredba \"%s\" ne postoji." -#: lutris/installer/interpreter.py:341 +#: lutris/installer/interpreter.py:363 #, python-format msgid "" "The executable at path %s can't be found, please check the destination " @@ -1528,7 +1711,7 @@ msgstr "" "mapu.\n" "Pojedini dijelovi instalacijskog procesa možda nisu završeni uspješno." -#: lutris/installer/interpreter.py:347 +#: lutris/installer/interpreter.py:369 msgid "Installation completed!" msgstr "Instalacija završena!" @@ -1554,7 +1737,7 @@ msgid "Atari 400, 800 and XL emulator" msgstr "Atari 400, 800 i XL emulator" #: lutris/runners/atari800.py:41 lutris/runners/jzintv.py:19 -#: lutris/runners/libretro.py:73 lutris/runners/mame.py:78 +#: lutris/runners/libretro.py:74 lutris/runners/mame.py:78 #: lutris/runners/mednafen.py:57 lutris/runners/mupen64plus.py:20 #: lutris/runners/o2em.py:45 lutris/runners/openmsx.py:17 #: lutris/runners/osmose.py:21 lutris/runners/snes9x.py:27 @@ -1609,12 +1792,12 @@ msgstr "Stroj" #: lutris/runners/atari800.py:85 lutris/runners/easyrpg.py:144 #: lutris/runners/hatari.py:72 lutris/runners/jzintv.py:43 -#: lutris/runners/libretro.py:93 lutris/runners/mame.py:157 +#: lutris/runners/libretro.py:94 lutris/runners/mame.py:157 #: lutris/runners/mednafen.py:74 lutris/runners/mupen64plus.py:28 #: lutris/runners/o2em.py:75 lutris/runners/osmose.py:34 #: lutris/runners/pcsx2.py:26 lutris/runners/pico8.py:38 #: lutris/runners/redream.py:25 lutris/runners/reicast.py:42 -#: lutris/runners/residualvm.py:39 lutris/runners/scummvm.py:46 +#: lutris/runners/residualvm.py:39 lutris/runners/scummvm.py:76 #: lutris/runners/snes9x.py:36 lutris/runners/vice.py:57 msgid "Fullscreen" msgstr "Cjelozaslonski prikaz" @@ -1635,35 +1818,39 @@ msgstr "Gamecube i Wii emulator" msgid "Dolphin" msgstr "Dolphin" -#: lutris/runners/dolphin.py:12 lutris/runners/dolphin.py:26 +#: lutris/runners/dolphin.py:12 lutris/runners/dolphin.py:27 msgid "Nintendo GameCube" msgstr "Nintendo GameCube" -#: lutris/runners/dolphin.py:12 lutris/runners/dolphin.py:26 +#: lutris/runners/dolphin.py:12 lutris/runners/dolphin.py:27 msgid "Nintendo Wii" msgstr "Nintendo Wii" -#: lutris/runners/dolphin.py:20 lutris/runners/pcsx2.py:18 +#: lutris/runners/dolphin.py:21 lutris/runners/pcsx2.py:18 msgid "ISO file" msgstr "ISO datoteka" -#: lutris/runners/dolphin.py:33 lutris/runners/pcsx2.py:38 +#: lutris/runners/dolphin.py:34 lutris/runners/pcsx2.py:38 #: lutris/runners/rpcs3.py:23 msgid "No GUI" msgstr "Bez grafičkog sučelja" -#: lutris/runners/dolphin.py:35 +#: lutris/runners/dolphin.py:36 msgid "Disable the graphical user interface." msgstr "Onemogućite grafičko korisničko sučelje." -#: lutris/runners/dolphin.py:40 +#: lutris/runners/dolphin.py:41 msgid "Batch" msgstr "Skupne naredbe" -#: lutris/runners/dolphin.py:42 +#: lutris/runners/dolphin.py:44 msgid "Exit Dolphin with emulator." msgstr "Zatvori Dolphin s emulatorom." +#: lutris/runners/dolphin.py:50 +msgid "Custom Global User Directory" +msgstr "Prilagođeni globalni korisnički direktorij" + #: lutris/runners/dosbox.py:13 msgid "DOSBox" msgstr "DOSBox" @@ -1713,12 +1900,12 @@ msgid "Command line arguments used when launching DOSBox" msgstr "Naredbeni redak argumenata korištenih pri pokretanju DOSBoxa" #: lutris/runners/dosbox.py:51 lutris/runners/linux.py:39 -#: lutris/runners/wine.py:60 +#: lutris/runners/wine.py:61 msgid "Working directory" msgstr "Radni direktorij" #: lutris/runners/dosbox.py:53 lutris/runners/linux.py:41 -#: lutris/runners/wine.py:62 +#: lutris/runners/wine.py:63 msgid "" "The location where the game is run from.\n" "By default, Lutris uses the directory of the executable." @@ -1730,11 +1917,11 @@ msgstr "" msgid "none" msgstr "nijedan" -#: lutris/runners/dosbox.py:85 lutris/runners/scummvm.py:64 +#: lutris/runners/dosbox.py:85 lutris/runners/scummvm.py:101 msgid "Graphic scaler" msgstr "Grafička promjena razlučivosti" -#: lutris/runners/dosbox.py:93 lutris/runners/scummvm.py:82 +#: lutris/runners/dosbox.py:93 lutris/runners/scummvm.py:119 msgid "" "The algorithm used to scale up the game's base resolution, resulting in " "different visual styles. " @@ -1768,7 +1955,7 @@ msgstr "Pokreće RPG Maker 2000/2003 igre" #: lutris/runners/easyrpg.py:12 lutris/runners/linux.py:14 #: lutris/runners/linux.py:16 lutris/runners/residualvm.py:15 -#: lutris/runners/scummvm.py:16 lutris/runners/steam.py:43 +#: lutris/runners/scummvm.py:14 lutris/runners/steam.py:30 #: lutris/runners/zdoom.py:15 msgid "Linux" msgstr "Linux" @@ -1803,9 +1990,8 @@ msgid "Disable auto detection of the simulated engine." msgstr "Onemogući automatsko otkrivanje za simuliranog pogone." #: lutris/runners/easyrpg.py:41 lutris/runners/fsuae.py:50 -#: lutris/runners/mame.py:173 lutris/runners/wine.py:81 -#: lutris/runners/wine.py:385 lutris/runners/winesteam.py:85 -#: lutris/sysoptions.py:84 +#: lutris/runners/mame.py:173 lutris/runners/wine.py:82 +#: lutris/runners/wine.py:416 msgid "Auto" msgstr "Automatski" @@ -1991,7 +2177,7 @@ msgstr "" "Isključi za onemogućavanje VSynca i koristi FPS ograničenje. VSync može a i " "ne mora biti podržan na svim platformama." -#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:275 +#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:318 msgid "FPS limit" msgstr "Ograničenje (FPS) sličica u sekundi" @@ -2005,7 +2191,7 @@ msgstr "" "zadano je 60 FPS. Postavite na '0' za onemogućavanje ograničenja sličica. " "Ova mogućnost možda nije podržana na svim platformama." -#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:411 +#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:442 msgid "Show FPS" msgstr "Prikaži (FPS) sličice u sekundi" @@ -2014,7 +2200,7 @@ msgid "Enable frames per second counter." msgstr "Omogući brojač sličica u sekundi." #: lutris/runners/easyrpg.py:209 lutris/runners/mednafen.py:85 -#: lutris/runners/wine.py:408 lutris/sysoptions.py:261 +#: lutris/runners/wine.py:439 msgid "Disabled" msgstr "Onemogućeno" @@ -2518,6 +2704,7 @@ msgid "Keyboard" msgstr "Tipkovnica" #: lutris/runners/hatari.py:52 lutris/runners/o2em.py:39 +#: lutris/runners/scummvm.py:186 msgid "Joystick" msgstr "Igrača palica" @@ -2632,31 +2819,31 @@ msgstr "" msgid "Resolution" msgstr "Razlučivost" -#: lutris/runners/libretro.py:64 +#: lutris/runners/libretro.py:65 msgid "Libretro" msgstr "Libretro" -#: lutris/runners/libretro.py:65 +#: lutris/runners/libretro.py:66 msgid "Multi-system emulator" msgstr "Emulator više sustava" -#: lutris/runners/libretro.py:78 +#: lutris/runners/libretro.py:79 msgid "Core" msgstr "Jezgra" -#: lutris/runners/libretro.py:87 lutris/runners/zdoom.py:87 +#: lutris/runners/libretro.py:88 lutris/runners/zdoom.py:87 msgid "Config file" msgstr "Datoteka podešavanja" -#: lutris/runners/libretro.py:99 +#: lutris/runners/libretro.py:100 msgid "Verbose logging" msgstr "Opširnije zapisisvanje" -#: lutris/runners/libretro.py:265 +#: lutris/runners/libretro.py:271 msgid "No core has been selected for this game" msgstr "Jezgra nije odabrana za ovu igru" -#: lutris/runners/libretro.py:276 +#: lutris/runners/libretro.py:282 msgid "No game file specified" msgstr "Datoteka igre nije navedena" @@ -2664,7 +2851,7 @@ msgstr "Datoteka igre nije navedena" msgid "Runs native games" msgstr "Pokreće izvorne igre" -#: lutris/runners/linux.py:24 lutris/runners/wine.py:47 +#: lutris/runners/linux.py:24 lutris/runners/wine.py:48 msgid "Executable" msgstr "Izvršna datoteka" @@ -2673,15 +2860,14 @@ msgid "The game's main executable file" msgstr "Glavna izvršna datoteka igre" #: lutris/runners/linux.py:30 lutris/runners/mame.py:124 -#: lutris/runners/scummvm.py:39 lutris/runners/steam.py:60 -#: lutris/runners/steam.py:122 lutris/runners/wine.py:53 -#: lutris/runners/winesteam.py:62 lutris/runners/winesteam.py:154 +#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:47 +#: lutris/runners/steam.py:99 lutris/runners/wine.py:54 #: lutris/runners/zdoom.py:27 msgid "Arguments" msgstr "Argumenti" #: lutris/runners/linux.py:31 lutris/runners/mame.py:125 -#: lutris/runners/scummvm.py:40 lutris/runners/winesteam.py:63 +#: lutris/runners/scummvm.py:32 msgid "Command line arguments used when launching the game" msgstr "Argumenti naredbenog retka koji se koriste pri pokretanju igre" @@ -3152,8 +3338,8 @@ msgid "O2EM" msgstr "O2EM" #: lutris/runners/o2em.py:12 -msgid "Magnavox Osyssey² Emulator" -msgstr "Magnavox Osyssey² emulator" +msgid "Magnavox Odyssey² Emulator" +msgstr "Magnavox Odyssey² emulator" #: lutris/runners/o2em.py:14 lutris/runners/o2em.py:30 msgid "Magnavox Odyssey²" @@ -3171,7 +3357,7 @@ msgstr "Phillips Videopac+" msgid "Brandt Jopac" msgstr "Brandt Jopac" -#: lutris/runners/o2em.py:36 lutris/runners/wine.py:366 +#: lutris/runners/o2em.py:36 lutris/runners/wine.py:397 msgid "Disable" msgstr "Onemogući" @@ -3468,19 +3654,20 @@ msgstr "Morate kopirati valjane BIOS datoteke u ~/.reicast/data prije igranja" msgid "ResidualVM" msgstr "ResidualVM" +#. TODO #: lutris/runners/residualvm.py:16 msgid "3D point-and-click adventure games engine" msgstr "3D točka-i-klik pogon avanturističkih igra" -#: lutris/runners/residualvm.py:22 lutris/runners/scummvm.py:23 +#: lutris/runners/residualvm.py:22 lutris/runners/scummvm.py:21 msgid "Game identifier" msgstr "Identifikator igre" -#: lutris/runners/residualvm.py:27 lutris/runners/scummvm.py:28 +#: lutris/runners/residualvm.py:27 lutris/runners/scummvm.py:26 msgid "Game files location" msgstr "Lokacija datoteke igre" -#: lutris/runners/residualvm.py:31 lutris/runners/scummvm.py:32 +#: lutris/runners/residualvm.py:31 msgid "Enable subtitles (if the game has voice)" msgstr "Omogući podnsalove (ako igra ima glas)" @@ -3512,11 +3699,11 @@ msgstr "Sony PlayStation 3" msgid "Path to EBOOT.BIN" msgstr "Putanja do EBOOT.BIN" -#: lutris/runners/runner.py:129 +#: lutris/runners/runner.py:148 msgid "Custom executable for the runner" msgstr "Prilagođena izvršna datoteka za pokretač" -#: lutris/runners/runner.py:269 +#: lutris/runners/runner.py:293 msgid "" "The required runner is not installed.\n" "Do you wish to install it now?" @@ -3524,7 +3711,7 @@ msgstr "" "Potreban pokretač nije instaliran.\n" "Želite li ga odmah instalirati?" -#: lutris/runners/runner.py:271 +#: lutris/runners/runner.py:295 msgid "Required runner unavailable" msgstr "Potreban pokretač nije dostupan" @@ -3536,10 +3723,9 @@ msgstr "Ryujinx" msgid "Nintendo Switch" msgstr "Nintendo Switch" -#: lutris/runners/ryujinx.py:16 -msgid "Nintendo Switch emulator for LDN build visit https://ryujinx.org/" -msgstr "" -"Nintendo Switch emulator za LDN izgradnju posjetite https://ryujinx.org/" +#: lutris/runners/ryujinx.py:16 lutris/runners/yuzu.py:16 +msgid "Nintendo Switch emulator" +msgstr "Nintendo Switch emulator" #: lutris/runners/ryujinx.py:25 msgid "NSP file" @@ -3561,19 +3747,23 @@ msgstr "Naslovni ključ" msgid "File containing the title keys." msgstr "Datoteka koja sadrži naslovni ključ." -#: lutris/runners/scummvm.py:14 -msgid "Runs various 2D point-and-click adventure games." -msgstr "Pokreće razne 2D usmjeri i klikni avanturističke igre." +#: lutris/runners/scummvm.py:12 +msgid "Engine for point-and-click games." +msgstr "Pokreće točka-i-klik igre." -#: lutris/runners/scummvm.py:15 lutris/services/scummvm.py:10 +#: lutris/runners/scummvm.py:13 lutris/services/scummvm.py:10 msgid "ScummVM" msgstr "ScummVM" -#: lutris/runners/scummvm.py:52 +#: lutris/runners/scummvm.py:82 +msgid "Enable subtitles" +msgstr "Omogući podnaslove" + +#: lutris/runners/scummvm.py:89 msgid "Aspect ratio correction" msgstr "Ispravljanje omjera slike" -#: lutris/runners/scummvm.py:56 +#: lutris/runners/scummvm.py:93 msgid "" "Most games supported by ScummVM were made for VGA display modes using " "rectangular pixels. Activating this option for these games will preserve the " @@ -3583,14 +3773,233 @@ msgstr "" "koriste pravokutne piksele. Aktiviranje te mogućnosti za te igre će očuvati " "4:3 omjer slike za koji su napravljene." -#: lutris/runners/scummvm.py:87 +#: lutris/runners/scummvm.py:140 +msgid "Render mode" +msgstr "Način prikaza" + +#: lutris/runners/scummvm.py:157 +msgid "Changes how the game is rendered." +msgstr "Mijenja način prikaza igre." + +#: lutris/runners/scummvm.py:161 +msgid "Filtering" +msgstr "Filtriranje" + +#: lutris/runners/scummvm.py:163 +msgid "" +"Uses bilinear interpolation instead of nearest neighbor resampling for the " +"aspect ratio correction and stretch mode." +msgstr "" +"Koristi bilinearnu interpolaciju umjesto uzrokovanja najbližeg susjeda za " +"ispravljanje omjera slike i načina rastezanja." + +#: lutris/runners/scummvm.py:170 msgid "Data directory" msgstr "Direktorij podataka" -#: lutris/runners/scummvm.py:89 +#: lutris/runners/scummvm.py:172 msgid "Defaults to share/scummvm if unspecified." msgstr "Zadano za dijeli/scummvm ako nije navedeno." +#: lutris/runners/scummvm.py:179 +msgid "" +"Specifes platform of game. Allowed values: 2gs, 3do, acorn, amiga, atari, " +"c64, fmtowns, nes, mac, pc pc98, pce, segacd, wii, windows" +msgstr "" +"Određuje platformu igre. Dopuštene vrijednosti: 2gs, 3do, acorn, amiga, " +"atari, c64, fmtowns, nes, mac, pc pc98, pce, segacd, wii, windows" + +#: lutris/runners/scummvm.py:187 +msgid "Enables joystick input (default: 0 = first joystick)" +msgstr "Omogućuje ulaz upravljača igre (zadano: 0 = prvi upravljač igre)" + +#: lutris/runners/scummvm.py:193 +msgid "Language" +msgstr "Jezik" + +#: lutris/runners/scummvm.py:194 +msgid "" +"Selects language (en, de, fr, it, pt, es, jp, zh, kr, se, gb, hb, ru, cz)" +msgstr "Odabir jezika (en, de, fr, it, pt, es, jp, zh, kr, se, gb, hb, ru, cz)" + +#: lutris/runners/scummvm.py:200 +msgid "Engine speed" +msgstr "Brzina pogona" + +#: lutris/runners/scummvm.py:201 +msgid "" +"Sets frames per second limit (0 - 100) for Grim Fandango or Escape from " +"Monkey Island (default: 60)." +msgstr "" +"Postavlja sličica u sekundi (0 - 100) za Grim Fandango ili Escape from " +"Monkey Island (zadano: 60)." + +#: lutris/runners/scummvm.py:208 +msgid "Talk speed" +msgstr "Brzina govora" + +#: lutris/runners/scummvm.py:209 +msgid "Sets talk speed for games (default: 60)" +msgstr "Postavlja brzinu govora (zadano: 60)" + +#: lutris/runners/scummvm.py:215 +msgid "Music tempo" +msgstr "Tempo glazbe" + +#: lutris/runners/scummvm.py:216 +msgid "Sets music tempo (in percent, 50-200) for SCUMM games (default: 100)" +msgstr "" +"Postavlja tempo glazbe (u postocima, 50-200) za SCUMM igre (zadano: 100)" + +#: lutris/runners/scummvm.py:222 +msgid "Digital iMuse tempo" +msgstr "Digital iMuse tempo" + +#: lutris/runners/scummvm.py:223 +msgid "Sets internal Digital iMuse tempo (10 - 100) per second (default: 10)" +msgstr "" +"Postavlja unutarnji Digital iMuse tempo (10 - 100) po sekundi (zadano: 10)" + +#: lutris/runners/scummvm.py:228 +msgid "Music driver" +msgstr "Upravljački program zvuka" + +#: lutris/runners/scummvm.py:244 +msgid "Specifies the device ScummVM uses to output audio." +msgstr "Određuje koji izlaz zvuka ScummVM uređaj." + +#: lutris/runners/scummvm.py:249 +msgid "Output rate" +msgstr "Izlazna frekvencija" + +#: lutris/runners/scummvm.py:256 +msgid "Selects output sample rate in Hz." +msgstr "Odabire izlaznu frekvenciju u Hz." + +#: lutris/runners/scummvm.py:261 +msgid "OPL driver" +msgstr "OPL upravljački program" + +#: lutris/runners/scummvm.py:273 +msgid "" +"Chooses which emulator is used by ScummVM when the AdLib emulator is chosen " +"as the Preferred device." +msgstr "" +"Odabire koji emulator koristi ScummVM kada je AdLib emulator odabran kao " +"željeni uređaj." + +#: lutris/runners/scummvm.py:280 +msgid "Music volume" +msgstr "Glasnoća zvuka igre" + +#: lutris/runners/scummvm.py:281 +msgid "Sets the music volume, 0-255 (default: 192)" +msgstr "Postavlja glasnoću zvuka glazbe, 0-255 (zadano: 192)" + +#: lutris/runners/scummvm.py:287 +msgid "SFX volume" +msgstr "SFX glasnoća zvuka" + +#: lutris/runners/scummvm.py:288 +msgid "Sets the sfx volume, 0-255 (default: 192)" +msgstr "Postavlja sfx glasnoću zvuka, 0-255 (zadano: 192)" + +#: lutris/runners/scummvm.py:294 +msgid "Speech volume" +msgstr "Glasnoća zvuka govora" + +#: lutris/runners/scummvm.py:295 +msgid "Sets the speech volume, 0-255 (default: 192)" +msgstr "Postavlja glasnoću zvuka govora, 0-255 (zadano: 192)" + +#: lutris/runners/scummvm.py:301 +msgid "MIDI gain" +msgstr "MIDI pojačanje" + +#: lutris/runners/scummvm.py:302 +msgid "Sets the gain for MIDI playback. 0-1000 (default: 100)" +msgstr "Postavlja pojačanje za MIDI reprodukciju. 0-1000 (zadano: 100)" + +#: lutris/runners/scummvm.py:308 +msgid "Soundfont" +msgstr "Soundfont" + +#: lutris/runners/scummvm.py:309 +msgid "Specifies the path to a soundfont file." +msgstr "Određuje putanju do soundfont datoteke." + +#: lutris/runners/scummvm.py:314 +msgid "Mixed AdLib/MIDI mode" +msgstr "Mješoviti AdLib/MIDI naćin" + +#: lutris/runners/scummvm.py:317 +msgid "Combines MIDI music with AdLib sound effects." +msgstr "Kombinira MIDI glazbu sa AdLib zvučnim efektima." + +#: lutris/runners/scummvm.py:322 +msgid "True Roland MT-32" +msgstr "Stvarni Roland MT-32" + +#: lutris/runners/scummvm.py:325 +msgid "" +"Tells ScummVM that the MIDI device is an actual Roland MT-32, LAPC-I, CM-64, " +"CM-32L, CM-500 or other MT-32 device." +msgstr "" +"Govori ScummVM da je MIDI uređaj ustvari Roland MT-32, LAPC-I, CM-64, " +"CM-32L, CM-500 ili drugi MT-32 uređaj." + +#: lutris/runners/scummvm.py:331 +msgid "Enable Roland GS" +msgstr "Omogući Roland GS" + +#: lutris/runners/scummvm.py:334 +msgid "" +"Tells ScummVM that the MIDI device is a GS device that has an MT-32 map, " +"such as an SC-55, SC-88 or SC-8820." +msgstr "" +"Govori ScummVM da MIDI uređaj je GS uređaj koji ima MT-32 mapiranje, poput " +"SC-55, SC-88 ili SC-8820." + +#: lutris/runners/scummvm.py:341 +msgid "Use alternate intro" +msgstr "Koristi zamjenski uvod" + +#: lutris/runners/scummvm.py:342 +msgid "Uses alternative intro for CD versions" +msgstr "Koristi zamjenski uvod za CD izdanja" + +#: lutris/runners/scummvm.py:348 +msgid "Copy protection" +msgstr "Zaštita od kopiranja" + +#: lutris/runners/scummvm.py:349 +msgid "Enables copy protection" +msgstr "Omogućuje zaštitu od kopiranja" + +#: lutris/runners/scummvm.py:355 +msgid "Demo mode" +msgstr "Demo način rada" + +#: lutris/runners/scummvm.py:356 +msgid "Starts demo mode of Maniac Mansion or The 7th Guest" +msgstr "Pokreće demo način rada za Maniac Mansion ili The 7th Guest" + +#: lutris/runners/scummvm.py:362 +msgid "Debug level" +msgstr "Razina otklanjanja grešaka" + +#: lutris/runners/scummvm.py:363 +msgid "Sets debug verbosity level" +msgstr "Postavlja opširnost otklanjanja grešaka" + +#: lutris/runners/scummvm.py:369 +msgid "Debug flags" +msgstr "Oznake otklanjanja grešaka" + +#: lutris/runners/scummvm.py:370 +msgid "Enables engine specific debug flags" +msgstr "Omogućuje specifične oznake otklanjanja grešaka pogona" + #: lutris/runners/snes9x.py:17 msgid "Super Nintendo emulator" msgstr "Super Nintendo emulator" @@ -3617,15 +4026,15 @@ msgstr "" msgid "Sound driver" msgstr "Upravljački program zvuka" -#: lutris/runners/steam.py:41 +#: lutris/runners/steam.py:28 msgid "Runs Steam for Linux games" msgstr "Pokreće Steam za Linux igre" -#: lutris/runners/steam.py:48 lutris/runners/winesteam.py:51 +#: lutris/runners/steam.py:35 msgid "Application ID" msgstr "ID aplikacije" -#: lutris/runners/steam.py:51 lutris/runners/winesteam.py:53 +#: lutris/runners/steam.py:38 msgid "" "The application ID can be retrieved from the game's page at steampowered." "com. Example: 235320 is the app ID for Original War in: \n" @@ -3635,7 +4044,7 @@ msgstr "" "Primjer: 235320 je ID aplikacije za igru Original War u: \n" "http://store.steampowered.com/app/235320/" -#: lutris/runners/steam.py:62 +#: lutris/runners/steam.py:49 msgid "" "Command line arguments used when launching the game.\n" "Ignored when Steam Big Picture mode is enabled." @@ -3643,42 +4052,30 @@ msgstr "" "Argumeti naredbenog retka koji se koriste pri pokretanju igre.\n" "Zanemareni su kada je omogućen Steam Big Picture način prikaza." -#: lutris/runners/steam.py:68 lutris/runners/winesteam.py:110 +#: lutris/runners/steam.py:55 msgid "DRM free mode (Do not launch Steam)" msgstr "Način rada bez DRM-a (Ne pokretajte Steam)" -#: lutris/runners/steam.py:73 lutris/runners/winesteam.py:114 +#: lutris/runners/steam.py:60 msgid "" "Run the game directly without Steam, requires the game binary path to be set" msgstr "" "Pokrenite igru izravno bez Steama, zahtijeva postavljanje putanje binarne " "datoteke igre" -#: lutris/runners/steam.py:79 lutris/runners/winesteam.py:119 +#: lutris/runners/steam.py:66 msgid "Game binary path" msgstr "Putanje binarne datoteke igre" -#: lutris/runners/steam.py:81 lutris/runners/winesteam.py:121 +#: lutris/runners/steam.py:68 msgid "Path to the game executable (Required by DRM free mode)" msgstr "Putanja do binarne datoteke igre (zahtijeva način rada bez DRM-a)" -#: lutris/runners/steam.py:87 lutris/runners/winesteam.py:146 -msgid "Stop Steam after game exits" -msgstr "Zaustavi Steam nakon izlaska iz igre" - -#: lutris/runners/steam.py:91 -msgid "" -"Shut down Steam after the game has quit\n" -"(only if Steam was started by Lutris)" -msgstr "" -"Isključi Steam nakon što se igra zatvori\n" -"(samo ako je Steam pokrenut od strane Lutrisa)" - -#: lutris/runners/steam.py:97 +#: lutris/runners/steam.py:74 msgid "Start Steam in Big Picture mode" msgstr "Pokreni Steam u Big Picture načinu prikaza" -#: lutris/runners/steam.py:101 +#: lutris/runners/steam.py:78 msgid "" "Launches Steam in Big Picture mode.\n" "Only works if Steam is not running or already running in Big Picture mode.\n" @@ -3689,11 +4086,11 @@ msgstr "" "prikaza.\n" "Korisno ako se igra pomoću Steam upravljača igre." -#: lutris/runners/steam.py:109 +#: lutris/runners/steam.py:86 msgid "Start Steam with LSI" msgstr "Pokreni Steam sa LSI" -#: lutris/runners/steam.py:113 +#: lutris/runners/steam.py:90 msgid "" "Launches steam with LSI patches enabled. Make sure Lutris Runtime is " "disabled and you have LSI installed. https://github.com/solus-project/linux-" @@ -3703,12 +4100,12 @@ msgstr "" "izvođenja onemogućen i imate instaliran LSI. https://github.com/solus-" "project/linux-steam-integration" -#: lutris/runners/steam.py:124 lutris/runners/winesteam.py:156 +#: lutris/runners/steam.py:101 msgid "Extra command line arguments used when launching Steam" msgstr "" "Dodatni argumenti naredbenog retka koji se koriste pri pokretanju Steama" -#: lutris/runners/steam.py:131 +#: lutris/runners/steam.py:108 msgid "Remove game data (through Steam)" msgstr "Ukloni podatke igre (putem Steama)" @@ -3952,31 +4349,31 @@ msgstr "" "Datoteka %s ne postoji, \n" "provjerite podešavanje igre." -#: lutris/runners/wine.py:37 +#: lutris/runners/wine.py:38 msgid "Runs Windows games" msgstr "Pokreće Windows igre" -#: lutris/runners/wine.py:38 +#: lutris/runners/wine.py:39 msgid "Wine" msgstr "Wine" -#: lutris/runners/wine.py:39 lutris/runners/winesteam.py:41 +#: lutris/runners/wine.py:40 msgid "Windows" msgstr "Windows" -#: lutris/runners/wine.py:48 +#: lutris/runners/wine.py:49 msgid "The game's main EXE file" msgstr "Glavna EXE datoteka igre" -#: lutris/runners/wine.py:54 +#: lutris/runners/wine.py:55 msgid "Windows command line arguments used when launching the game" msgstr "Windows argumenti naredbenog retka koji se koriste pri pokretanju igre" -#: lutris/runners/wine.py:70 +#: lutris/runners/wine.py:71 msgid "Wine prefix" msgstr "Wine prefiks" -#: lutris/runners/wine.py:72 +#: lutris/runners/wine.py:73 msgid "" "The prefix used by Wine.\n" "It's a directory containing a set of files and folders making up a confined " @@ -3986,47 +4383,47 @@ msgstr "" "To je direktorij koji sadrži skup datoteka i mapa koji čine ograničeno " "Windows okruženje." -#: lutris/runners/wine.py:80 lutris/runners/winesteam.py:84 +#: lutris/runners/wine.py:81 msgid "Prefix architecture" msgstr "Prefiks arhitekture" -#: lutris/runners/wine.py:81 lutris/runners/winesteam.py:85 +#: lutris/runners/wine.py:82 msgid "32-bit" msgstr "32-bitna" -#: lutris/runners/wine.py:81 lutris/runners/winesteam.py:85 +#: lutris/runners/wine.py:82 msgid "64-bit" msgstr "64-bitna" -#: lutris/runners/wine.py:83 +#: lutris/runners/wine.py:84 msgid "The architecture of the Windows environment" msgstr "Arhitektura Windows okruženja" -#: lutris/runners/wine.py:111 +#: lutris/runners/wine.py:112 msgid "Custom (select executable below)" msgstr "Prilagođena (odaberite izvršnu datoteku ispod)" -#: lutris/runners/wine.py:113 +#: lutris/runners/wine.py:114 msgid "WineHQ Devel ({})" msgstr "WineHQ Devel ({})" -#: lutris/runners/wine.py:114 +#: lutris/runners/wine.py:115 msgid "WineHQ Staging ({})" msgstr "WineHQ Staging ({})" -#: lutris/runners/wine.py:115 +#: lutris/runners/wine.py:116 msgid "Wine Development ({})" msgstr "Wine Development ({})" -#: lutris/runners/wine.py:116 +#: lutris/runners/wine.py:117 msgid "System ({})" msgstr "Sustav ({})" -#: lutris/runners/wine.py:168 +#: lutris/runners/wine.py:169 msgid "Wine version" msgstr "Wine inačica" -#: lutris/runners/wine.py:173 +#: lutris/runners/wine.py:174 msgid "" "The version of Wine used to launch the game.\n" "Using the last version is generally recommended, but some games work better " @@ -4036,11 +4433,11 @@ msgstr "" "Korištenje posljednje inačice se općenito preporučuje, ali određene igre " "rade bolje na starijim inačicama." -#: lutris/runners/wine.py:180 +#: lutris/runners/wine.py:181 msgid "Custom Wine executable" msgstr "Prilagođena Wine izvršna datoteka" -#: lutris/runners/wine.py:183 +#: lutris/runners/wine.py:184 msgid "" "The Wine executable to be used if you have selected \"Custom\" as the Wine " "version." @@ -4048,19 +4445,19 @@ msgstr "" "Wine izvršna datoteka koja će se koristiti ako ste odabrali \"Prilagođena\" " "za Wine inačicu." -#: lutris/runners/wine.py:188 +#: lutris/runners/wine.py:189 msgid "Use system winetricks" msgstr "Koristi winetricks sustava" -#: lutris/runners/wine.py:192 +#: lutris/runners/wine.py:193 msgid "Switch on to use /usr/bin/winetricks for winetricks." msgstr "Omogući korištenje /usr/bin/winetricks za winetricks." -#: lutris/runners/wine.py:196 +#: lutris/runners/wine.py:197 msgid "Enable DXVK" msgstr "Omogući DXVK" -#: lutris/runners/wine.py:203 +#: lutris/runners/wine.py:204 msgid "" "Use DXVK to increase compatibility and performance in Direct3D 11, 10 and 9 " "applications by translating their calls to Vulkan." @@ -4068,15 +4465,15 @@ msgstr "" "Koristite DXVK za omogućavanje podrške za Direct3D 11, 10 i 9 aplikacijama " "prevođenjem njihovih poziva u Vulkan." -#: lutris/runners/wine.py:209 +#: lutris/runners/wine.py:210 msgid "DXVK version" msgstr "DXVK inačica" -#: lutris/runners/wine.py:218 +#: lutris/runners/wine.py:219 msgid "Enable VKD3D" msgstr "Omogući VKD3D" -#: lutris/runners/wine.py:225 +#: lutris/runners/wine.py:226 msgid "" "Use VKD3D to enable support for Direct3D 12 applications by translating " "their calls to Vulkan." @@ -4084,15 +4481,15 @@ msgstr "" "Koristite VKD3D za omogućavanje podrške za Direct3D 12 aplikacijama " "prevođenjem njihovih poziva u Vulkan." -#: lutris/runners/wine.py:230 +#: lutris/runners/wine.py:231 msgid "VKD3D version" msgstr "VKD3D inačica" -#: lutris/runners/wine.py:238 +#: lutris/runners/wine.py:239 msgid "Enable D3D Extras" msgstr "Omogući D3D dodatke" -#: lutris/runners/wine.py:243 +#: lutris/runners/wine.py:244 msgid "" "Replace Wine's D3DX and D3DCOMPILER libraries with alternative ones. Needed " "for proper functionality of DXVK with some games." @@ -4100,28 +4497,28 @@ msgstr "" "Zamjenjuje Wineov D3DX i D3DCOMPILER biblioteke sa zamjenskima. Potrebno je " "za pravilno funkcioniranje DXVK s određenim igrama." -#: lutris/runners/wine.py:249 +#: lutris/runners/wine.py:250 msgid "D3D Extras version" msgstr "Inačica D3D dodataka" -#: lutris/runners/wine.py:257 +#: lutris/runners/wine.py:258 msgid "Enable DXVK-NVAPI / DLSS" msgstr "Omogući DXVK-NVAPI / DLSS" -#: lutris/runners/wine.py:262 +#: lutris/runners/wine.py:263 msgid "Enable emulation of Nvidia's NVAPI and add DLSS support, if available." msgstr "" "Omogućuje emulaciju Nvidia NVAPI i dodaje DLSS podršku, ako je dostupna." -#: lutris/runners/wine.py:267 +#: lutris/runners/wine.py:268 msgid "DXVK NVAPI version" msgstr "DXVK NVAPI inačica" -#: lutris/runners/wine.py:275 +#: lutris/runners/wine.py:276 msgid "Enable dgvoodoo2" msgstr "Omogući dgvoodoo2" -#: lutris/runners/wine.py:280 +#: lutris/runners/wine.py:281 msgid "" "dgvoodoo2 is an alternative translation layer for rendering old games that " "utilize D3D1-7 and Glide APIs. As it translates to D3D11, it's recommended " @@ -4131,15 +4528,15 @@ msgstr "" "koriste D3D1-7 i Glide API-je. Kako se prevodi u D3D11, preporuča se " "korištenje u kombinaciji s DXVK. Samo 32-bitne aplikacije su podržane." -#: lutris/runners/wine.py:287 +#: lutris/runners/wine.py:288 msgid "dgvoodoo2 version" msgstr "dgvoodoo2 inačica" -#: lutris/runners/wine.py:295 +#: lutris/runners/wine.py:296 msgid "Enable Esync" msgstr "Omogući Esync" -#: lutris/runners/wine.py:302 +#: lutris/runners/wine.py:303 msgid "" "Enable eventfd-based synchronization (esync). This will increase performance " "in applications that take advantage of multi-core processors." @@ -4147,25 +4544,25 @@ msgstr "" "Omogući eventfd-temeljeno usklađivanje (esync). To će povećati performanse u " "aplikacijama koje koriste prednosti višejezgrenih procesora." -#: lutris/runners/wine.py:309 +#: lutris/runners/wine.py:310 msgid "Enable Fsync" msgstr "Omogući Fsync" -#: lutris/runners/wine.py:315 +#: lutris/runners/wine.py:317 msgid "" "Enable futex-based synchronization (fsync). This will increase performance " -"in applications that take advantage of multi-core processors. Requires a " -"custom kernel with the fsync patchset." +"in applications that take advantage of multi-core processors. Requires " +"kernel 5.16 or above." msgstr "" "Omogući futex-temeljeno usklađivanje (fsync). To će povećati performanse u " "aplikacijama koje koriste prednosti višejezgrenih procesora. Zahtijeva " -"prilagođeni kernel sa fsync zakrpama." +"prilagođeni kernel 5.16 ili noviji." -#: lutris/runners/wine.py:323 +#: lutris/runners/wine.py:325 msgid "Enable AMD FidelityFX Super Resolution (FSR)" msgstr "Omogući AMD FidelityFX Super Razlučivost (FSR)" -#: lutris/runners/wine.py:327 +#: lutris/runners/wine.py:329 msgid "" "Use FSR to upscale the game window to native resolution.\n" "Requires Lutris Wine FShack >= 6.13 and setting the game to a lower " @@ -4178,11 +4575,11 @@ msgstr "" "razlučivost.\n" "Ne radi u igrama pokrenutim u prozoru s rubom koji izvodi vlastito uvećanje." -#: lutris/runners/wine.py:334 +#: lutris/runners/wine.py:336 msgid "Enable BattlEye Anti-Cheat" msgstr "Omogući BattlEye Anti-Cheat" -#: lutris/runners/wine.py:338 +#: lutris/runners/wine.py:340 msgid "" "Enable support for BattlEye Anti-Cheat in supported games\n" "Requires Lutris Wine 6.21-2 and newer or any other compatible Wine build.\n" @@ -4191,11 +4588,24 @@ msgstr "" "Zahtijeva Lutris Wine 6.21-2 i noviji ili bilo koju drugu kompatibilnu Wine " "izgradnju.\n" -#: lutris/runners/wine.py:344 +#: lutris/runners/wine.py:346 +msgid "Enable Easy Anti-Cheat" +msgstr "Omogući Easy Anti-Cheat" + +#: lutris/runners/wine.py:350 +msgid "" +"Enable support for Easy Anti-Cheat in supported games\n" +"Requires Lutris Wine 7.2 and newer or any other compatible Wine build.\n" +msgstr "" +"Omogući podršku za Easy Anti-Cheat u podržanim igrama\n" +"Zahtijeva Lutris Wine 7.2 i noviji ili bilo koju drugu kompatibilnu Wine " +"izgradnju.\n" + +#: lutris/runners/wine.py:356 msgid "Windowed (virtual desktop)" msgstr "Prozorska (virtualna radna površina)" -#: lutris/runners/wine.py:348 +#: lutris/runners/wine.py:360 msgid "" "Run the whole Windows desktop in a window.\n" "Otherwise, run it fullscreen.\n" @@ -4205,27 +4615,53 @@ msgstr "" "U suprotnome, pokreni u cijelom zaslonu.\n" "To odgovara mogućnosti Wine Virtualne radne površine." -#: lutris/runners/wine.py:355 +#: lutris/runners/wine.py:367 msgid "Virtual desktop resolution" msgstr "Razlučivost virtualne radne površine" -#: lutris/runners/wine.py:358 +#: lutris/runners/wine.py:370 msgid "The size of the virtual desktop in pixels." msgstr "Veličina virtualne radne površine u pikselima." -#: lutris/runners/wine.py:362 +#: lutris/runners/wine.py:374 +msgid "Enable DPI Scaling" +msgstr "Omogući DPI promjenu veličine" + +#: lutris/runners/wine.py:378 +msgid "" +"Enables the Windows application's DPI scaling.\n" +"Otherwise, the Screen Resolution option in 'Wine configuration' controls " +"this." +msgstr "" +"Omogućuje DPI promjenu veličine u Windows aplikacijama.\n" +"U suprotnome, Screen Resolution mogućnost u 'Wine podešavanjima' upravlja " +"ovime." + +#: lutris/runners/wine.py:384 +msgid "DPI" +msgstr "DPI" + +#: lutris/runners/wine.py:387 +msgid "" +"The DPI to be used if 'Enable DPI Scaling' is turned on.\n" +"If blank or 'auto', Lutris will auto-detect this." +msgstr "" +"DPI koji se koristi ako je 'Omogući DPI promjenu' uključeno.\n" +"Ako je prazno ili 'auto', Lutris će ovo automatski otkriti." + +#: lutris/runners/wine.py:393 msgid "Mouse Warp Override" msgstr "Zaobilaženje hvatanja miša" -#: lutris/runners/wine.py:365 +#: lutris/runners/wine.py:396 msgid "Enable" msgstr "Omogući" -#: lutris/runners/wine.py:367 +#: lutris/runners/wine.py:398 msgid "Force" msgstr "Prisilno" -#: lutris/runners/wine.py:372 +#: lutris/runners/wine.py:403 msgid "" "Override the default mouse pointer warping behavior\n" "Enable: (Wine default) warp the pointer when the mouse is exclusively " @@ -4239,11 +4675,11 @@ msgstr "" "Onemogući: nikada ne hvataj pokazivač miša \n" "Prisilno: uvijek hvataj pokazivač miša" -#: lutris/runners/wine.py:381 +#: lutris/runners/wine.py:412 msgid "Audio driver" msgstr "Upravljački program zvuka" -#: lutris/runners/wine.py:392 +#: lutris/runners/wine.py:423 msgid "" "Which audio backend to use.\n" "By default, Wine automatically picks the right one for your system." @@ -4251,45 +4687,45 @@ msgstr "" "Koji se pozadinski program zvuka koristi.\n" "Po zadanome, Wine automatski odabire najprikladniji za vaš sustav." -#: lutris/runners/wine.py:400 +#: lutris/runners/wine.py:431 msgid "DLL overrides" msgstr "DLL zaobilaženje" -#: lutris/runners/wine.py:401 +#: lutris/runners/wine.py:432 msgid "Sets WINEDLLOVERRIDES when launching the game." msgstr "Postavlja WINEDLLOVERRIDES pri pokretanju igre." -#: lutris/runners/wine.py:405 +#: lutris/runners/wine.py:436 msgid "Output debugging info" msgstr "Izlazne informacije otklanjanja grešaka" -#: lutris/runners/wine.py:409 +#: lutris/runners/wine.py:440 msgid "Enabled" msgstr "Omogućeno" -#: lutris/runners/wine.py:410 +#: lutris/runners/wine.py:441 msgid "Inherit from environment" msgstr "Naslijedi iz radnog okruženja" -#: lutris/runners/wine.py:412 +#: lutris/runners/wine.py:443 msgid "Full (CAUTION: Will cause MASSIVE slowdown)" msgstr "Potpuno (UPOZORENJE: Prouzročit će MASIVNO usporavanje)" -#: lutris/runners/wine.py:415 +#: lutris/runners/wine.py:446 msgid "Output debugging information in the game log (might affect performance)" msgstr "" "Izlazne informacije otklanjanja grešaka u zapisu igre (može utjecati na " "performanse)" -#: lutris/runners/wine.py:420 +#: lutris/runners/wine.py:451 msgid "Show crash dialogs" msgstr "Prikaži dijalog rušenja" -#: lutris/runners/wine.py:428 +#: lutris/runners/wine.py:459 msgid "Autoconfigure joypads" msgstr "Automatski podesi upravljače igre" -#: lutris/runners/wine.py:432 +#: lutris/runners/wine.py:463 msgid "" "Automatically disables one of Wine's detected joypad to avoid having 2 " "controllers detected" @@ -4297,11 +4733,11 @@ msgstr "" "Automatski onemogućuje upravljač igre otkriven wine-om kako bi se izbjeglo " "otkrivanje 2 upravljača igre" -#: lutris/runners/wine.py:438 +#: lutris/runners/wine.py:469 msgid "Create a sandbox for Wine folders" msgstr "Stvori sigurno okruženje za Wine mape" -#: lutris/runners/wine.py:442 +#: lutris/runners/wine.py:473 msgid "" "Do not use $HOME for desktop integration folders.\n" "By default, it use the directories in the confined Windows environment." @@ -4309,143 +4745,51 @@ msgstr "" "Ne koristi $HOME za mape integracije radne površine.\n" "Po zadanome, koristi direktorije u ograničenom Windows okruženju." -#: lutris/runners/wine.py:450 +#: lutris/runners/wine.py:481 msgid "Sandbox directory" msgstr "Direktorij sigurnog okruženja" -#: lutris/runners/wine.py:451 +#: lutris/runners/wine.py:482 msgid "Custom directory for desktop integration folders." msgstr "Prilagođeni direktorij za mapu integracije radne površine." -#: lutris/runners/wine.py:459 +#: lutris/runners/wine.py:490 msgid "Run EXE inside Wine prefix" msgstr "Pokreni EXE unutar Wine prefiksa" -#: lutris/runners/wine.py:461 +#: lutris/runners/wine.py:492 msgid "Wine configuration" msgstr "Wine podešavanje" -#: lutris/runners/wine.py:463 +#: lutris/runners/wine.py:494 msgid "Open Bash terminal" msgstr "Pokreni u Bash terminalu" -#: lutris/runners/wine.py:464 +#: lutris/runners/wine.py:495 msgid "Open Wine console" msgstr "Otvori Wine konzolu" -#: lutris/runners/wine.py:465 +#: lutris/runners/wine.py:496 msgid "Wine registry" msgstr "Wine registar" -#: lutris/runners/wine.py:466 -msgid "Kill all Wine processes" -msgstr "Ubij sve Wine procese" - -#: lutris/runners/wine.py:467 +#: lutris/runners/wine.py:497 msgid "Winetricks" msgstr "Winetricks" -#: lutris/runners/wine.py:468 +#: lutris/runners/wine.py:498 msgid "Wine Control Panel" msgstr "Wine upravljačka ploča" -#: lutris/runners/wine.py:626 +#: lutris/runners/wine.py:661 msgid "Select an EXE or MSI file" msgstr "Odaberite EXE ili MSI datoteku" -#: lutris/runners/winesteam.py:38 -msgid "Runs Steam for Windows games" -msgstr "Pokreće Steam za Windows igre" - -#: lutris/runners/winesteam.py:40 -msgid "Wine Steam" -msgstr "Wine Steam" - -#: lutris/runners/winesteam.py:71 -msgid "Prefix" -msgstr "Prefiks" - -#: lutris/runners/winesteam.py:73 -msgid "" -"The prefix (also named \"bottle\") used by Wine.\n" -"It's a directory containing a set of files and folders making up a confined " -"Windows environment." -msgstr "" -"Prefiks (još se naziva \"bottle\") koji koristi Wine.\n" -"To je direktorij koji sadrži skup datoteka i mapa koji čine ograničeno " -"Windows okruženje." - -#: lutris/runners/winesteam.py:89 -msgid "" -"The architecture of the Windows environment.\n" -"32-bit is recommended unless running 64-bit only games." -msgstr "" -"Arhitektura Windows okruženja.\n" -"32-bitna je preporučljiva osim ako ne pokrećete 64-bitnu igru." - -#: lutris/runners/winesteam.py:102 -msgid "Do not launch game, only open Steam" -msgstr "Ne pokreći igru, samo otvori Steam" - -#: lutris/runners/winesteam.py:104 -msgid "" -"Opens Steam with the current settings without running the game, useful if a " -"game has several launch options." -msgstr "" -"Otvara Steam s trenutnim postavkama bez pokretanja igre, korisno ako igra " -"ima nekoliko mogućnosti pokretanja." - -#: lutris/runners/winesteam.py:127 -msgid "Remove game data (through Wine Steam)" -msgstr "Ukloni podatke igre (putem Wine Steama)" - -#: lutris/runners/winesteam.py:136 -msgid "Custom Steam location" -msgstr "Prilagođena Steam lokacija" - -#: lutris/runners/winesteam.py:138 -msgid "" -"Choose a folder containing Steam.exe\n" -"By default, Lutris will look for a Windows Steam installation into ~/.wine " -"or will install it in its own custom Wine prefix." -msgstr "" -"Odaberite mapu koja sadrži Steam.exe\n" -"Po zadanome, Lutris će potražiti Windows Steam instalaciju u ~/.wine ili će " -"instalirati svoj prilagođeni Wine prefiks." - -#: lutris/runners/winesteam.py:149 -msgid "Shut down Steam after the game has quit." -msgstr "Isključi Steam nakon što se igra zatvori." - -#: lutris/runners/winesteam.py:162 -msgid "Default Wine prefix (32-bit)" -msgstr "Zadani Wine prefiks (32-bitni)" - -#: lutris/runners/winesteam.py:164 -msgid "Default prefix location for Steam (32-bit)" -msgstr "Zadana prefix lokacija za Steam (32-bitna)" - -#: lutris/runners/winesteam.py:170 -msgid "Default Wine prefix (64-bit)" -msgstr "Zadani Wine prefiks (64-bitni)" - -#: lutris/runners/winesteam.py:172 -msgid "Default prefix location for Steam (64-bit)" -msgstr "Zadana prefix lokacija za Steam (64-bitna)" - -#: lutris/runners/winesteam.py:180 -#, python-format -msgid "Winesteam runner (%s)" -msgstr "Winesteam pokretač (%s)" - #: lutris/runners/yuzu.py:14 msgid "Yuzu" msgstr "Yuzu" -#: lutris/runners/yuzu.py:16 -msgid "Nintendo Switch emulator" -msgstr "Nintendo Switch emulator" - +#. http://zdoom.org/wiki/Command_line_parameters #: lutris/runners/zdoom.py:13 msgid "ZDoom DOOM Game Engine" msgstr "ZDoom DOOM Game pogon" @@ -4559,9 +4903,9 @@ msgstr "Humble Bundle" msgid "Itch.io (Not implemented)" msgstr "Itch.io (nije implementirano)" -#: lutris/services/origin.py:30 -msgid "Origin (WIP)" -msgstr "Origin (WIP)" +#: lutris/services/origin.py:87 +msgid "Origin" +msgstr "Origin" #: lutris/services/steam.py:102 msgid "" @@ -4579,23 +4923,27 @@ msgstr "Steam za Windows" msgid "TOSEC" msgstr "TOSEC" -#: lutris/services/ubisoft.py:13 -msgid "Ubisoft Connect (Not implemented)" -msgstr "Ubisoft Connect (nije implementirano)" +#: lutris/services/ubisoft.py:81 +msgid "Ubisoft Connect" +msgstr "Ubisoft Connect" + +#: lutris/services/xdg.py:43 +msgid "Local" +msgstr "Lokalno" #: lutris/settings.py:13 -msgid "(c) 2010-2021 Lutris Team" -msgstr "(c) 2010-2021 Lutris tim" +msgid "(c) 2010-2022 Lutris Team" +msgstr "(c) 2010-2022 Lutris tim" #: lutris/settings.py:14 msgid "The Lutris team" msgstr "Lutris tim" -#: lutris/startup.py:83 +#: lutris/startup.py:87 msgid "Your NVIDIA driver is outdated." msgstr "Vaši NVIDIA upravljački programi su zastarjeli." -#: lutris/startup.py:85 +#: lutris/startup.py:89 #, python-format msgid "" "You are currently running driver %s which does not fully support all " @@ -4608,11 +4956,11 @@ msgstr "" "Nadogradite vaš upravljački program kao što je opisano u našim instalacijskim uputama" -#: lutris/startup.py:116 +#: lutris/startup.py:120 msgid "Missing vulkan libraries" msgstr "Nedostaju vulkan biblioteke" -#: lutris/startup.py:118 +#: lutris/startup.py:122 #, python-format msgid "" "Lutris was unable to detect Vulkan support for the %s architecture.\n" @@ -4625,36 +4973,52 @@ msgstr "" "Kako bi ju instalirali, koristite sljedeće upute: Instalacija " "grafičkih upravljačkih programa" -#: lutris/startup.py:124 +#: lutris/startup.py:128 msgid " and " msgstr " i " -#: lutris/sysoptions.py:28 +#: lutris/sysoptions.py:29 msgid "Keep current" msgstr "Zadrži trenutno" -#: lutris/sysoptions.py:36 lutris/sysoptions.py:45 lutris/sysoptions.py:56 -#: lutris/sysoptions.py:475 +#: lutris/sysoptions.py:37 lutris/sysoptions.py:46 lutris/sysoptions.py:57 +#: lutris/sysoptions.py:501 msgid "Off" msgstr "Isključeno" -#: lutris/sysoptions.py:37 +#: lutris/sysoptions.py:38 msgid "Primary" msgstr "Glavni" -#: lutris/sysoptions.py:99 +#: lutris/sysoptions.py:85 +msgid "Auto: WARNING -- No Vulkan Loader detected!" +msgstr "Auto: Upozorenje -- Nema otkrivenog Vulkan učitača!" + +#: lutris/sysoptions.py:119 +msgid "Auto: Intel Open Source (MESA: ANV)" +msgstr "Auto: Intel otvoreni kôd (MESA: ANV)" + +#: lutris/sysoptions.py:121 +msgid "Auto: AMD RADV Open Source (MESA: RADV)" +msgstr "Auto: AMD RADV otvoreni kôd (MESA: RADV)" + +#: lutris/sysoptions.py:123 +msgid "Auto: Nvidia Proprietary" +msgstr "Auto: Nvidia vlasnički" + +#: lutris/sysoptions.py:145 msgid "Default installation folder" msgstr "Zadana mapa instalacije" -#: lutris/sysoptions.py:102 +#: lutris/sysoptions.py:148 msgid "The default folder where you install your games." msgstr "Zadana mapa gdje instalirate svoje igre." -#: lutris/sysoptions.py:110 +#: lutris/sysoptions.py:156 msgid "Disable Lutris Runtime" msgstr "Onemogući lutris tijek izvođenja" -#: lutris/sysoptions.py:113 +#: lutris/sysoptions.py:159 msgid "" "The Lutris Runtime loads some libraries before running the game, which can " "cause some incompatibilities in some cases. Check this option to disable it." @@ -4663,11 +5027,11 @@ msgstr "" "Koje mogu uzrokovati određene nekompatibilnosti u pojedinim igrama. " "Odaberite ovu mogućnost kako bi ga onemogućili." -#: lutris/sysoptions.py:120 +#: lutris/sysoptions.py:166 msgid "Prefer system libraries" msgstr "Preferiraj biblioteke sustava" -#: lutris/sysoptions.py:122 +#: lutris/sysoptions.py:168 msgid "" "When the runtime is enabled, prioritize the system libraries over the " "provided ones." @@ -4675,11 +5039,11 @@ msgstr "" "Kada je tijek izvođenja omogućen, prednost imaju biblioteke sustava nad " "pruženim bibliotekama." -#: lutris/sysoptions.py:131 +#: lutris/sysoptions.py:174 msgid "Restore resolution on game exit" msgstr "Obnovi razlučivost nakon zatvaranja igre" -#: lutris/sysoptions.py:134 +#: lutris/sysoptions.py:176 msgid "" "Some games don't restore your screen resolution when \n" "closed or when they crash. This is when this option comes \n" @@ -4688,11 +5052,11 @@ msgstr "" "Pojedine igre ne obnavljaju razlučivost vašeg zaslona kada\n" "se zatvore ili sruše. Tada je ova mogućnost u igri za spremanje." -#: lutris/sysoptions.py:141 +#: lutris/sysoptions.py:183 msgid "Enable gamescope" msgstr "Omogući gamescope" -#: lutris/sysoptions.py:145 +#: lutris/sysoptions.py:187 msgid "" "Use gamescope to draw the game window isolated from your desktop.\n" "Use Ctrl+Super+F to toggle fullscreen" @@ -4701,35 +5065,47 @@ msgstr "" "površine.\n" "Koristite Ctrl+Super+F za uklj/isklj cjelozaslonskog prikaza" -#: lutris/sysoptions.py:151 +#: lutris/sysoptions.py:193 msgid "Gamescope output resolution" msgstr "Izlazna Gamescope razlučivost" -#: lutris/sysoptions.py:155 +#: lutris/sysoptions.py:197 msgid "Resolution of the window on your desktop" msgstr "Razlučivost prozora na vašoj radnoj površini" -#: lutris/sysoptions.py:160 +#: lutris/sysoptions.py:202 msgid "Gamescope game resolution" msgstr "Razlučivost Gamescope igre" -#: lutris/sysoptions.py:164 +#: lutris/sysoptions.py:206 msgid "Resolution of the screen visible to the game" msgstr "Razlučivost zaslona vidljivog igri" -#: lutris/sysoptions.py:169 -msgid "Restrict to single core" -msgstr "Ograniči na jednu jezgru" +#: lutris/sysoptions.py:211 +msgid "Restrict number of cores used" +msgstr "Ograniči broj korištenih jezgri" + +#: lutris/sysoptions.py:214 +msgid "Restrict the game to a maximum number of CPU cores." +msgstr "Ograniči igru na najveći broj jezgara." + +#: lutris/sysoptions.py:219 +msgid "Restrict number of cores to" +msgstr "Ograniči broj jezgara na" -#: lutris/sysoptions.py:172 -msgid "Restrict the game to a single CPU core." -msgstr "Ograniči igru na jednu jezgru procesora." +#: lutris/sysoptions.py:222 +msgid "" +"Maximum number of CPU cores to be used, if 'Restrict number of cores used' " +"is turned on." +msgstr "" +"Najveći broj CPU jezgri koji se koriste, Ako se 'Ograniči broj korištenih " +"jezgri' je uključeno." -#: lutris/sysoptions.py:178 +#: lutris/sysoptions.py:228 msgid "Restore gamma on game exit" msgstr "Obnovi gamu nakon zatvaranja igre" -#: lutris/sysoptions.py:180 +#: lutris/sysoptions.py:230 msgid "" "Some games don't correctly restores gamma on exit, making your display too " "bright. Select this option to correct it." @@ -4737,11 +5113,11 @@ msgstr "" "Pojedine igre ne obnavljaju gamu kada se zatvore, što čini vaš zaslon " "previše svijetlim. Odaberite ovu mogućnost kako bi ovo ispravili." -#: lutris/sysoptions.py:185 +#: lutris/sysoptions.py:235 msgid "Disable desktop effects" msgstr "Onemogući efekte radne površine" -#: lutris/sysoptions.py:189 +#: lutris/sysoptions.py:239 msgid "" "Disable desktop effects while game is running, reducing stuttering and " "increasing performance" @@ -4749,11 +5125,11 @@ msgstr "" "Onemogući efekte radne površine kada je igra pokrenuta, smanjuje trzanje " "slike i povećava performanse" -#: lutris/sysoptions.py:194 +#: lutris/sysoptions.py:244 msgid "Disable screen saver" msgstr "Onemogući čuvara zaslona" -#: lutris/sysoptions.py:199 +#: lutris/sysoptions.py:249 msgid "" "Disable the screen saver while a game is running. Requires the screen " "saver's functionality to be exposed over DBus." @@ -4761,19 +5137,19 @@ msgstr "" "Onemogućuje čuvara zaslona dok je igra pokrenuta. Zahtijeva funkcionalnost " "čuvara zaslona kako bi bio izložen putem DBus-a." -#: lutris/sysoptions.py:206 +#: lutris/sysoptions.py:256 msgid "Reset PulseAudio" msgstr "Ponovno pokreni PulseAudio" -#: lutris/sysoptions.py:210 +#: lutris/sysoptions.py:260 msgid "Restart PulseAudio before launching the game." msgstr "Ponovno pokreni PulseAudio prije pokretanja igre." -#: lutris/sysoptions.py:215 +#: lutris/sysoptions.py:265 msgid "Reduce PulseAudio latency" msgstr "Smanji PulseAudio latenciju" -#: lutris/sysoptions.py:219 +#: lutris/sysoptions.py:269 msgid "" "Set the environment variable PULSE_LATENCY_MSEC=60 to improve audio quality " "on some games" @@ -4781,19 +5157,19 @@ msgstr "" "Postavite varijablu okruženja PULSE_LATENCY_MSEC=60 kako bi poboljšali " "kvalitetu zvuka u pojedinim igrama" -#: lutris/sysoptions.py:225 +#: lutris/sysoptions.py:275 msgid "Switch to US keyboard layout" msgstr "Prebaci na SAD raspored tipkovnice" -#: lutris/sysoptions.py:228 +#: lutris/sysoptions.py:278 msgid "Switch to US keyboard QWERTY layout while game is running" msgstr "Prebaci na SAD QWERTY raspored tipkovnice kada je igra pokrenuta" -#: lutris/sysoptions.py:235 +#: lutris/sysoptions.py:285 msgid "Optimus launcher (NVIDIA Optimus laptops)" msgstr "Optimus pokretač (NVIDIA Optimus prijenosnici)" -#: lutris/sysoptions.py:237 +#: lutris/sysoptions.py:287 msgid "" "If you have installed the primus or bumblebee packages, select what launcher " "will run the game with the command, activating your NVIDIA graphic chip for " @@ -4807,11 +5183,11 @@ msgstr "" "butoptirun/virtualgl radi bolje za većinu igra. Primus VK pruža vulkan " "podršku za bumblebee." -#: lutris/sysoptions.py:249 +#: lutris/sysoptions.py:299 msgid "Vulkan ICD loader" msgstr "Vulkan ICD učitač" -#: lutris/sysoptions.py:251 +#: lutris/sysoptions.py:301 msgid "" "The ICD loader is a library that is placed between a Vulkan application and " "any number of Vulkan drivers, in order to support multiple drivers and the " @@ -4822,23 +5198,11 @@ msgstr "" "upravljačkih programa i funkcionalnost na razini primjerka koje rade s tim " "upravljačkim programima." -#: lutris/sysoptions.py:259 +#: lutris/sysoptions.py:309 msgid "FPS counter (MangoHud)" msgstr "FPS brojač (MangoHud)" -#: lutris/sysoptions.py:262 -msgid "Enabled (Vulkan)" -msgstr "Omogućeno (Vulkan)" - -#: lutris/sysoptions.py:263 -msgid "Enabled (OpenGL)" -msgstr "Omogućeno (OpenGL)" - -#: lutris/sysoptions.py:264 -msgid "Enabled (OpenGL, 32bit)" -msgstr "Omogućeno (OpenGL, 32-bitni)" - -#: lutris/sysoptions.py:269 +#: lutris/sysoptions.py:312 msgid "" "Display the game's FPS + other information. Requires MangoHud to be " "installed." @@ -4846,24 +5210,24 @@ msgstr "" "Prikazuje broj sličica igre (FPS) + druge informacije. Zahtijeva instalirani " "MangoHud." -#: lutris/sysoptions.py:278 +#: lutris/sysoptions.py:321 msgid "Limit the game's FPS to desired number" msgstr "Ograniči broj sličica igre na željeni broj" -#: lutris/sysoptions.py:285 +#: lutris/sysoptions.py:328 msgid "Enable Feral GameMode" msgstr "Omogući Feral GameMode" -#: lutris/sysoptions.py:286 +#: lutris/sysoptions.py:329 msgid "Request a set of optimisations be temporarily applied to the host OS" msgstr "" "Zahtijeva skup optimizacija privremeno primijenjenih na operativni sustav" -#: lutris/sysoptions.py:293 +#: lutris/sysoptions.py:336 msgid "Enable NVIDIA Prime Render Offload" msgstr "Omogući NVIDIA Prime rasterećenje prikaza" -#: lutris/sysoptions.py:294 +#: lutris/sysoptions.py:337 msgid "" "If you have the latest NVIDIA driver and the properly patched xorg-server " "(see https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/" @@ -4878,11 +5242,11 @@ msgstr "" "__NV_PRIME_RENDER_OFFLOAD=1 i __GLX_VENDOR_LIBRARY_NAME=nvidia varijable " "okruženja." -#: lutris/sysoptions.py:305 +#: lutris/sysoptions.py:348 msgid "Use discrete graphics" msgstr "Koristi diskretnu grafiku" -#: lutris/sysoptions.py:307 +#: lutris/sysoptions.py:350 msgid "" "If you have open source graphic drivers (Mesa), selecting this option will " "run the game with the 'DRI_PRIME=1' environment variable, activating your " @@ -4892,11 +5256,11 @@ msgstr "" "će pokrenuti igru sa 'DRI_PRIME=1' varijablom okruženja, aktivirajte vaš " "diskretni grafički čip za visoke 3D performanse." -#: lutris/sysoptions.py:315 +#: lutris/sysoptions.py:358 msgid "SDL 1.2 Fullscreen Monitor" msgstr "SDL 1.2 cjelozaslonski monitor" -#: lutris/sysoptions.py:319 +#: lutris/sysoptions.py:362 msgid "" "Hint SDL 1.2 games to use a specific monitor when going fullscreen by " "setting the SDL_VIDEO_FULLSCREEN environment variable" @@ -4904,11 +5268,11 @@ msgstr "" "Nagovijesti SDL 1.2 igrama da koriste određeni monitor kada se prebaciva u " "cjelozaslonski prikaz postavljanjem SDL_VIDEO_FULLSCREEN varijable okruženja" -#: lutris/sysoptions.py:326 +#: lutris/sysoptions.py:369 msgid "Turn off monitors except" msgstr "Očekivanje isključivanja monitora" -#: lutris/sysoptions.py:330 +#: lutris/sysoptions.py:374 msgid "" "Only keep the selected screen active while the game is running. \n" "This is useful if you have a dual-screen setup, and are \n" @@ -4918,19 +5282,19 @@ msgstr "" "To je korisno ako koristite dva zaslona i imate probleme\n" "sa zaslonom kada je igra pokrenuta u cijelom zaslonu." -#: lutris/sysoptions.py:338 +#: lutris/sysoptions.py:382 msgid "Switch resolution to" msgstr "Prebaci razlučivost na" -#: lutris/sysoptions.py:341 +#: lutris/sysoptions.py:386 msgid "Switch to this screen resolution while the game is running." msgstr "Prebaci razlučivost na ovom zaslonu kada je igra pokrenuta." -#: lutris/sysoptions.py:345 +#: lutris/sysoptions.py:390 msgid "CLI mode" msgstr "CLI način rada" -#: lutris/sysoptions.py:349 +#: lutris/sysoptions.py:394 msgid "" "Enable a terminal for text-based games. Only useful for ASCII based games. " "May cause issues with graphical games." @@ -4938,11 +5302,11 @@ msgstr "" "Omogući terminal za igre temeljene na tekstu. Korisno samo za ASCII " "temeljene igre. Može uzrokovati probleme s grafičkim igrama." -#: lutris/sysoptions.py:354 +#: lutris/sysoptions.py:399 msgid "Text based games emulator" msgstr "Emulator za igre temeljene na tekstu" -#: lutris/sysoptions.py:359 +#: lutris/sysoptions.py:404 msgid "" "The terminal emulator used with the CLI mode. Choose from the list of " "detected terminal apps or enter the terminal's command or path." @@ -4951,70 +5315,70 @@ msgstr "" "popisa otkrivenih aplikacija terminala ili upišite naredbu ili putanju " "terminala." -#: lutris/sysoptions.py:366 +#: lutris/sysoptions.py:411 msgid "Environment variables" msgstr "Varijable okruženja" -#: lutris/sysoptions.py:367 +#: lutris/sysoptions.py:412 msgid "Environment variables loaded at run time" msgstr "Varijable okruženja učitane pri tijeku izvođenja" -#: lutris/sysoptions.py:372 +#: lutris/sysoptions.py:417 msgid "AntiMicroX Profile" msgstr "AntiMicroX profil" -#: lutris/sysoptions.py:374 +#: lutris/sysoptions.py:419 msgid "Path to an AntiMicroX profile file" msgstr "Putanja do datoteke AntiMicroX profila" -#: lutris/sysoptions.py:379 +#: lutris/sysoptions.py:424 msgid "Command prefix" msgstr "Prefiks naredbe" -#: lutris/sysoptions.py:381 +#: lutris/sysoptions.py:426 msgid "" "Command line instructions to add in front of the game's execution command." msgstr "" "Instrukcije naredbenog retka koje će biti dodane ispred naredbe pokretanja " "igre." -#: lutris/sysoptions.py:387 +#: lutris/sysoptions.py:432 msgid "Manual script" msgstr "Ručna skripta" -#: lutris/sysoptions.py:389 +#: lutris/sysoptions.py:434 msgid "Script to execute from the game's contextual menu" msgstr "Skripta koja će se pokrenuti iz sadržajnog izbornika igre" -#: lutris/sysoptions.py:394 +#: lutris/sysoptions.py:439 msgid "Pre-launch script" msgstr "Predpokrenuta skripta" -#: lutris/sysoptions.py:396 +#: lutris/sysoptions.py:441 msgid "Script to execute before the game starts" msgstr "Skripta koja će se pokrenuti prije pokretanja igre" -#: lutris/sysoptions.py:401 +#: lutris/sysoptions.py:446 msgid "Wait for pre-launch script completion" msgstr "Čekaj završetak predpokrenute skripte" -#: lutris/sysoptions.py:404 +#: lutris/sysoptions.py:449 msgid "Run the game only once the pre-launch script has exited" msgstr "Pokreni igru samo kada predpokrenuta skripta završi" -#: lutris/sysoptions.py:409 +#: lutris/sysoptions.py:454 msgid "Post-exit script" msgstr "Naknadna skripta zatvaranja" -#: lutris/sysoptions.py:411 +#: lutris/sysoptions.py:456 msgid "Script to execute when the game exits" msgstr "Skripta koja će se pokrenuti nakon zatvaranja igre" -#: lutris/sysoptions.py:419 +#: lutris/sysoptions.py:461 msgid "Include processes" msgstr "Obuhvati procese" -#: lutris/sysoptions.py:422 +#: lutris/sysoptions.py:463 msgid "" "What processes to include in process monitoring. This is to override the " "built-in exclude list.\n" @@ -5026,11 +5390,11 @@ msgstr "" "Popis odvojen razmakom, procesi koji imaju razmake mogu biti navedeni unutar " "navodnika." -#: lutris/sysoptions.py:433 +#: lutris/sysoptions.py:471 msgid "Exclude processes" msgstr "Izuzmi procese" -#: lutris/sysoptions.py:436 +#: lutris/sysoptions.py:473 msgid "" "What processes to exclude in process monitoring. For example background " "processes that stick around after the game has been closed.\n" @@ -5042,11 +5406,11 @@ msgstr "" "Popis odvojen razmakom, procesi koji imaju razmake mogu biti navedeni unutar " "navodnika." -#: lutris/sysoptions.py:448 +#: lutris/sysoptions.py:482 msgid "Killswitch file" msgstr "Killswitch datoteka" -#: lutris/sysoptions.py:451 +#: lutris/sysoptions.py:484 msgid "" "Path to a file which will stop the game when deleted \n" "(usually /dev/input/js0 to stop the game on joystick unplugging)" @@ -5055,11 +5419,11 @@ msgstr "" "(uobičajeno /dev/input/js0 za zaustavljanje igre kada se upravljač igre " "odspoji)" -#: lutris/sysoptions.py:461 +#: lutris/sysoptions.py:491 msgid "SDL2 gamepad mapping" msgstr "SDL2 mapiranje upravljača igre" -#: lutris/sysoptions.py:464 +#: lutris/sysoptions.py:493 msgid "" "SDL_GAMECONTROLLERCONFIG mapping string or path to a custom gamecontrollerdb." "txt file containing mappings." @@ -5067,82 +5431,112 @@ msgstr "" "SDL_GAMECONTROLLERCONFIG izraz mapiranja ili putanja do prilagođene " "gamecontrollerdb.txt datoteke koja sadrži mapiranja." -#: lutris/sysoptions.py:471 +#: lutris/sysoptions.py:498 msgid "Use Xephyr" msgstr "Koristi Xephyr" -#: lutris/sysoptions.py:476 +#: lutris/sysoptions.py:502 msgid "8BPP (256 colors)" msgstr "8BPP (256 boja)" -#: lutris/sysoptions.py:477 +#: lutris/sysoptions.py:503 msgid "16BPP (65536 colors)" msgstr "16BPP (65536 boja)" -#: lutris/sysoptions.py:478 +#: lutris/sysoptions.py:504 msgid "24BPP (16M colors)" msgstr "24BPP (16M boja)" -#: lutris/sysoptions.py:485 +#: lutris/sysoptions.py:508 msgid "Run program in Xephyr to support 8BPP and 16BPP color modes" msgstr "Pokreni program u Xephyr za podršku rada u 8BPP i 16BPP bojama" -#: lutris/sysoptions.py:490 +#: lutris/sysoptions.py:513 msgid "Xephyr resolution" msgstr "Xephyr razlučivost" -#: lutris/sysoptions.py:492 +#: lutris/sysoptions.py:515 msgid "Screen resolution of the Xephyr server" msgstr "Razlučivost zaslona Xephyr poslužitelja" -#: lutris/sysoptions.py:497 +#: lutris/sysoptions.py:520 msgid "Xephyr Fullscreen" msgstr "Xephyr cijeli zaslon" -#: lutris/sysoptions.py:500 +#: lutris/sysoptions.py:523 msgid "Open Xephyr in fullscreen (at the desktop resolution)" msgstr "Otvori Xephyr u cijelom zaslonu (na razlučivosti radne površine)" -#: lutris/util/wine/dll_manager.py:58 +#: lutris/util/system.py:20 +msgid "Documents" +msgstr "Dokumenti" + +#: lutris/util/system.py:21 +msgid "Downloads" +msgstr "Preuzimanja" + +#: lutris/util/system.py:22 +msgid "Desktop" +msgstr "Radna površina" + +#: lutris/util/system.py:23 lutris/util/system.py:25 +msgid "Pictures" +msgstr "Slike" + +#: lutris/util/system.py:24 +msgid "Videos" +msgstr "Snimke" + +#: lutris/util/system.py:26 +msgid "Projects" +msgstr "Projekti" + +#: lutris/util/ubisoft/client.py:102 +#, python-format +msgid "Ubisoft authentication has been lost: %s" +msgstr "Ubisoft ovjera je izgubljena: %s" + +#: lutris/util/wine/dll_manager.py:63 msgid "Manual" msgstr "Ručno" -#: lutris/util/wine/wine.py:342 lutris/util/wine/wine.py:380 -#: lutris/util/wine/wine.py:400 +#: lutris/util/wine/wine.py:346 lutris/util/wine/wine.py:384 +#: lutris/util/wine/wine.py:404 msgid "Launch anyway and do not show this message again." msgstr "Ipak pokreni i ne prikazuj ponovno ovu poruku." -#: lutris/util/wine/wine.py:344 lutris/util/wine/wine.py:382 -#: lutris/util/wine/wine.py:402 +#: lutris/util/wine/wine.py:348 lutris/util/wine/wine.py:386 +#: lutris/util/wine/wine.py:406 msgid "Enable anyway and do not show this message again." msgstr "Ipak omogući i ne prikazuj ponovno ovu poruku." -#: lutris/util/wine/wine.py:349 +#: lutris/util/wine/wine.py:353 msgid "Vulkan is not installed or is not supported by your system" msgstr "Vulkan nije instaliran ili nije podržan na vašem sustavu" -#: lutris/util/wine/wine.py:351 +#: lutris/util/wine/wine.py:355 msgid "" "If you have compatible hardware, please follow the installation procedures " "as described in\n" -"How-to:-DXVK " -"(https://github.com/lutris/lutris/wiki/How-to:-DXVK)" +"How-to:-" +"DXVK (https://github.com/lutris/docs/blob/master/HowToDXVK.md)" msgstr "" "Ako imate kompatibilan hardver, slijedite proces instalacije opisan na\n" -"How-to:-DXVK " -"(https://github.com/lutris/lutris/wiki/How-to:-DXVK)" +"How-to:-" +"DXVK (https://github.com/lutris/docs/blob/master/HowToDXVK.md)" -#: lutris/util/wine/wine.py:363 +#: lutris/util/wine/wine.py:367 msgid "" "Your limits are not set correctly. Please increase them as described here: " -"How-to:-Esync " -"(https://github.com/lutris/lutris/wiki/How-to:-Esync)" +"How-to:-" +"Esync (https://github.com/lutris/docs/blob/master/HowToEsync.md)" msgstr "" "Vaša ograničenja nisu postavljena ispravno. Povisite ih kako je ovdje " -"opisano: How-" -"to:-Esync (https://github.com/lutris/lutris/wiki/How-to:-Esync)" +"opisano: How-to:-Esync (https://github.com/lutris/docs/blob/master/HowToEsync." +"md)" -#: lutris/util/wine/wine.py:372 +#: lutris/util/wine/wine.py:376 msgid "" "Your kernel is not patched for fsync. Please get a patched kernel to use " "fsync." @@ -5150,11 +5544,11 @@ msgstr "" "Vaš kernel nije zakrpan za fsync. Nabavite zakrpani kernel kako bi mogli " "koristiti fsync." -#: lutris/util/wine/wine.py:386 lutris/util/wine/wine.py:406 +#: lutris/util/wine/wine.py:390 lutris/util/wine/wine.py:410 msgid "Incompatible Wine version detected" msgstr "Nekompatibilna Wine inačica je otkrivena" -#: lutris/util/wine/wine.py:388 +#: lutris/util/wine/wine.py:392 msgid "" "The Wine build you have selected does not support Esync.\n" "Please switch to an Esync-capable version." @@ -5162,7 +5556,7 @@ msgstr "" "Wine izgradnja koju ste odabrali ne podupire Esync.\n" "Prebacite na Esync-podržanu inačicu." -#: lutris/util/wine/wine.py:408 +#: lutris/util/wine/wine.py:412 msgid "" "The Wine build you have selected does not support Fsync.\n" "Please switch to an Fsync-capable version." @@ -5170,6 +5564,138 @@ msgstr "" "Wine izgradnja koju ste odabrali ne podupire Fsync.\n" "Prebacite na Fsync-podržanu inačicu." +#~ msgid "lutris" +#~ msgstr "lutris" + +#~ msgid "Your Library" +#~ msgstr "Vaša igroteka" + +#~ msgid "Community Installers" +#~ msgstr "Instalacijski program zajednice" + +#~ msgid "An error prevented the game from running" +#~ msgstr "Greška je spriječila pokretanje igre" + +#~ msgid "Could not retrieve game installer." +#~ msgstr "Nemoguće preuzimanje instalacijskog programa igre." + +#~ msgid "Services" +#~ msgstr "Usluge" + +#, python-format +#~ msgid "In use by %d game" +#~ msgid_plural "In use by %d games" +#~ msgstr[0] "Koristi %d igra" +#~ msgstr[1] "Koriste %d igre" +#~ msgstr[2] "Koristi %d igra" + +#~ msgid "Not in use" +#~ msgstr "Ne koristi se" + +#~ msgid "Use search to find games on lutris.net" +#~ msgstr "Koristite pretragu za pronalazak igra na lutris.net" + +#~ msgid "Usage of $WINESTEAM location is deprecated" +#~ msgstr "Korištenje $WINESTEAM lokacije je zastarjelo" + +#~ msgid "Nintendo Switch emulator for LDN build visit https://ryujinx.org/" +#~ msgstr "" +#~ "Nintendo Switch emulator za LDN izgradnju posjetite https://ryujinx.org/" + +#~ msgid "Stop Steam after game exits" +#~ msgstr "Zaustavi Steam nakon izlaska iz igre" + +#~ msgid "" +#~ "Shut down Steam after the game has quit\n" +#~ "(only if Steam was started by Lutris)" +#~ msgstr "" +#~ "Isključi Steam nakon što se igra zatvori\n" +#~ "(samo ako je Steam pokrenut od strane Lutrisa)" + +#~ msgid "Kill all Wine processes" +#~ msgstr "Ubij sve Wine procese" + +#~ msgid "Runs Steam for Windows games" +#~ msgstr "Pokreće Steam za Windows igre" + +#~ msgid "Wine Steam" +#~ msgstr "Wine Steam" + +#~ msgid "Prefix" +#~ msgstr "Prefiks" + +#~ msgid "" +#~ "The prefix (also named \"bottle\") used by Wine.\n" +#~ "It's a directory containing a set of files and folders making up a " +#~ "confined Windows environment." +#~ msgstr "" +#~ "Prefiks (još se naziva \"bottle\") koji koristi Wine.\n" +#~ "To je direktorij koji sadrži skup datoteka i mapa koji čine ograničeno " +#~ "Windows okruženje." + +#~ msgid "" +#~ "The architecture of the Windows environment.\n" +#~ "32-bit is recommended unless running 64-bit only games." +#~ msgstr "" +#~ "Arhitektura Windows okruženja.\n" +#~ "32-bitna je preporučljiva osim ako ne pokrećete 64-bitnu igru." + +#~ msgid "Do not launch game, only open Steam" +#~ msgstr "Ne pokreći igru, samo otvori Steam" + +#~ msgid "" +#~ "Opens Steam with the current settings without running the game, useful if " +#~ "a game has several launch options." +#~ msgstr "" +#~ "Otvara Steam s trenutnim postavkama bez pokretanja igre, korisno ako igra " +#~ "ima nekoliko mogućnosti pokretanja." + +#~ msgid "Remove game data (through Wine Steam)" +#~ msgstr "Ukloni podatke igre (putem Wine Steama)" + +#~ msgid "Custom Steam location" +#~ msgstr "Prilagođena Steam lokacija" + +#~ msgid "" +#~ "Choose a folder containing Steam.exe\n" +#~ "By default, Lutris will look for a Windows Steam installation into ~/." +#~ "wine or will install it in its own custom Wine prefix." +#~ msgstr "" +#~ "Odaberite mapu koja sadrži Steam.exe\n" +#~ "Po zadanome, Lutris će potražiti Windows Steam instalaciju u ~/.wine ili " +#~ "će instalirati svoj prilagođeni Wine prefiks." + +#~ msgid "Shut down Steam after the game has quit." +#~ msgstr "Isključi Steam nakon što se igra zatvori." + +#~ msgid "Default Wine prefix (32-bit)" +#~ msgstr "Zadani Wine prefiks (32-bitni)" + +#~ msgid "Default prefix location for Steam (32-bit)" +#~ msgstr "Zadana prefix lokacija za Steam (32-bitna)" + +#~ msgid "Default Wine prefix (64-bit)" +#~ msgstr "Zadani Wine prefiks (64-bitni)" + +#~ msgid "Default prefix location for Steam (64-bit)" +#~ msgstr "Zadana prefix lokacija za Steam (64-bitna)" + +#, python-format +#~ msgid "Winesteam runner (%s)" +#~ msgstr "Winesteam pokretač (%s)" + +#~ msgid "Ubisoft Connect (Not implemented)" +#~ msgstr "Ubisoft Connect (nije implementirano)" + +#~ msgid "Enabled (Vulkan)" +#~ msgstr "Omogućeno (Vulkan)" + +#~ msgid "Enabled (OpenGL)" +#~ msgstr "Omogućeno (OpenGL)" + +#~ msgid "Enabled (OpenGL, 32bit)" +#~ msgstr "Omogućeno (OpenGL, 32-bitni)" + #~ msgid "Open Source Gaming Platform" #~ msgstr "Platforma za igranje otvorenog kôda" @@ -5240,9 +5766,6 @@ msgstr "" #~ msgid "platforms" #~ msgstr "platforme" -#~ msgid "Install Runner" -#~ msgstr "Instaliraj pokretač" - #~ msgid "Configure Runner" #~ msgstr "Prilagodi pokretač" @@ -5274,9 +5797,6 @@ msgstr "" #~ msgid "Copy System Info" #~ msgstr "Kopiraj informacije sustava" -#~ msgid "Install runners" -#~ msgstr "Instaliraj pokretače" - #~ msgid "System preferences" #~ msgstr "Osobitosti sustava" @@ -5289,9 +5809,6 @@ msgstr "" #~ msgid "Unable to install the game" #~ msgstr "Neuspjela instalacija igre" -#~ msgid "No installer is available for this game" -#~ msgstr "Nema dostupnog instalacijskog programa za ovu igru" - #~ msgid "Configure manually" #~ msgstr "Prilagodi ručno" @@ -5319,9 +5836,6 @@ msgstr "" #~ msgid "Configure m_anually" #~ msgstr "Prilagodi r_učno" -#~ msgid "Search WineGame.net" -#~ msgstr "Pretraži WineGame.net" - #~ msgid "Synchronize library" #~ msgstr "Uskladi igroteku" @@ -5359,9 +5873,6 @@ msgstr "" #~ msgid "Downloading {}" #~ msgstr "Preuzimam {}" -#~ msgid "Import games" -#~ msgstr "Uvezi igre" - #~ msgid "Sync now" #~ msgstr "Uskladi odmah" @@ -5392,9 +5903,6 @@ msgstr "" #~ msgid "Select all" #~ msgstr "Odaberi sve" -#~ msgid "Filter:" -#~ msgstr "Filter:" - #~ msgid "All" #~ msgstr "Sve" @@ -5580,9 +6088,6 @@ msgstr "" #~ "Prebaci na \"Y\" kako bi dopustili wine-u prebacivanje razlučivosti " #~ "koristeći XVidMode proširenje." -#~ msgid "Desktop games" -#~ msgstr "Igre radnog okruženja" - #~ msgid "Enable ACO shader compiler" #~ msgstr "Omogući kompilator ACO sjenčanja" @@ -5763,9 +6268,6 @@ msgstr "" #~ "Uobičajeno završava sa \".z*\", \"*\" je broj od 1 do 6 koji označuje " #~ "inačicu Z-Machine za koju je igra napisana." -#~ msgid "Enable DX9 in DXVK" -#~ msgstr "Omogući DX9 u DXVK" - #~ msgid "Use DXVK to handle DirectX9 games" #~ msgstr "Koristi DXVK za rukovanje DirectX9 igrama" diff --git a/po/nl.po b/po/nl.po index 33c128b2c5a1b37c70ab7e905cc7a54b29795862..085e56824cd4010b6600d6be8e6132d093eeb88e 100644 --- a/po/nl.po +++ b/po/nl.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: lutris\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-03 14:05+0200\n" -"PO-Revision-Date: 2022-04-03 14:22+0200\n" +"POT-Creation-Date: 2022-08-29 18:12+0200\n" +"PO-Revision-Date: 2022-08-30 19:50+0200\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: \n" "Language: nl\n" @@ -11,17 +11,17 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.1.1\n" #: share/applications/net.lutris.Lutris.desktop:3 #: share/lutris/ui/lutris-window.ui:25 lutris/gui/application.py:76 -#: lutris/gui/widgets/status_icon.py:116 lutris/services/lutris.py:39 +#: lutris/gui/widgets/status_icon.py:127 lutris/services/lutris.py:39 msgid "Lutris" msgstr "Lutris" #: share/applications/net.lutris.Lutris.desktop:4 -msgid "video game preservation platform" -msgstr "videogame-bewaarplatform" +msgid "Video Game Preservation Platform" +msgstr "Videogame-bewaarplatform" #: share/applications/net.lutris.Lutris.desktop:6 msgid "gaming;wine;emulator;" @@ -49,7 +49,7 @@ msgstr "" "en compatibiliteitslagen, hebben we één overzichtelijk venster voor al je " "games weten te creëren." -#: share/lutris/ui/about-dialog.ui:8 share/lutris/ui/lutris-window.ui:581 +#: share/lutris/ui/about-dialog.ui:8 share/lutris/ui/lutris-window.ui:582 msgid "About Lutris" msgstr "Over Lutris" @@ -89,8 +89,8 @@ msgstr "Verbinden met winegame.net" msgid "Forgot password?" msgstr "Wachtwoord vergeten?" -#: share/lutris/ui/dialog-lutris-login.ui:43 lutris/gui/dialogs/issue.py:52 -#: lutris/gui/installerwindow.py:76 +#: share/lutris/ui/dialog-lutris-login.ui:43 lutris/gui/dialogs/issue.py:49 +#: lutris/gui/installerwindow.py:78 msgid "C_ancel" msgstr "_Annuleren" @@ -123,14 +123,14 @@ msgid "Toggle View" msgstr "Andere weergave" #: share/lutris/ui/lutris-window.ui:299 -msgid "Zoom:" -msgstr "Zoomen:" +msgid "Zoom " +msgstr "Zoom " #: share/lutris/ui/lutris-window.ui:352 msgid "Sort Ascending" msgstr "Oplopend sorteren" -#: share/lutris/ui/lutris-window.ui:367 lutris/gui/config/common.py:113 +#: share/lutris/ui/lutris-window.ui:367 lutris/gui/config/common.py:98 #: lutris/gui/views/list.py:45 lutris/gui/views/list.py:159 msgid "Name" msgstr "Naam" @@ -159,27 +159,27 @@ msgstr "Alleen ge_ïnstalleerde games" msgid "Show _Hidden Games" msgstr "Verborgen s_pellen tonen" -#: share/lutris/ui/lutris-window.ui:485 +#: share/lutris/ui/lutris-window.ui:486 msgid "Show Side _Panel" msgstr "Zij_paneel tonen" -#: share/lutris/ui/lutris-window.ui:500 +#: share/lutris/ui/lutris-window.ui:501 msgid "Add games" msgstr "Games toevoegen" -#: share/lutris/ui/lutris-window.ui:514 +#: share/lutris/ui/lutris-window.ui:515 msgid "Preferences" msgstr "Voorkeuren" -#: share/lutris/ui/lutris-window.ui:539 +#: share/lutris/ui/lutris-window.ui:540 msgid "Discord" msgstr "Discord" -#: share/lutris/ui/lutris-window.ui:553 +#: share/lutris/ui/lutris-window.ui:554 msgid "Lutris forums" msgstr "Lutris-forum" -#: share/lutris/ui/lutris-window.ui:567 +#: share/lutris/ui/lutris-window.ui:568 msgid "Make a donation" msgstr "Doneren" @@ -194,6 +194,7 @@ msgstr "" "systeem:\n" "{libs}" +#. Local services don't show an install dialog, they can be launched directly #: lutris/game_actions.py:60 lutris/gui/widgets/game_bar.py:201 #: lutris/gui/widgets/game_bar.py:215 msgid "Play" @@ -203,7 +204,7 @@ msgstr "Spelen" msgid "Stop" msgstr "Stoppen" -#: lutris/game_actions.py:62 lutris/gui/dialogs/runner_install.py:193 +#: lutris/game_actions.py:62 lutris/gui/dialogs/runner_install.py:194 #: lutris/gui/installer/script_box.py:62 lutris/gui/widgets/game_bar.py:210 msgid "Install" msgstr "Installeren" @@ -244,7 +245,7 @@ msgstr "Script uitvoeren" msgid "Browse files" msgstr "Bestanden verkennen" -#: lutris/game_actions.py:75 lutris/gui/installerwindow.py:178 +#: lutris/game_actions.py:75 lutris/gui/installerwindow.py:180 msgid "Create desktop shortcut" msgstr "Bureaubladsnelkoppeling maken" @@ -252,7 +253,7 @@ msgstr "Bureaubladsnelkoppeling maken" msgid "Delete desktop shortcut" msgstr "Bureaubladsnelkoppeling verwijderen" -#: lutris/game_actions.py:85 lutris/gui/installerwindow.py:182 +#: lutris/game_actions.py:85 lutris/gui/installerwindow.py:184 msgid "Create application menu shortcut" msgstr "Snelkoppeling maken in programmamenu" @@ -260,7 +261,7 @@ msgstr "Snelkoppeling maken in programmamenu" msgid "Delete application menu shortcut" msgstr "Snelkoppeling verwijderen uit programmamenu" -#: lutris/game_actions.py:95 lutris/gui/installerwindow.py:187 +#: lutris/game_actions.py:95 lutris/gui/installerwindow.py:189 msgid "Create steam shortcut" msgstr "Steam-snelkoppeling maken" @@ -288,11 +289,11 @@ msgstr "Verbergen in verzameling" msgid "Unhide game from library" msgstr "Tonen in verzameling" -#: lutris/game_actions.py:187 +#: lutris/game_actions.py:185 msgid "Log for {}" msgstr "Logboek van {}" -#: lutris/game_actions.py:222 +#: lutris/game_actions.py:220 #, python-format msgid "" "Do you wish to duplicate %s?\n" @@ -302,15 +303,15 @@ msgstr "" "Weet je zeker dat je %s wilt klonen?\n" "De instellingen worden gekloond, maar the gamebestanden niet." -#: lutris/game_actions.py:225 +#: lutris/game_actions.py:223 msgid "Duplicate game?" msgstr "Game klonen?" -#: lutris/game_actions.py:286 +#: lutris/game_actions.py:284 msgid "This game has no installation directory" msgstr "Deze game bevat geen installatiemap" -#: lutris/game_actions.py:290 +#: lutris/game_actions.py:288 #, python-format msgid "" "Can't open %s \n" @@ -319,67 +320,63 @@ msgstr "" "Kan %s niet openen\n" "De map bestaat niet." -#: lutris/game.py:178 +#: lutris/game.py:179 msgid "Error the runner is not installed" msgstr "Foutmelding: runner is niet geïnstalleerd" -#: lutris/game.py:180 +#: lutris/game.py:181 msgid "A bios file is required to run this game" msgstr "Deze game vereist een bios-bestand" -#: lutris/game.py:184 +#: lutris/game.py:185 msgid "The file {} could not be found" msgstr "‘{}’ is niet aangetroffen" -#: lutris/game.py:186 +#: lutris/game.py:187 msgid "" "This game has no executable set. The install process didn't finish properly." msgstr "" "Er is geen uitvoerbaar bestand ingesteld omdat het installatieproces " "onverwachts is afgebroken." -#: lutris/game.py:189 +#: lutris/game.py:190 #, python-format msgid "The file %s is not executable" msgstr "‘%s’ is niet uitvoerbaar" -#: lutris/game.py:191 +#: lutris/game.py:192 #, python-format msgid "The path '%s' is not set. please set it in the options." msgstr "‘%s’ is niet ingesteld. Stel deze locatie in in de opties." -#: lutris/game.py:193 +#: lutris/game.py:194 #, python-format msgid "Unhandled error: %s" msgstr "Onverwachte foutmelding: %s" -#: lutris/game.py:298 +#: lutris/game.py:299 msgid "Tried to launch a game that isn't installed." msgstr "Je probeerde een niet-geïnstalleerde game te starten." -#: lutris/game.py:301 +#: lutris/game.py:301 lutris/game.py:409 msgid "Invalid game configuration: Missing runner" msgstr "Ongeldige gameconfiguratie: runner ontbreekt" -#: lutris/game.py:306 -msgid "Runner not installed." -msgstr "De runner is niet geïnstalleerd." - -#: lutris/game.py:312 +#: lutris/game.py:310 msgid "Runtime currently updating" msgstr "Bezig met bijwerken van runtime" -#: lutris/game.py:312 +#: lutris/game.py:310 msgid "Game might not work as expected" msgstr "De game werkt mogelijk niet naar behoren" -#: lutris/game.py:345 +#: lutris/game.py:343 msgid "Unable to find Xephyr, install it or disable the Xephyr option" msgstr "" "Xephyr is niet aangetroffen. Installeer dit pakket of schakel de Xephyr-" "optie uit." -#: lutris/game.py:401 +#: lutris/game.py:390 #, python-format msgid "" "The selected terminal application could not be launched:\n" @@ -388,15 +385,17 @@ msgstr "" "Het geselecteerde terminalprogramma kan niet worden uitgevoerd:\n" "%s" -#: lutris/game.py:461 -msgid "An error prevented the game from running" -msgstr "Er is een fout opgetreden die het uitvoeren verhinderde" +#. The 'file' sort of gameplay_info cannot be made to use a configuration +#: lutris/game.py:426 +msgid "The runner could not find a command to apply the configuration to." +msgstr "" +"De runner kan geen opdracht vinden om de instellingen op toe te passen." -#: lutris/game.py:653 +#: lutris/game.py:636 msgid "Error lauching the game:\n" msgstr "De game kan niet worden gestart:\n" -#: lutris/game.py:745 +#: lutris/game.py:730 #, python-format msgid "" "Error: Missing shared library.\n" @@ -407,7 +406,7 @@ msgstr "" "\n" "%s" -#: lutris/game.py:751 +#: lutris/game.py:736 msgid "" "Error: A different Wine version is already using the same Wine prefix." msgstr "" @@ -458,6 +457,10 @@ msgstr "Stel een lokale game handmatig in" msgid "Add games to Lutris" msgstr "Voeg games toe aan Lutris" +#: lutris/gui/addgameswindow.py:126 +msgid "Search Lutris.net" +msgstr "Lutris.net doorzoeken" + #: lutris/gui/addgameswindow.py:149 msgid "Select folder to scan" msgstr "Kies een te doorzoeken map" @@ -480,26 +483,38 @@ msgstr "{total_count} resultaten - de eerste {count} worden getoond" msgid "Select setup file" msgstr "Kies een installatiebestand" +#: lutris/gui/addgameswindow.py:245 +msgid "Game name" +msgstr "Gamenaam" + #: lutris/gui/addgameswindow.py:249 msgid "Continue" msgstr "Doorgaan" +#: lutris/gui/addgameswindow.py:257 +msgid "Setup file" +msgstr "Installatiebestand" + +#: lutris/gui/addgameswindow.py:266 +msgid "Select the setup file" +msgstr "Kies een installatiebestand" + #: lutris/gui/addgameswindow.py:279 msgid "Select a Lutris installer" msgstr "Kies een Lutris-installatiebestand" -#: lutris/gui/application.py:87 +#: lutris/gui/application.py:88 msgid "" "Running Lutris as root is not recommended and may cause unexpected issues" msgstr "" "Door Lutris uit te voeren als root kunnen er onverwachte problemen optreden" -#: lutris/gui/application.py:97 +#: lutris/gui/application.py:98 msgid "Your Linux distribution is too old. Lutris won't function properly." msgstr "" "Je Linux-distributie is verouderd. Lutris zal niet naar behoren werken." -#: lutris/gui/application.py:102 +#: lutris/gui/application.py:103 msgid "" "Run a game directly by adding the parameter lutris:rungame/game-identifier.\n" "If several games share the same identifier you can use the numerical ID " @@ -514,116 +529,116 @@ msgstr "" "numerieke-id toevoegen.\n" "Installeer een game middels lutris:install/identificatie." -#: lutris/gui/application.py:115 +#: lutris/gui/application.py:116 msgid "Print the version of Lutris and exit" msgstr "Toon het versienummer en sluit af" -#: lutris/gui/application.py:123 +#: lutris/gui/application.py:124 msgid "Show debug messages" msgstr "Foutopsporingsberichten tonen" -#: lutris/gui/application.py:131 +#: lutris/gui/application.py:132 msgid "Install a game from a yml file" msgstr "Installeer een game middels een yml-bestand" -#: lutris/gui/application.py:139 +#: lutris/gui/application.py:140 msgid "Generate a bash script to run a game without the client" msgstr "Genereer een bash-script om games te starten zonder de client" -#: lutris/gui/application.py:147 +#: lutris/gui/application.py:148 msgid "Execute a program with the Lutris Runtime" msgstr "Voer een programma uit met de Lutris-runtime" -#: lutris/gui/application.py:155 +#: lutris/gui/application.py:156 msgid "List all games in database" msgstr "Alle games in databank tonen" -#: lutris/gui/application.py:163 +#: lutris/gui/application.py:164 msgid "Only list installed games" msgstr "Alleen geïnstalleerde games tonen" -#: lutris/gui/application.py:171 +#: lutris/gui/application.py:172 msgid "List available Steam games" msgstr "Beschikbare Steam-games tonen" -#: lutris/gui/application.py:179 +#: lutris/gui/application.py:180 msgid "List all known Steam library folders" msgstr "Alle bekende Steam-bibliotheekmappen tonen" -#: lutris/gui/application.py:187 +#: lutris/gui/application.py:188 msgid "List all known runners" msgstr "Alle bekende runners tonen" -#: lutris/gui/application.py:195 +#: lutris/gui/application.py:196 msgid "List all known Wine versions" msgstr "Alle bekende Wine-versies tonen" -#: lutris/gui/application.py:203 +#: lutris/gui/application.py:204 msgid "Install a Runner" msgstr "Runner installeren" -#: lutris/gui/application.py:211 +#: lutris/gui/application.py:212 msgid "Uninstall a Runner" msgstr "Runner verwijderen" -#: lutris/gui/application.py:219 +#: lutris/gui/application.py:220 msgid "Export a game" msgstr "Game exporteren" -#: lutris/gui/application.py:227 +#: lutris/gui/application.py:228 msgid "Import a game" msgstr "Game importeren" -#: lutris/gui/application.py:235 +#: lutris/gui/application.py:236 msgid "Destination path for export" msgstr "Exportlocatie" -#: lutris/gui/application.py:243 +#: lutris/gui/application.py:244 msgid "Display the list of games in JSON format" msgstr "Lijst met games tonen in json-opmaak" -#: lutris/gui/application.py:251 +#: lutris/gui/application.py:252 msgid "Reinstall game" msgstr "Game opnieuw installeren" -#: lutris/gui/application.py:254 +#: lutris/gui/application.py:255 msgid "Submit an issue" msgstr "Probleem melden" -#: lutris/gui/application.py:260 +#: lutris/gui/application.py:261 msgid "URI to open" msgstr "De te openen uri" -#: lutris/gui/application.py:489 +#: lutris/gui/application.py:483 #, python-format msgid "%s is not a valid URI" msgstr "%s is geen geldige uri" -#: lutris/gui/application.py:509 +#: lutris/gui/application.py:503 #, python-format msgid "Failed to download %s" msgstr "‘%s’ kan niet worden gedownload" -#: lutris/gui/application.py:517 +#: lutris/gui/application.py:511 #, python-brace-format msgid "download {url} to {file} started" msgstr "het downloaden van {url} naar {file} is gestart" -#: lutris/gui/application.py:528 +#: lutris/gui/application.py:522 #, python-format msgid "No such file: %s" msgstr "Bestand bestaat niet: %s" -#: lutris/gui/application.py:645 +#: lutris/gui/application.py:644 #, python-format msgid "There is no installer available for %s." msgstr "Er is geen installatiebestand van %s beschikbaar." -#: lutris/gui/application.py:655 +#: lutris/gui/application.py:654 msgid "No updates found" msgstr "Geen games aangetroffen" -#: lutris/gui/application.py:665 +#: lutris/gui/application.py:664 msgid "No DLC found" msgstr "Geen uitbreidingen aangetroffen" @@ -680,8 +695,8 @@ msgstr "Bestanden selecteren" msgid "_Add" msgstr "_Toevoegen" -#: lutris/gui/config/boxes.py:512 lutris/gui/dialogs/__init__.py:134 -#: lutris/gui/dialogs/__init__.py:161 lutris/gui/dialogs/issue.py:75 +#: lutris/gui/config/boxes.py:512 lutris/gui/dialogs/__init__.py:165 +#: lutris/gui/dialogs/__init__.py:192 lutris/gui/dialogs/issue.py:72 #: lutris/gui/widgets/common.py:98 #: lutris/gui/widgets/download_progress_box.py:47 msgid "_Cancel" @@ -715,79 +730,80 @@ msgstr "" msgid "Select a runner in the Game Info tab" msgstr "Kies een runner op het tabblad ‘Game-informatie’" -#: lutris/gui/config/common.py:109 +#: lutris/gui/config/common.py:94 msgid "Game info" msgstr "Game-informatie" -#: lutris/gui/config/common.py:124 +#: lutris/gui/config/common.py:110 msgid "Identifier" msgstr "Identificatie" -#: lutris/gui/config/common.py:133 lutris/gui/config/common.py:259 +#: lutris/gui/config/common.py:119 lutris/gui/config/common.py:245 msgid "Change" msgstr "Wijzigen" -#: lutris/gui/config/common.py:142 +#: lutris/gui/config/common.py:128 msgid "Directory" msgstr "Map" -#: lutris/gui/config/common.py:148 +#: lutris/gui/config/common.py:134 msgid "Move" msgstr "Verplaatsen" -#: lutris/gui/config/common.py:156 lutris/gui/views/list.py:47 +#: lutris/gui/config/common.py:142 lutris/gui/views/list.py:47 msgid "Runner" msgstr "Runner" -#: lutris/gui/config/common.py:177 +#: lutris/gui/config/common.py:163 msgid "Remove custom banner" msgstr "Aangepaste banier verwijderen" -#: lutris/gui/config/common.py:188 +#: lutris/gui/config/common.py:174 msgid "Remove custom icon" msgstr "Aangepast pictogram verwijderen" -#: lutris/gui/config/common.py:197 +#: lutris/gui/config/common.py:183 msgid "Release year" msgstr "Jaar van uitgave" -#: lutris/gui/config/common.py:240 +#: lutris/gui/config/common.py:226 msgid "Select a runner from the list" msgstr "Kies een runner uit de lijst" -#: lutris/gui/config/common.py:248 +#: lutris/gui/config/common.py:234 msgid "Apply" msgstr "Toepassen" -#: lutris/gui/config/common.py:296 +#: lutris/gui/config/common.py:282 msgid "Game options" msgstr "Game-opties" -#: lutris/gui/config/common.py:304 +#: lutris/gui/config/common.py:290 msgid "Runner options" msgstr "Runner-opties" -#: lutris/gui/config/common.py:312 +#: lutris/gui/config/common.py:298 msgid "System options" msgstr "Systeemopties" -#: lutris/gui/config/common.py:322 +#. Advanced settings checkbox +#: lutris/gui/config/common.py:308 msgid "Show advanced options" msgstr "Geavanceerde opties tonen" -#: lutris/gui/config/common.py:330 lutris/gui/dialogs/__init__.py:268 -#: lutris/gui/dialogs/runner_install.py:186 +#: lutris/gui/config/common.py:316 lutris/gui/dialogs/__init__.py:299 +#: lutris/gui/dialogs/runner_install.py:187 #: lutris/gui/dialogs/uninstall_game.py:60 #: lutris/gui/dialogs/uninstall_game.py:135 #: lutris/gui/widgets/download_progress_box.py:95 msgid "Cancel" msgstr "Annuleren" -#: lutris/gui/config/common.py:334 +#: lutris/gui/config/common.py:320 msgid "Save" msgstr "Opslaan" -#: lutris/gui/config/common.py:368 +#: lutris/gui/config/common.py:354 msgid "" "Are you sure you want to change the runner for this game ? This will reset " "the full configuration for this game and is not reversible." @@ -796,35 +812,35 @@ msgstr "" "de volledige configuratie van de game verwijderd. Dit kan niet ongedaan " "worden gemaakt." -#: lutris/gui/config/common.py:372 +#: lutris/gui/config/common.py:358 msgid "Confirm runner change" msgstr "Bevestigen" -#: lutris/gui/config/common.py:420 +#: lutris/gui/config/common.py:406 msgid "Runner not provided" msgstr "Geen runner opgegeven" -#: lutris/gui/config/common.py:423 +#: lutris/gui/config/common.py:409 msgid "Please fill in the name" msgstr "Voer de naam in" -#: lutris/gui/config/common.py:426 +#: lutris/gui/config/common.py:412 msgid "Steam AppID not provided" msgstr "Geen Steam AppId opgegeven" -#: lutris/gui/config/common.py:444 +#: lutris/gui/config/common.py:430 msgid "The following fields have invalid values: " msgstr "De volgende velden bevatten ongeldige waarden: " -#: lutris/gui/config/common.py:451 +#: lutris/gui/config/common.py:437 msgid "Current configuration is not valid, ignoring save request" msgstr "De huidige configuratie is ongeldig; het bewaarverzoek is genegeerd" -#: lutris/gui/config/common.py:486 +#: lutris/gui/config/common.py:472 msgid "Please choose a custom image" msgstr "Kies een aangepaste afbeelding" -#: lutris/gui/config/common.py:494 +#: lutris/gui/config/common.py:480 msgid "Images" msgstr "Afbeeldingen" @@ -841,9 +857,9 @@ msgstr "Venster minimaliseren na starten van een game" msgid "Hide text under icons (requires restart)" msgstr "Tekst onder pictogrammen verbergen (herstart vereist)" -#: lutris/gui/config/preferences_box.py:13 -msgid "Show Tray Icon (requires restart)" -msgstr "Systeemvakpictogram tonen (herstart vereist)" +#: lutris/gui/config/preferences_box.py:13 lutris/gui/config/sysinfo_box.py:13 +msgid "Show Tray Icon" +msgstr "Systeemvakpictogram tonen" #: lutris/gui/config/preferences_box.py:14 msgid "Use dark theme (requires dark theme variant for Gtk)" @@ -861,11 +877,11 @@ msgstr "WineGame-instellingen" msgid "Interface" msgstr "Vormgeving" -#: lutris/gui/config/preferences_dialog.py:27 lutris/gui/widgets/sidebar.py:271 +#: lutris/gui/config/preferences_dialog.py:27 lutris/gui/widgets/sidebar.py:272 msgid "Runners" msgstr "Runners" -#: lutris/gui/config/preferences_dialog.py:28 lutris/gui/widgets/sidebar.py:270 +#: lutris/gui/config/preferences_dialog.py:28 lutris/gui/widgets/sidebar.py:271 msgid "Sources" msgstr "Bronnen" @@ -877,7 +893,7 @@ msgstr "Hardware-informatie" msgid "Global options" msgstr "Algemene opties" -#: lutris/gui/config/runner_box.py:90 lutris/gui/widgets/sidebar.py:214 +#: lutris/gui/config/runner_box.py:92 lutris/gui/widgets/sidebar.py:214 #, python-format msgid "Manage %s versions" msgstr "%s-versies beheren" @@ -920,10 +936,6 @@ msgstr "" msgid "Hide text under icons" msgstr "Tekst onder pictogrammen verbergen" -#: lutris/gui/config/sysinfo_box.py:13 -msgid "Show Tray Icon" -msgstr "Systeemvakpictogram tonen" - #: lutris/gui/config/sysinfo_box.py:38 msgid "Copy to clipboard" msgstr "Kopiëren naar klembord" @@ -964,59 +976,59 @@ msgstr "Bezig met downloaden van bestand" msgid "Downloading %s" msgstr "Bezig met downloaden van %s" -#: lutris/gui/dialogs/__init__.py:133 lutris/gui/dialogs/__init__.py:160 -#: lutris/gui/dialogs/issue.py:74 lutris/gui/dialogs/runner_install.py:63 +#: lutris/gui/dialogs/__init__.py:164 lutris/gui/dialogs/__init__.py:191 +#: lutris/gui/dialogs/issue.py:71 lutris/gui/dialogs/runner_install.py:64 #: lutris/gui/widgets/common.py:98 msgid "_OK" msgstr "_Oké" -#: lutris/gui/dialogs/__init__.py:151 +#: lutris/gui/dialogs/__init__.py:182 msgid "Please choose a file" msgstr "Kies een bestand" -#: lutris/gui/dialogs/__init__.py:181 +#: lutris/gui/dialogs/__init__.py:212 msgid "Checking for runtime updates, please wait…" msgstr "Bezig met controleren op runtime-updates…" -#: lutris/gui/dialogs/__init__.py:212 +#: lutris/gui/dialogs/__init__.py:243 #, python-format msgid "%s is already installed" msgstr "%s is al geïnstalleerd" -#: lutris/gui/dialogs/__init__.py:221 +#: lutris/gui/dialogs/__init__.py:252 msgid "Launch game" msgstr "Game starten" -#: lutris/gui/dialogs/__init__.py:225 +#: lutris/gui/dialogs/__init__.py:256 msgid "Install the game again" msgstr "Game opnieuw installeren" -#: lutris/gui/dialogs/__init__.py:229 lutris/gui/dialogs/__init__.py:272 -#: lutris/gui/dialogs/__init__.py:360 +#: lutris/gui/dialogs/__init__.py:260 lutris/gui/dialogs/__init__.py:303 +#: lutris/gui/dialogs/__init__.py:391 msgid "OK" msgstr "Oké" -#: lutris/gui/dialogs/__init__.py:248 +#: lutris/gui/dialogs/__init__.py:279 msgid "Select game to launch" msgstr "Kies een te starten game" -#: lutris/gui/dialogs/__init__.py:333 +#: lutris/gui/dialogs/__init__.py:364 msgid "Login failed" msgstr "Inloggen mislukt" -#: lutris/gui/dialogs/__init__.py:344 +#: lutris/gui/dialogs/__init__.py:375 msgid "Install script for {}" msgstr "Installatiescript van {}" -#: lutris/gui/dialogs/__init__.py:396 +#: lutris/gui/dialogs/__init__.py:427 msgid "Do not display this message again." msgstr "Niet meer tonen" -#: lutris/gui/dialogs/__init__.py:417 +#: lutris/gui/dialogs/__init__.py:448 msgid "Wine is not installed on your system." msgstr "Wine is niet geïnstalleerd." -#: lutris/gui/dialogs/__init__.py:419 +#: lutris/gui/dialogs/__init__.py:450 msgid "" "Having Wine installed on your system guarantees that Wine builds from Lutris " "will have all required dependencies.\n" @@ -1030,16 +1042,16 @@ msgstr "" "Ga naar de Lutris-wiki (Engels) om te lezen hoe je Wine installeert." -#: lutris/gui/dialogs/__init__.py:445 +#: lutris/gui/dialogs/__init__.py:476 #, python-format msgid "Moving %s to %s..." msgstr "Bezig met verplaatsen van %s naar %s…" -#: lutris/gui/dialogs/issue.py:27 +#: lutris/gui/dialogs/issue.py:24 msgid "Submit an issue" msgstr "Probleem melden" -#: lutris/gui/dialogs/issue.py:32 +#: lutris/gui/dialogs/issue.py:29 msgid "" "Describe the problem you're having in the text box below. This information " "will be sent the Lutris team along with your system information. You can " @@ -1049,81 +1061,81 @@ msgstr "" "verstuurd naar het Lutris-team, tezamen met je systeeminformatie. Je kunt " "deze informatie ook lokaal opslaan." -#: lutris/gui/dialogs/issue.py:55 +#: lutris/gui/dialogs/issue.py:52 msgid "_Save" msgstr "Op_slaan" -#: lutris/gui/dialogs/issue.py:71 +#: lutris/gui/dialogs/issue.py:68 msgid "Select a location to save the issue" msgstr "Kies een locatie om het probleem in op te slaan" -#: lutris/gui/dialogs/issue.py:91 +#: lutris/gui/dialogs/issue.py:88 #, python-format msgid "Issue saved in %s" msgstr "Probleem opgeslagen in %s" -#: lutris/gui/dialogs/runner_install.py:29 +#: lutris/gui/dialogs/runner_install.py:30 #, python-format msgid "Showing games using %s" msgstr "Games die gebruikmaken van %s" -#: lutris/gui/dialogs/runner_install.py:71 +#: lutris/gui/dialogs/runner_install.py:72 #, python-format msgid "Waiting for response from %s" msgstr "Bezig met wachten op antwoord van %s" -#: lutris/gui/dialogs/runner_install.py:87 +#: lutris/gui/dialogs/runner_install.py:88 #, python-format msgid "Unable to get runner versions: %s" msgstr "De runner-versies kunnen niet worden opgehaald: %s" -#: lutris/gui/dialogs/runner_install.py:101 +#: lutris/gui/dialogs/runner_install.py:102 msgid "Unable to get runner versions from winegame.net" msgstr "De runner-versies kunnen niet worden opgehaald van winegame.net" -#: lutris/gui/dialogs/runner_install.py:108 +#: lutris/gui/dialogs/runner_install.py:109 #, python-format msgid "%s version management" msgstr "%s-versiebeheer" -#: lutris/gui/dialogs/runner_install.py:158 +#: lutris/gui/dialogs/runner_install.py:159 #, python-format msgid "_View %d game" msgid_plural "_View %d games" msgstr[0] "%d game to_nen" msgstr[1] "%d games to_nen" -#: lutris/gui/dialogs/runner_install.py:190 +#: lutris/gui/dialogs/runner_install.py:191 #: lutris/gui/dialogs/uninstall_game.py:34 msgid "Uninstall" msgstr "Deïnstalleren" -#: lutris/gui/dialogs/runner_install.py:214 +#: lutris/gui/dialogs/runner_install.py:215 msgid "Wine version usage" msgstr "Wine-versiegebruik" -#: lutris/gui/dialogs/runner_install.py:256 +#: lutris/gui/dialogs/runner_install.py:274 msgid "Do you want to cancel the download?" msgstr "Weet je zeker dat je het downloaden wilt afbreken?" -#: lutris/gui/dialogs/runner_install.py:257 +#: lutris/gui/dialogs/runner_install.py:275 msgid "Download starting" msgstr "Bezig met starten" -#: lutris/gui/dialogs/runner_install.py:307 +#: lutris/gui/dialogs/runner_install.py:325 #, python-format msgid "Version %s is not longer available" msgstr "Versie %s is niet meer beschikbaar." -#: lutris/gui/dialogs/runner_install.py:332 +#: lutris/gui/dialogs/runner_install.py:350 msgid "Downloading…" msgstr "Bezig met downloaden…" -#: lutris/gui/dialogs/runner_install.py:335 +#: lutris/gui/dialogs/runner_install.py:353 msgid "Extracting…" msgstr "Bezig met uitpakken…" -#: lutris/gui/dialogs/runner_install.py:377 +#: lutris/gui/dialogs/runner_install.py:395 msgid "Failed to retrieve the runner archive" msgstr "Kan het runner-archief niet ophalen" @@ -1150,7 +1162,7 @@ msgstr "Bezig met berekenen van omvang…" msgid "Content of %s are protected and will not be deleted." msgstr "De inhoud van %s is beveiligd en wordt daarom niet verwijderd." -#: lutris/gui/dialogs/uninstall_game.py:76 +#: lutris/gui/dialogs/uninstall_game.py:75 #, python-format msgid "Delete %s (%s)" msgstr "%s verwijderen (%s)" @@ -1192,107 +1204,119 @@ msgstr "" "Weet je zeker dat je %s wilt verwijderen uit je verzameling?\n" "Alle bijgehouden tijden worden eveneens gewist." -#: lutris/gui/dialogs/webconnect_dialog.py:92 +#: lutris/gui/dialogs/webconnect_dialog.py:103 msgid "Loading..." msgstr "Bezig met laden…" -#: lutris/gui/installer/file_box.py:95 +#: lutris/gui/installer/file_box.py:94 #, python-brace-format msgid "Steam game {appid}" msgstr "Steam-game {appid}" +#: lutris/gui/installer/file_box.py:108 +msgid "Download" +msgstr "Downloaden" + #: lutris/gui/installer/file_box.py:110 -#, python-brace-format -msgid "{file} on {host}" -msgstr "{file} op {host}" +msgid "Use Cache" +msgstr "Cache gebruiken" -#: lutris/gui/installer/file_box.py:187 +#: lutris/gui/installer/file_box.py:112 lutris/runners/steam.py:29 +#: lutris/services/steam.py:73 +msgid "Steam" +msgstr "Steam" + +#: lutris/gui/installer/file_box.py:113 +msgid "Select File" +msgstr "Bestand kiezen" + +#: lutris/gui/installer/file_box.py:174 msgid "Cache file for future installations" msgstr "Cachebestand voor toekomstige installaties" -#: lutris/gui/installer/file_box.py:206 +#: lutris/gui/installer/file_box.py:193 msgid "Source:" msgstr "Bron:" -#: lutris/gui/installerwindow.py:65 +#: lutris/gui/installerwindow.py:67 msgid "Cache" msgstr "Cache" -#: lutris/gui/installerwindow.py:76 +#: lutris/gui/installerwindow.py:78 msgid "Abort and revert the installation" msgstr "Afbreken en installatie terugdraaien" -#: lutris/gui/installerwindow.py:78 +#: lutris/gui/installerwindow.py:80 msgid "_Eject" msgstr "Uitw_erpen" -#: lutris/gui/installerwindow.py:79 +#: lutris/gui/installerwindow.py:81 msgid "_View source" msgstr "Bron _bekijken" -#: lutris/gui/installerwindow.py:80 +#: lutris/gui/installerwindow.py:82 msgid "_Install" msgstr "_Installeren" -#: lutris/gui/installerwindow.py:81 +#: lutris/gui/installerwindow.py:83 msgid "_Continue" msgstr "_Doorgaan" -#: lutris/gui/installerwindow.py:82 +#: lutris/gui/installerwindow.py:84 msgid "_Launch" msgstr "_Starten" -#: lutris/gui/installerwindow.py:83 +#: lutris/gui/installerwindow.py:85 msgid "_Close" msgstr "_Sluiten" -#: lutris/gui/installerwindow.py:122 +#: lutris/gui/installerwindow.py:124 #, python-format msgid "Missing field \"%s\" in install script" msgstr "Het veld ‘%s’ ontbreekt in het installatiescript" -#: lutris/gui/installerwindow.py:128 +#: lutris/gui/installerwindow.py:130 #, python-format msgid "Install %s" msgstr "%s installeren" -#: lutris/gui/installerwindow.py:162 +#: lutris/gui/installerwindow.py:164 #, python-format msgid "This game requires %s. Do you want to install it?" msgstr "Deze game is afhankelijk van %s. Wil je het installeren?" -#: lutris/gui/installerwindow.py:163 +#: lutris/gui/installerwindow.py:165 msgid "Missing dependency" msgstr "Ontbrekende afhankelijkheid" -#: lutris/gui/installerwindow.py:175 +#: lutris/gui/installerwindow.py:177 msgid "Installing {}" msgstr "Bezig met installeren van {}" -#: lutris/gui/installerwindow.py:196 +#: lutris/gui/installerwindow.py:198 msgid "Select installation directory" msgstr "Installatiemap kiezen" -#: lutris/gui/installerwindow.py:246 +#: lutris/gui/installerwindow.py:248 msgid "Autodetect" msgstr "Automatisch detecteren" -#: lutris/gui/installerwindow.py:252 +#: lutris/gui/installerwindow.py:254 msgid "Browse…" msgstr "Bladeren…" -#: lutris/gui/installerwindow.py:259 +#: lutris/gui/installerwindow.py:261 msgid "Select the folder where the disc is mounted" msgstr "Kies de map waarin de schijf is aangekoppeld" -#: lutris/gui/installerwindow.py:320 +#: lutris/gui/installerwindow.py:322 msgid "" "Please review the files needed for the installation then click 'Continue'" msgstr "" "Neem de voor installatie benodigde bestanden door en klik vervolgens op " "‘Doorgaan’" -#: lutris/gui/installerwindow.py:358 +#: lutris/gui/installerwindow.py:360 msgid "" "This game has extra content. \n" "Select which one you want and they will be available in the 'extras' folder " @@ -1302,44 +1326,75 @@ msgstr "" "Kies de inhoud die je wilt toevoegen aan de ‘extras’-map in de " "installatiemap." -#: lutris/gui/installerwindow.py:459 +#: lutris/gui/installerwindow.py:461 #, python-format msgid "Unable to get files: %s" msgstr "De bestanden kunnen niet worden opgehaald: %s" -#: lutris/gui/installerwindow.py:554 +#: lutris/gui/installerwindow.py:558 msgid "Remove game files" msgstr "Gamebestanden verwijderen" -#: lutris/gui/installerwindow.py:560 +#: lutris/gui/installerwindow.py:568 msgid "Are you sure you want to cancel the installation?" msgstr "Weet je zeker dat je de installatie wilt afbreken?" -#: lutris/gui/installerwindow.py:561 +#: lutris/gui/installerwindow.py:569 msgid "Cancel installation?" msgstr "Installatie afbreken?" -#: lutris/gui/lutriswindow.py:345 +#: lutris/gui/lutriswindow.py:344 #, python-format msgid "Connect your %s account to access your games" msgstr "Koppel je %s-account om toegang te krijgen tot je games" -#: lutris/gui/lutriswindow.py:416 +#: lutris/gui/lutriswindow.py:417 +#, python-format +msgid "Add a game matching '%s' to your favorites to see it here." +msgstr "" +"Voeg een game die overeenkomt met ‘%s’ toe aan je favorieten om hem hier te " +"tonen." + +#: lutris/gui/lutriswindow.py:420 +#, python-format +msgid "" +"No installed games matching '%s' found. Press Ctrl+I to show uninstalled " +"games." +msgstr "" +"Er zijn geen geïnstalleerde games die overeenkomen met ‘%s’. Druk op Ctrl+I " +"om verwijderde games te tonen." + +#. but not if missing! +#: lutris/gui/lutriswindow.py:422 +#, python-format +msgid "" +"No visible games matching '%s' found. Press Ctrl+H to show hidden games." +msgstr "" +"Er zijn geen games die overeenkomen met ‘%s’. Druk op Ctrl+H om verborgen " +"games te tonen." + +#: lutris/gui/lutriswindow.py:425 #, python-format msgid "No games matching '%s' found " msgstr "Er zijn geen games die overeenkomen met “%s” " -#: lutris/gui/lutriswindow.py:419 +#: lutris/gui/lutriswindow.py:428 msgid "Add games to your favorites to see them here." msgstr "Voeg games toe aan je favorieten om ze hier te tonen." -#: lutris/gui/lutriswindow.py:421 -msgid "No installed games found. Press Ctrl+H to show all games." +#: lutris/gui/lutriswindow.py:430 +msgid "No installed games found. Press Ctrl+I to show uninstalled games." msgstr "" -"Geen geïnstalleerde games aangetroffen. Druk op Ctrl+H om alle games te " -"tonen." +"Er zijn geen geïnstalleerde games aangetroffen. Druk op Ctrl+I om " +"verwijderde games te tonen." -#: lutris/gui/lutriswindow.py:430 +#. but not if missing! +#: lutris/gui/lutriswindow.py:432 +msgid "No visible games found. Press Ctrl+H to show hidden games." +msgstr "" +"Er zijn geen zichtbare games. Druk op Ctrl+H om verborgen games te tonen." + +#: lutris/gui/lutriswindow.py:440 msgid "No games found" msgstr "Geen games aangetroffen" @@ -1449,27 +1504,27 @@ msgstr "Koppelen" msgid "Manage Versions" msgstr "Versies beheren" -#: lutris/gui/widgets/sidebar.py:269 +#: lutris/gui/widgets/sidebar.py:270 msgid "Library" msgstr "Verzameling" -#: lutris/gui/widgets/sidebar.py:272 +#: lutris/gui/widgets/sidebar.py:273 msgid "Platforms" msgstr "Platformen" -#: lutris/gui/widgets/sidebar.py:316 lutris/util/system.py:27 +#: lutris/gui/widgets/sidebar.py:317 lutris/util/system.py:28 msgid "Games" msgstr "Games" -#: lutris/gui/widgets/sidebar.py:325 +#: lutris/gui/widgets/sidebar.py:326 msgid "Recent" msgstr "Recent" -#: lutris/gui/widgets/sidebar.py:334 +#: lutris/gui/widgets/sidebar.py:335 msgid "Favorites" msgstr "Favorieten" -#: lutris/gui/widgets/sidebar.py:342 +#: lutris/gui/widgets/sidebar.py:343 msgid "Running" msgstr "Actief" @@ -1488,8 +1543,8 @@ msgstr "" "Eén van de volgende oprachtregelopties is vereist om de {cmd}-opdracht uit " "te kunnen voeren: {params}" -#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:122 -#: lutris/installer/interpreter.py:145 +#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:128 +#: lutris/installer/interpreter.py:151 msgid " or " msgstr " of " @@ -1607,37 +1662,42 @@ msgstr "De opdracht is afgesloten met code %s" msgid "Wrong value for write_file mode: '%s'" msgstr "Onjuiste waarde van write_file-modus: ‘%s’" -#: lutris/installer/installer_file.py:26 +#: lutris/installer/installer_file.py:27 #, python-format msgid "missing field `url` for file `%s`" msgstr "Het veld ‘url’ ontbreekt in ‘%s’" -#: lutris/installer/installer_file.py:38 +#: lutris/installer/installer_file.py:46 #, python-format msgid "missing field `filename` in file `%s`" msgstr "Het veld ‘filename’ ontbreekt in ‘%s’" -#: lutris/installer/installer_file.py:176 +#: lutris/installer/installer_file.py:95 +#, python-brace-format +msgid "{file} on {host}" +msgstr "{file} op {host}" + +#: lutris/installer/installer_file.py:196 msgid "Invalid checksum, expected format (type:hash) " msgstr "Ongeldige controlesom. Verwacht: (type:hash) " -#: lutris/installer/installer_file.py:179 +#: lutris/installer/installer_file.py:199 msgid " checksum mismatch " msgstr " De controlesom komt niet overeen" -#: lutris/installer/installer.py:179 +#: lutris/installer/installer.py:177 msgid "Game config key must be a string" msgstr "De gameconfiguratiesleutel dient een tekenreeks te zijn" -#: lutris/installer/installer.py:228 +#: lutris/installer/installer.py:227 msgid "Invalid 'game' section" msgstr "Ongeldige ‘game’sectie" -#: lutris/installer/interpreter.py:52 +#: lutris/installer/interpreter.py:55 msgid "This installer doesn't have a 'script' section" msgstr "De installatiewizard bevat geen ‘script’sectie" -#: lutris/installer/interpreter.py:56 +#: lutris/installer/interpreter.py:59 msgid "" "Invalid script: \n" "{}" @@ -1645,38 +1705,38 @@ msgstr "" "Ongeldig script:\n" "{}" -#: lutris/installer/interpreter.py:122 lutris/installer/interpreter.py:125 +#: lutris/installer/interpreter.py:128 lutris/installer/interpreter.py:131 #, python-format msgid "This installer requires %s on your system" msgstr "Deze installatiewizard vereist %s" -#: lutris/installer/interpreter.py:138 +#: lutris/installer/interpreter.py:144 msgid "You need to install {} before" msgstr "Installeer eerst ‘{}’" -#: lutris/installer/interpreter.py:186 +#: lutris/installer/interpreter.py:191 msgid "Lutris does not have the necessary permissions to install to path:" msgstr "Lutris is niet bevoegd om de game te installeren in" -#: lutris/installer/interpreter.py:270 +#: lutris/installer/interpreter.py:275 #, python-format msgid "Invalid runner provided %s" msgstr "Ongeldige runner opgegeven bij %s" -#: lutris/installer/interpreter.py:296 +#: lutris/installer/interpreter.py:301 msgid "Installing game data" msgstr "Bezig met installeren van gamegegevens" -#: lutris/installer/interpreter.py:308 +#: lutris/installer/interpreter.py:313 msgid "Installer commands are not formatted correctly" msgstr "De installatie-opdrachten zijn onjuist opgemaakt" -#: lutris/installer/interpreter.py:340 +#: lutris/installer/interpreter.py:346 #, python-format msgid "The command \"%s\" does not exist." msgstr "De opdracht ‘%s’ bestaat niet." -#: lutris/installer/interpreter.py:356 +#: lutris/installer/interpreter.py:367 #, python-format msgid "" "The executable at path %s can't be found, please check the destination " @@ -1687,7 +1747,7 @@ msgstr "" "bestemming.\n" "Sommige onderdelen van het installatieproces zijn niet correct afgerond." -#: lutris/installer/interpreter.py:362 +#: lutris/installer/interpreter.py:373 msgid "Installation completed!" msgstr "Installatie voltooid!" @@ -1696,24 +1756,24 @@ msgstr "Installatie voltooid!" msgid "Malformed steam path: %s" msgstr "Ongeldige Steam-locatie: %s" -#: lutris/runners/atari800.py:19 +#: lutris/runners/atari800.py:17 msgid "Desktop resolution" msgstr "Bureaubladresolutie" -#: lutris/runners/atari800.py:25 +#: lutris/runners/atari800.py:22 msgid "Atari800" msgstr "Atari800" -#: lutris/runners/atari800.py:26 +#: lutris/runners/atari800.py:23 msgid "Atari 8bit computers" msgstr "Atari 8-bitcomputers" -#: lutris/runners/atari800.py:29 +#: lutris/runners/atari800.py:26 msgid "Atari 400, 800 and XL emulator" msgstr "Atari 400-, 800- en XL-emulator" -#: lutris/runners/atari800.py:41 lutris/runners/jzintv.py:19 -#: lutris/runners/libretro.py:74 lutris/runners/mame.py:78 +#: lutris/runners/atari800.py:38 lutris/runners/jzintv.py:19 +#: lutris/runners/libretro.py:73 lutris/runners/mame.py:78 #: lutris/runners/mednafen.py:57 lutris/runners/mupen64plus.py:20 #: lutris/runners/o2em.py:45 lutris/runners/openmsx.py:17 #: lutris/runners/osmose.py:21 lutris/runners/snes9x.py:27 @@ -1721,7 +1781,7 @@ msgstr "Atari 400-, 800- en XL-emulator" msgid "ROM file" msgstr "ROM-bestand" -#: lutris/runners/atari800.py:43 +#: lutris/runners/atari800.py:40 msgid "" "The game data, commonly called a ROM image. \n" "Supported formats: ATR, XFD, DCM, ATR.GZ, XFD.GZ and PRO." @@ -1729,11 +1789,11 @@ msgstr "" "De gamedata, ook wel bekend als rom.\n" "Ondersteunde rom-formaten: ATR, XFD, DCM, ATR.GZ, XFD.GZ en PRO." -#: lutris/runners/atari800.py:57 +#: lutris/runners/atari800.py:51 msgid "BIOS location" msgstr "BIOS-locatie" -#: lutris/runners/atari800.py:59 +#: lutris/runners/atari800.py:53 msgid "" "A folder containing the Atari 800 BIOS files.\n" "They are provided by Lutris so you shouldn't have to change this." @@ -1741,34 +1801,34 @@ msgstr "" "De map die de Atari 800-biosbestanden bevat.\n" "Deze worden aangeleverd door Lutris, dus dit zou je niet hoeven aanpassen." -#: lutris/runners/atari800.py:70 +#: lutris/runners/atari800.py:62 msgid "Emulate Atari 800" msgstr "Atari 800 emuleren" -#: lutris/runners/atari800.py:71 +#: lutris/runners/atari800.py:63 msgid "Emulate Atari 800 XL" msgstr "Atari 800 XL emuleren" -#: lutris/runners/atari800.py:72 +#: lutris/runners/atari800.py:64 msgid "Emulate Atari 320 XE (Compy Shop)" msgstr "Atari 320 XE (Compy Shop) emuleren" -#: lutris/runners/atari800.py:73 +#: lutris/runners/atari800.py:65 msgid "Emulate Atari 320 XE (Rambo)" msgstr "Atari 320 XE (Rambo) emuleren" -#: lutris/runners/atari800.py:74 +#: lutris/runners/atari800.py:66 msgid "Emulate Atari 5200" msgstr "Atari 5200 emuleren" -#: lutris/runners/atari800.py:79 lutris/runners/mame.py:83 +#: lutris/runners/atari800.py:69 lutris/runners/mame.py:83 #: lutris/runners/vice.py:88 msgid "Machine" msgstr "Machine" -#: lutris/runners/atari800.py:85 lutris/runners/easyrpg.py:144 +#: lutris/runners/atari800.py:75 lutris/runners/easyrpg.py:144 #: lutris/runners/hatari.py:72 lutris/runners/jzintv.py:43 -#: lutris/runners/libretro.py:94 lutris/runners/mame.py:157 +#: lutris/runners/libretro.py:93 lutris/runners/mame.py:157 #: lutris/runners/mednafen.py:74 lutris/runners/mupen64plus.py:28 #: lutris/runners/o2em.py:75 lutris/runners/osmose.py:34 #: lutris/runners/pcsx2.py:26 lutris/runners/pico8.py:38 @@ -1778,11 +1838,11 @@ msgstr "Machine" msgid "Fullscreen" msgstr "Beeldvullend" -#: lutris/runners/atari800.py:92 +#: lutris/runners/atari800.py:82 msgid "Fullscreen resolution" msgstr "Beeldvullende resolutie" -#: lutris/runners/atari800.py:104 +#: lutris/runners/atari800.py:94 msgid "Could not download Atari 800 BIOS archive" msgstr "Het Atari800-biosarchief kan niet worden gedownload" @@ -1875,8 +1935,8 @@ msgstr "Opdrachtregelopties" msgid "Command line arguments used when launching DOSBox" msgstr "De tezamen met DOSBox uit te voeren opdrachtregelopties" -#: lutris/runners/dosbox.py:51 lutris/runners/linux.py:39 -#: lutris/runners/wine.py:61 +#: lutris/runners/dosbox.py:51 lutris/runners/flatpak.py:74 +#: lutris/runners/linux.py:39 lutris/runners/wine.py:61 msgid "Working directory" msgstr "Werkmap" @@ -1929,10 +1989,10 @@ msgstr "EasyRPG" msgid "Runs RPG Maker 2000/2003 games" msgstr "Speel games die gemaakt zijn met RPG Maker 2000/2003" -#: lutris/runners/easyrpg.py:12 lutris/runners/linux.py:14 -#: lutris/runners/linux.py:16 lutris/runners/residualvm.py:15 -#: lutris/runners/scummvm.py:14 lutris/runners/steam.py:43 -#: lutris/runners/zdoom.py:15 +#: lutris/runners/easyrpg.py:12 lutris/runners/flatpak.py:18 +#: lutris/runners/linux.py:14 lutris/runners/linux.py:16 +#: lutris/runners/residualvm.py:15 lutris/runners/scummvm.py:14 +#: lutris/runners/steam.py:30 lutris/runners/zdoom.py:15 msgid "Linux" msgstr "Linux" @@ -1965,9 +2025,9 @@ msgstr "Aandrijving" msgid "Disable auto detection of the simulated engine." msgstr "Schakel automatische detectie van de gesimuleerde aandrijving uit." -#: lutris/runners/easyrpg.py:41 lutris/runners/fsuae.py:50 +#: lutris/runners/easyrpg.py:41 lutris/runners/fsuae.py:155 #: lutris/runners/mame.py:173 lutris/runners/wine.py:82 -#: lutris/runners/wine.py:417 +#: lutris/runners/wine.py:416 msgid "Auto" msgstr "Automatisch" @@ -2154,7 +2214,7 @@ msgstr "" "Schakel uit om verticale synchronisatie uit te schakelen het fps-limiet aan " "te houden. VSync wordt mogelijk niet op alle platformen ondersteund." -#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:315 +#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:345 msgid "FPS limit" msgstr "FPS-limiet" @@ -2168,7 +2228,7 @@ msgstr "" "Stel in op ‘0’ om uit te schakelen. Deze optie wordt mogelijk niet op alle " "platformen ondersteund." -#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:443 +#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:442 msgid "Show FPS" msgstr "FPS-informatie tonen" @@ -2177,7 +2237,7 @@ msgid "Enable frames per second counter." msgstr "Schakel de frames-per-secondeteller in." #: lutris/runners/easyrpg.py:209 lutris/runners/mednafen.py:85 -#: lutris/runners/wine.py:440 lutris/sysoptions.py:302 +#: lutris/runners/wine.py:439 msgid "Disabled" msgstr "Uitgeschakeld" @@ -2254,196 +2314,268 @@ msgstr "Geen gamemap opgegeven" msgid "The directory {} could not be found" msgstr "‘{}’ is niet aangetroffen" -#: lutris/runners/fsuae.py:11 -msgid "FS-UAE" -msgstr "FS-UAE" +#: lutris/runners/flatpak.py:17 +msgid "Runs Flatpak applications" +msgstr "Flatpakprogramma's uitvoeren" -#: lutris/runners/fsuae.py:12 -msgid "Amiga emulator" -msgstr "Amiga-emulator" +#: lutris/runners/flatpak.py:20 +msgid "Flatpak" +msgstr "Flatpak" + +#: lutris/runners/flatpak.py:33 lutris/runners/steam.py:35 +msgid "Application ID" +msgstr "Programma-id" + +#: lutris/runners/flatpak.py:34 +msgid "The application's unique three-part identifier (tld.domain.app)." +msgstr "De driedelige id-code van het programma (tld.domein.app)." + +#: lutris/runners/flatpak.py:39 +msgid "Architecture" +msgstr "Architectuur" + +#: lutris/runners/flatpak.py:40 +msgid "" +"The architecture to run. See flatpak --supported-arches for architectures " +"supported by the host." +msgstr "" +"De te gebruiken architectuur. Zie flatpak --supported-arches voor de door de " +"host ondersteunde architecturen." + +#: lutris/runners/flatpak.py:47 +msgid "Branch" +msgstr "Afsplitsing" + +#: lutris/runners/flatpak.py:48 +msgid "The branch to use." +msgstr "De te gebruiken afsplitsing." + +#: lutris/runners/flatpak.py:54 +msgid "Install type" +msgstr "Installatietype" + +#: lutris/runners/flatpak.py:55 +msgid "Can be system or user." +msgstr "Kan systeem of gebruiker zijn." + +#: lutris/runners/flatpak.py:61 +msgid "Args" +msgstr "Opdrachtregelopties" + +#: lutris/runners/flatpak.py:62 +msgid "Arguments to be passed to the application." +msgstr "De opdrachtregelopties die het programma dient te gebruiken." + +#: lutris/runners/flatpak.py:67 +msgid "Command" +msgstr "Opdracht" + +#: lutris/runners/flatpak.py:68 +msgid "" +"The command to run instead of the one listed in the application metadata." +msgstr "" +"De opdracht die dient te worden uitgevoerd in plaats van die in de " +"metagegevens." + +#: lutris/runners/flatpak.py:75 +msgid "" +"The directory to run the command in. Note that this must be a directory " +"inside the sandbox." +msgstr "" +"De map waarin de opdracht dient te worden uitgevoerd. Let op: dit dient een " +"map binnen de sandbox te zijn." + +#: lutris/runners/flatpak.py:82 lutris/sysoptions.py:449 +msgid "Environment variables" +msgstr "Omgevingsvariabelen" + +#: lutris/runners/flatpak.py:83 +msgid "" +"Set an environment variable in the application. This overrides to the " +"Context section from the application metadata." +msgstr "" +"Stel de omgevingsvariabelen van het programma in. Deze overschrijven de " +"contextsectie in de metagegevens." + +#: lutris/runners/flatpak.py:97 +msgid "" +"Flatpak installation is not handled by Lutris.\n" +"Install Steam with the package provided by your distribution." +msgstr "" +"De Flatpak-installatie wordt niet afgehandeld door Lutris.\n" +"Installeer Steam middels het door je distributie geleverde pakket." -#: lutris/runners/fsuae.py:14 lutris/runners/fsuae.py:25 +#: lutris/runners/fsuae.py:11 msgid "Amiga 500" msgstr "Amiga 500" -#: lutris/runners/fsuae.py:15 +#: lutris/runners/fsuae.py:19 msgid "Amiga 500+" msgstr "Amiga 500+" -#: lutris/runners/fsuae.py:16 +#: lutris/runners/fsuae.py:25 msgid "Amiga 600" msgstr "Amiga 600" -#: lutris/runners/fsuae.py:17 -msgid "Amiga 1000" -msgstr "Amiga 1000" - -#: lutris/runners/fsuae.py:18 lutris/runners/fsuae.py:19 +#: lutris/runners/fsuae.py:31 msgid "Amiga 1200" msgstr "Amiga 1200" -#: lutris/runners/fsuae.py:20 +#: lutris/runners/fsuae.py:37 +#| msgid "Amiga 1000" +msgid "Amiga 3000" +msgstr "Amiga 3000" + +#: lutris/runners/fsuae.py:43 msgid "Amiga 4000" msgstr "Amiga 4000" -#: lutris/runners/fsuae.py:21 lutris/runners/fsuae.py:32 +#: lutris/runners/fsuae.py:50 +msgid "Amiga 1000" +msgstr "Amiga 1000" + +#: lutris/runners/fsuae.py:56 msgid "Amiga CD32" msgstr "Amiga CD32" -#: lutris/runners/fsuae.py:22 lutris/runners/fsuae.py:33 +#: lutris/runners/fsuae.py:65 msgid "Commodore CDTV" msgstr "Commodore CDTV" -#: lutris/runners/fsuae.py:26 -msgid "Amiga 500+ with 1 MB chip RAM" -msgstr "Amiga 500+ met 1 MB chip-ram" - -#: lutris/runners/fsuae.py:27 -msgid "Amiga 600 with 1 MB chip RAM" -msgstr "Amiga 600 met 1 MB chip-ram" - -#: lutris/runners/fsuae.py:28 -msgid "Amiga 1000 with 512 KB chip RAM" -msgstr "Amiga 1000 met 512 KB chip-ram" - -#: lutris/runners/fsuae.py:29 -msgid "Amiga 1200 with 2 MB chip RAM" -msgstr "Amiga 1200 met 2 MB chip-ram" - -#: lutris/runners/fsuae.py:30 -msgid "Amiga 1200 but with 68020 processor" -msgstr "Amiga 1200 met 68020-processor" +#: lutris/runners/fsuae.py:124 +msgid "FS-UAE" +msgstr "FS-UAE" -#: lutris/runners/fsuae.py:31 -msgid "Amiga 4000 with 2 MB chip RAM and a 68040" -msgstr "Amiga 4000 met 2 MB chip-ram en een 68040" +#: lutris/runners/fsuae.py:125 +msgid "Amiga emulator" +msgstr "Amiga-emulator" -#: lutris/runners/fsuae.py:36 +#: lutris/runners/fsuae.py:141 msgid "68000" msgstr "68000" -#: lutris/runners/fsuae.py:37 +#: lutris/runners/fsuae.py:142 msgid "68010" msgstr "68010" -#: lutris/runners/fsuae.py:38 +#: lutris/runners/fsuae.py:143 msgid "68020 with 24-bit addressing" msgstr "68020 met 24-bit addressering" -#: lutris/runners/fsuae.py:39 +#: lutris/runners/fsuae.py:144 msgid "68020" msgstr "68020" -#: lutris/runners/fsuae.py:40 +#: lutris/runners/fsuae.py:145 msgid "68030 without internal MMU" msgstr "68030 zonder interne MMU" -#: lutris/runners/fsuae.py:41 +#: lutris/runners/fsuae.py:146 msgid "68030" msgstr "68030" -#: lutris/runners/fsuae.py:42 +#: lutris/runners/fsuae.py:147 msgid "68040 without internal FPU and MMU" msgstr "68040 zonder interne FPU en MMU" -#: lutris/runners/fsuae.py:43 +#: lutris/runners/fsuae.py:148 msgid "68040 without internal FPU" msgstr "68040 zonder interne FPU" -#: lutris/runners/fsuae.py:44 +#: lutris/runners/fsuae.py:149 msgid "68040 without internal MMU" msgstr "68040 zonder interne MMU" -#: lutris/runners/fsuae.py:45 +#: lutris/runners/fsuae.py:150 msgid "68040" msgstr "68040" -#: lutris/runners/fsuae.py:46 +#: lutris/runners/fsuae.py:151 msgid "68060 without internal FPU and MMU" msgstr "68060 zonder interne FPU en MMU" -#: lutris/runners/fsuae.py:47 +#: lutris/runners/fsuae.py:152 msgid "68060 without internal FPU" msgstr "68060 zonder interne FPU" -#: lutris/runners/fsuae.py:48 +#: lutris/runners/fsuae.py:153 msgid "68060 without internal MMU" msgstr "68060 zonder interne MMU" -#: lutris/runners/fsuae.py:49 +#: lutris/runners/fsuae.py:154 msgid "68060" msgstr "68060" -#: lutris/runners/fsuae.py:53 lutris/runners/fsuae.py:60 -#: lutris/runners/fsuae.py:94 +#: lutris/runners/fsuae.py:158 lutris/runners/fsuae.py:165 +#: lutris/runners/fsuae.py:199 msgid "0" msgstr "0" -#: lutris/runners/fsuae.py:54 lutris/runners/fsuae.py:61 -#: lutris/runners/fsuae.py:95 +#: lutris/runners/fsuae.py:159 lutris/runners/fsuae.py:166 +#: lutris/runners/fsuae.py:200 msgid "1 MB" msgstr "1 MB" -#: lutris/runners/fsuae.py:55 lutris/runners/fsuae.py:62 -#: lutris/runners/fsuae.py:96 +#: lutris/runners/fsuae.py:160 lutris/runners/fsuae.py:167 +#: lutris/runners/fsuae.py:201 msgid "2 MB" msgstr "2 MB" -#: lutris/runners/fsuae.py:56 lutris/runners/fsuae.py:63 -#: lutris/runners/fsuae.py:97 +#: lutris/runners/fsuae.py:161 lutris/runners/fsuae.py:168 +#: lutris/runners/fsuae.py:202 msgid "4 MB" msgstr "4 MB" -#: lutris/runners/fsuae.py:57 lutris/runners/fsuae.py:64 -#: lutris/runners/fsuae.py:98 +#: lutris/runners/fsuae.py:162 lutris/runners/fsuae.py:169 +#: lutris/runners/fsuae.py:203 msgid "8 MB" msgstr "8 MB" -#: lutris/runners/fsuae.py:65 lutris/runners/fsuae.py:99 +#: lutris/runners/fsuae.py:170 lutris/runners/fsuae.py:204 msgid "16 MB" msgstr "16 MB" -#: lutris/runners/fsuae.py:66 lutris/runners/fsuae.py:100 +#: lutris/runners/fsuae.py:171 lutris/runners/fsuae.py:205 msgid "32 MB" msgstr "32 MB" -#: lutris/runners/fsuae.py:67 lutris/runners/fsuae.py:101 +#: lutris/runners/fsuae.py:172 lutris/runners/fsuae.py:206 msgid "64 MB" msgstr "64 MB" -#: lutris/runners/fsuae.py:68 lutris/runners/fsuae.py:102 +#: lutris/runners/fsuae.py:173 lutris/runners/fsuae.py:207 msgid "128 MB" msgstr "128 MB" -#: lutris/runners/fsuae.py:69 lutris/runners/fsuae.py:103 +#: lutris/runners/fsuae.py:174 lutris/runners/fsuae.py:208 msgid "256 MB" msgstr "256 MB" -#: lutris/runners/fsuae.py:70 +#: lutris/runners/fsuae.py:175 msgid "384 MB" msgstr "384 MB" -#: lutris/runners/fsuae.py:71 +#: lutris/runners/fsuae.py:176 msgid "512 MB" msgstr "512 MB" -#: lutris/runners/fsuae.py:72 +#: lutris/runners/fsuae.py:177 msgid "768 MB" msgstr "768 MB" -#: lutris/runners/fsuae.py:73 +#: lutris/runners/fsuae.py:178 msgid "1 GB" msgstr "1 GB" -#: lutris/runners/fsuae.py:106 +#: lutris/runners/fsuae.py:211 msgid "Turbo" msgstr "Turbo" -#: lutris/runners/fsuae.py:117 +#: lutris/runners/fsuae.py:222 msgid "Boot disk" msgstr "Opstartschijf" -#: lutris/runners/fsuae.py:120 +#: lutris/runners/fsuae.py:225 msgid "" "The main floppy disk file with the game data. \n" "FS-UAE supports floppy images in multiple file formats: ADF, IPF, DMS are " @@ -2459,35 +2591,35 @@ msgstr "" "Bestanden die eindigen op '.hdf' worden aangekoppeld als harde schijven. ISO-" "bestanden kunnen worden gebruikt voor Amiga CD32 en CDTV." -#: lutris/runners/fsuae.py:130 +#: lutris/runners/fsuae.py:235 msgid "Additionnal floppies" msgstr "Aanvullende diskettes" -#: lutris/runners/fsuae.py:132 +#: lutris/runners/fsuae.py:237 msgid "The additional floppy disk image(s)." msgstr "De aanvullende diskette(s)." -#: lutris/runners/fsuae.py:135 +#: lutris/runners/fsuae.py:240 msgid "CD-ROM image" msgstr "CD-ROM-schijfkopie" -#: lutris/runners/fsuae.py:137 +#: lutris/runners/fsuae.py:242 msgid "CD-ROM image to use on non CD32/CDTV models" msgstr "De te gebruiken cd-rom-schijfkopie voor niet-CD32/CDTV-modellen" -#: lutris/runners/fsuae.py:144 +#: lutris/runners/fsuae.py:249 msgid "Amiga model" msgstr "Amiga-model" -#: lutris/runners/fsuae.py:148 +#: lutris/runners/fsuae.py:253 msgid "Specify the Amiga model you want to emulate." msgstr "Kies het te emuleren Amiga-model." -#: lutris/runners/fsuae.py:152 +#: lutris/runners/fsuae.py:257 msgid "Kickstart ROMs location" msgstr "Kickstart-romlocatie" -#: lutris/runners/fsuae.py:155 +#: lutris/runners/fsuae.py:260 msgid "" "Choose the folder containing original Amiga Kickstart ROMs. Refer to FS-UAE " "documentation to find how to acquire them. Without these, FS-UAE uses a " @@ -2497,23 +2629,23 @@ msgstr "" "UAE-documentatie om ze te vinden. Zonder deze roms gebruikt FS-UAE een " "meegeleverde vervangende rom, welke minder compatibel is met Amiga-software." -#: lutris/runners/fsuae.py:164 +#: lutris/runners/fsuae.py:269 msgid "Extended Kickstart location" msgstr "Uitgebreide Kickstart-locatie" -#: lutris/runners/fsuae.py:167 +#: lutris/runners/fsuae.py:272 msgid "Location of extended Kickstart used for CD32" msgstr "Locatie van de uitgebreide Kickstart, zoals gebruikt door CD32" -#: lutris/runners/fsuae.py:171 +#: lutris/runners/fsuae.py:276 msgid "Fullscreen (F12 + S to switch)" msgstr "Beeldvullend (druk op F12 + s om te schakelen)" -#: lutris/runners/fsuae.py:177 lutris/runners/o2em.py:81 +#: lutris/runners/fsuae.py:282 lutris/runners/o2em.py:81 msgid "Scanlines display style" msgstr "Weergavestijl van scanlijnen" -#: lutris/runners/fsuae.py:180 lutris/runners/o2em.py:83 +#: lutris/runners/fsuae.py:285 lutris/runners/o2em.py:83 msgid "" "Activates a display filter adding scanlines to imitate the displays of " "yesteryear." @@ -2521,11 +2653,11 @@ msgstr "" "Schakelt een filter in dat scanlijnen toont om prehistorische schermen na te " "bootsen." -#: lutris/runners/fsuae.py:185 +#: lutris/runners/fsuae.py:290 msgid "CPU" msgstr "CPU" -#: lutris/runners/fsuae.py:190 +#: lutris/runners/fsuae.py:295 msgid "" "Use this option to override the CPU model in the emulated Amiga. All Amiga " "models imply a default CPU model, so you only need to use this option if you " @@ -2535,19 +2667,19 @@ msgstr "" "Amiga. Alle Amiga-modellen gebruiken een standaard cpu-model, dus gebruik " "deze optie niet te allen tijde." -#: lutris/runners/fsuae.py:196 +#: lutris/runners/fsuae.py:301 msgid "Fast Memory" msgstr "Snel geheugen" -#: lutris/runners/fsuae.py:201 +#: lutris/runners/fsuae.py:306 msgid "Specify how much Fast Memory the Amiga model should have." msgstr "Geef aan hoeveel snel geheugen het Amiga-model moet hebben." -#: lutris/runners/fsuae.py:205 +#: lutris/runners/fsuae.py:310 msgid "Zorro III RAM" msgstr "Zorro III-werkgeheugen" -#: lutris/runners/fsuae.py:210 +#: lutris/runners/fsuae.py:315 msgid "" "Override the amount of Zorro III Fast memory, specified in KB. Must be a " "multiple of 1024. The default value depends on [amiga_model]. Requires a " @@ -2558,11 +2690,11 @@ msgstr "" "van [amiga_model]. Een processor met een 32-bit adresseerbare bus is vereist " "(bijv. het A1200/020-model)." -#: lutris/runners/fsuae.py:216 +#: lutris/runners/fsuae.py:321 msgid "Floppy Drive Volume" msgstr "Diskettestation" -#: lutris/runners/fsuae.py:221 +#: lutris/runners/fsuae.py:326 msgid "" "Set volume to 0 to disable floppy drive clicks when the drive is empty. Max " "volume is 100." @@ -2570,11 +2702,11 @@ msgstr "" "Stel in op 0 om diskettekliks uit te schakelen als de schijflade leeg is. " "Max. 100 toegestaan." -#: lutris/runners/fsuae.py:226 +#: lutris/runners/fsuae.py:331 msgid "Floppy Drive Speed" msgstr "Diskettesnelheid" -#: lutris/runners/fsuae.py:232 +#: lutris/runners/fsuae.py:337 msgid "" "Set the speed of the emulated floppy drives, in percent. For example, you " "can specify 800 to get an 8x increase in speed. Use 0 to specify turbo mode. " @@ -2586,11 +2718,11 @@ msgstr "" "specificeren. Turbomodus leidt tot het onmiddellijk afronden van " "diskettehandelingen. Dit is op de meeste modellen 100." -#: lutris/runners/fsuae.py:240 +#: lutris/runners/fsuae.py:345 msgid "Graphics Card" msgstr "Grafische kaart" -#: lutris/runners/fsuae.py:246 +#: lutris/runners/fsuae.py:351 msgid "" "Use this option to enable a graphics card. This option is none by default, " "in which case only chipset graphics (OCS/ECS/AGA) support is available." @@ -2599,11 +2731,11 @@ msgstr "" "standaard op ‘geen’, waardoor alleen grafische chipseteigenschappen (OCS/ECS/" "AGA) beschikbaar zijn." -#: lutris/runners/fsuae.py:252 +#: lutris/runners/fsuae.py:357 msgid "Graphics Card RAM" msgstr "RAM-geheugen van grafische kaart" -#: lutris/runners/fsuae.py:258 +#: lutris/runners/fsuae.py:363 msgid "" "Override the amount of graphics memory on the graphics card. The 0 MB option " "is not really valid, but exists for user interface reasons." @@ -2611,15 +2743,15 @@ msgstr "" "Dwing het geheugen van de grafische kaart af. De optie ‘0 MB’ is ongeldig, " "maar bestaat omwille van gebruikersomgevingsredenen." -#: lutris/runners/fsuae.py:264 +#: lutris/runners/fsuae.py:369 msgid "JIT Compiler" msgstr "JIT-compilatie" -#: lutris/runners/fsuae.py:271 +#: lutris/runners/fsuae.py:376 msgid "Feral GameMode" msgstr "Feral GameMode" -#: lutris/runners/fsuae.py:275 +#: lutris/runners/fsuae.py:380 msgid "" "Automatically uses Feral GameMode daemon if available. Set to true to " "disable the feature." @@ -2627,11 +2759,11 @@ msgstr "" "Gebruikt automatisch Feral GameMode als deze beschikbaar is. Kies ‘true’ om " "uit te schakelen." -#: lutris/runners/fsuae.py:280 +#: lutris/runners/fsuae.py:385 msgid "CPU governor warning" msgstr "CPU-governorwaarschuwing" -#: lutris/runners/fsuae.py:285 +#: lutris/runners/fsuae.py:390 msgid "" "Warn if running with a CPU governor other than performance. Set to true to " "disable the warning." @@ -2639,7 +2771,7 @@ msgstr "" "Toon een waarschuwing als de cpu-governor is ingesteld op een andere waarde " "dan ‘performance’. Kies ‘true’ om uit te schakelen." -#: lutris/runners/fsuae.py:290 +#: lutris/runners/fsuae.py:395 msgid "UAE bsdsocket.library" msgstr "UAE bsdsocket.library" @@ -2800,31 +2932,31 @@ msgstr "" msgid "Resolution" msgstr "Resolutie" -#: lutris/runners/libretro.py:65 +#: lutris/runners/libretro.py:64 msgid "Libretro" msgstr "Libretro" -#: lutris/runners/libretro.py:66 +#: lutris/runners/libretro.py:65 msgid "Multi-system emulator" msgstr "Emulator van meerdere systemen" -#: lutris/runners/libretro.py:79 +#: lutris/runners/libretro.py:78 msgid "Core" msgstr "Kern" -#: lutris/runners/libretro.py:88 lutris/runners/zdoom.py:87 +#: lutris/runners/libretro.py:87 lutris/runners/zdoom.py:87 msgid "Config file" msgstr "Configuratiebestand" -#: lutris/runners/libretro.py:100 +#: lutris/runners/libretro.py:99 msgid "Verbose logging" msgstr "Uitgebreid logboek aanleggen" -#: lutris/runners/libretro.py:273 +#: lutris/runners/libretro.py:270 msgid "No core has been selected for this game" msgstr "Geen kern gekozen voor deze game" -#: lutris/runners/libretro.py:284 +#: lutris/runners/libretro.py:281 msgid "No game file specified" msgstr "Geen gamebestand opgegeven" @@ -2841,8 +2973,8 @@ msgid "The game's main executable file" msgstr "Het globale uitvoerbare bestand" #: lutris/runners/linux.py:30 lutris/runners/mame.py:124 -#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:60 -#: lutris/runners/steam.py:122 lutris/runners/wine.py:54 +#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:47 +#: lutris/runners/steam.py:99 lutris/runners/wine.py:54 #: lutris/runners/zdoom.py:27 msgid "Arguments" msgstr "Opdrachtregelopties" @@ -3339,7 +3471,7 @@ msgstr "Phillips Videopac+" msgid "Brandt Jopac" msgstr "Brandt Jopac" -#: lutris/runners/o2em.py:36 lutris/runners/wine.py:398 +#: lutris/runners/o2em.py:36 lutris/runners/wine.py:397 msgid "Disable" msgstr "Uitschakelen" @@ -3638,6 +3770,7 @@ msgstr "" msgid "ResidualVM" msgstr "ResidualVM" +#. TODO #: lutris/runners/residualvm.py:16 msgid "3D point-and-click adventure games engine" msgstr "Aandrijving van 3D-point-and-clickgames" @@ -3682,11 +3815,11 @@ msgstr "Sony PlayStation 3" msgid "Path to EBOOT.BIN" msgstr "Locatie van EBOOT.BIN" -#: lutris/runners/runner.py:145 +#: lutris/runners/runner.py:154 msgid "Custom executable for the runner" msgstr "Aangepast uitvoerbaar bestand voor de runner" -#: lutris/runners/runner.py:289 +#: lutris/runners/runner.py:299 msgid "" "The required runner is not installed.\n" "Do you wish to install it now?" @@ -3694,7 +3827,7 @@ msgstr "" "De vereiste runner is niet geïnstalleerd.\n" "Wil je deze nu installeren?" -#: lutris/runners/runner.py:291 +#: lutris/runners/runner.py:301 msgid "Required runner unavailable" msgstr "Vereiste runner is niet beschikbaar" @@ -4011,19 +4144,11 @@ msgstr "" msgid "Sound driver" msgstr "Audiostuurprogramma" -#: lutris/runners/steam.py:41 +#: lutris/runners/steam.py:28 msgid "Runs Steam for Linux games" msgstr "Hiermee speel je Steam voor Linux-games" -#: lutris/runners/steam.py:42 lutris/services/steam.py:73 -msgid "Steam" -msgstr "Steam" - -#: lutris/runners/steam.py:48 -msgid "Application ID" -msgstr "Programma-id" - -#: lutris/runners/steam.py:51 +#: lutris/runners/steam.py:38 msgid "" "The application ID can be retrieved from the game's page at steampowered." "com. Example: 235320 is the app ID for Original War in: \n" @@ -4033,7 +4158,7 @@ msgstr "" "Voorbeeld: 235320 is de id van Original War op: http://store." "steampowered.com/app/235320/" -#: lutris/runners/steam.py:62 +#: lutris/runners/steam.py:49 msgid "" "Command line arguments used when launching the game.\n" "Ignored when Steam Big Picture mode is enabled." @@ -4041,44 +4166,32 @@ msgstr "" "De tezamen met de game uit te voeren opdrachtregelopties.\n" "Deze worden genegeerd als Steam's Big Picture Mode is ingeschakeld." -#: lutris/runners/steam.py:68 +#: lutris/runners/steam.py:55 msgid "DRM free mode (Do not launch Steam)" msgstr "DRM-vrije modus (start Steam niet op)" -#: lutris/runners/steam.py:73 +#: lutris/runners/steam.py:60 msgid "" "Run the game directly without Steam, requires the game binary path to be set" msgstr "" "Start de game onmiddellijk, zonder tussenkomst van Steam - stel hiervoor de " "locatie van het uitvoerbare bestand in" -#: lutris/runners/steam.py:79 +#: lutris/runners/steam.py:66 msgid "Game binary path" msgstr "Locatie van uitvoerbaar bestand" -#: lutris/runners/steam.py:81 +#: lutris/runners/steam.py:68 msgid "Path to the game executable (Required by DRM free mode)" msgstr "" "Locatie van het gamebestand (vereist om de drm-vrije modus te kunnen " "gebruiken)" -#: lutris/runners/steam.py:87 -msgid "Stop Steam after game exits" -msgstr "Steam afsluiten na beëindigen van game" - -#: lutris/runners/steam.py:91 -msgid "" -"Shut down Steam after the game has quit\n" -"(only if Steam was started by Lutris)" -msgstr "" -"Sluit Steam af als de game is afgesloten\n" -"(alleen van toepassing als Steam gestart is door Lutris)" - -#: lutris/runners/steam.py:97 +#: lutris/runners/steam.py:74 msgid "Start Steam in Big Picture mode" msgstr "Steam opstarten in Big Picture Mode" -#: lutris/runners/steam.py:101 +#: lutris/runners/steam.py:78 msgid "" "Launches Steam in Big Picture mode.\n" "Only works if Steam is not running or already running in Big Picture mode.\n" @@ -4089,11 +4202,11 @@ msgstr "" "draait.\n" "Handig voor het gamen met een Steam-controller." -#: lutris/runners/steam.py:109 +#: lutris/runners/steam.py:86 msgid "Start Steam with LSI" msgstr "Steam opstarten met LSI" -#: lutris/runners/steam.py:113 +#: lutris/runners/steam.py:90 msgid "" "Launches steam with LSI patches enabled. Make sure Lutris Runtime is " "disabled and you have LSI installed. https://github.com/solus-project/linux-" @@ -4103,11 +4216,11 @@ msgstr "" "uitschakelt en LSI geïnstalleerd is: https://github.com/solus-project/linux-" "steam-integration" -#: lutris/runners/steam.py:124 +#: lutris/runners/steam.py:101 msgid "Extra command line arguments used when launching Steam" msgstr "De tezamen met Steam uit te voeren opdrachtregelopties" -#: lutris/runners/steam.py:131 +#: lutris/runners/steam.py:108 msgid "Remove game data (through Steam)" msgstr "Gamedata verwijderen (middels Steam)" @@ -4557,12 +4670,12 @@ msgstr "Fsync gebruiken" #: lutris/runners/wine.py:317 msgid "" "Enable futex-based synchronization (fsync). This will increase performance " -"in applications that take advantage of multi-core processors. Requires a " -"custom kernel with the fsync patchset." +"in applications that take advantage of multi-core processors. Requires " +"kernel 5.16 or above." msgstr "" "Schakel synchronisatie op basis van futex (fsync) in. Hiermee verbeter je de " "prestaties van games die optimaal gebruikmaken van processors met meerdere " -"kernen. Een aangepaste kernel met de fsync-patchreeks is vereist." +"kernen. Hiervoor is kernelversie 5.16 of hoger vereist." #: lutris/runners/wine.py:325 msgid "Enable AMD FidelityFX Super Resolution (FSR)" @@ -4636,18 +4749,17 @@ msgstr "Scherm vergroten/verkleinen met dpi" #: lutris/runners/wine.py:378 msgid "" "Enables the Windows application's DPI scaling.\n" -"Otherwise, disables DPI scaling by using 96 DPI.\n" -"This corresponds to Wine's Screen Resolution option." +"Otherwise, the Screen Resolution option in 'Wine configuration' controls " +"this." msgstr "" "Schakelt de Windows-dpi-instellingen in.\n" -"De standaard dpi-schaal is 96 dpi.\n" "Dit is gelijk aan Wine's schermresolutie-optie." -#: lutris/runners/wine.py:385 +#: lutris/runners/wine.py:384 msgid "DPI" msgstr "DPI" -#: lutris/runners/wine.py:388 +#: lutris/runners/wine.py:387 msgid "" "The DPI to be used if 'Enable DPI Scaling' is turned on.\n" "If blank or 'auto', Lutris will auto-detect this." @@ -4656,19 +4768,19 @@ msgstr "" "ingeschakeld.\n" "Blanco of ‘auto’ = automatisch detecteren." -#: lutris/runners/wine.py:394 +#: lutris/runners/wine.py:393 msgid "Mouse Warp Override" msgstr "Automatische cursorplaatsing" -#: lutris/runners/wine.py:397 +#: lutris/runners/wine.py:396 msgid "Enable" msgstr "Inschakelen" -#: lutris/runners/wine.py:399 +#: lutris/runners/wine.py:398 msgid "Force" msgstr "Afdwingen" -#: lutris/runners/wine.py:404 +#: lutris/runners/wine.py:403 msgid "" "Override the default mouse pointer warping behavior\n" "Enable: (Wine default) warp the pointer when the mouse is exclusively " @@ -4682,11 +4794,11 @@ msgstr "" "Uitschakelen: plaats de cursor nooit automatisch \n" "Afdwingen: plaats de cursor altijd automatisch op knoppen" -#: lutris/runners/wine.py:413 +#: lutris/runners/wine.py:412 msgid "Audio driver" msgstr "Audiostuurprogramma" -#: lutris/runners/wine.py:424 +#: lutris/runners/wine.py:423 msgid "" "Which audio backend to use.\n" "By default, Wine automatically picks the right one for your system." @@ -4694,45 +4806,45 @@ msgstr "" "Welk audioback-end er moet worden gebruikt.\n" "Standaard kiest Wine automatisch de juiste." -#: lutris/runners/wine.py:432 +#: lutris/runners/wine.py:431 msgid "DLL overrides" msgstr "DLL-afdwinging" -#: lutris/runners/wine.py:433 +#: lutris/runners/wine.py:432 msgid "Sets WINEDLLOVERRIDES when launching the game." msgstr "De tezamen met de game uit te voeren WINEDLLOVERRIDES." -#: lutris/runners/wine.py:437 +#: lutris/runners/wine.py:436 msgid "Output debugging info" msgstr "Uitvoer-foutopsporingsinformatie" -#: lutris/runners/wine.py:441 lutris/sysoptions.py:303 +#: lutris/runners/wine.py:440 msgid "Enabled" msgstr "Ingeschakeld" -#: lutris/runners/wine.py:442 +#: lutris/runners/wine.py:441 msgid "Inherit from environment" msgstr "Overnemen van werkomgeving" -#: lutris/runners/wine.py:444 +#: lutris/runners/wine.py:443 msgid "Full (CAUTION: Will cause MASSIVE slowdown)" msgstr "Volledig (LET OP: dit leidt tot GIGANTISCHE lags)" -#: lutris/runners/wine.py:447 +#: lutris/runners/wine.py:446 msgid "Output debugging information in the game log (might affect performance)" msgstr "" "Plaats foutopsporingsinformatie in het gamelogboek (dit kan leiden tot " "prestatieverlies)" -#: lutris/runners/wine.py:452 +#: lutris/runners/wine.py:451 msgid "Show crash dialogs" msgstr "Crashschermen tonen" -#: lutris/runners/wine.py:460 +#: lutris/runners/wine.py:459 msgid "Autoconfigure joypads" msgstr "Joypads automatisch instellen" -#: lutris/runners/wine.py:464 +#: lutris/runners/wine.py:463 msgid "" "Automatically disables one of Wine's detected joypad to avoid having 2 " "controllers detected" @@ -4740,11 +4852,11 @@ msgstr "" "Schakelt automatisch één van Wine's gedetecteerde joypads uit om te " "voorkomen dat er 2 worden gedetecteerd" -#: lutris/runners/wine.py:470 +#: lutris/runners/wine.py:469 msgid "Create a sandbox for Wine folders" msgstr "Wine-mappen in sandbox plaatsen" -#: lutris/runners/wine.py:474 +#: lutris/runners/wine.py:473 msgid "" "Do not use $HOME for desktop integration folders.\n" "By default, it use the directories in the confined Windows environment." @@ -4752,11 +4864,11 @@ msgstr "" "Gebruik $HOME niet voor burueabladintegratiemappen.\n" "Standaard worden de mappen uit het Wine-profiel gebruikt." -#: lutris/runners/wine.py:482 +#: lutris/runners/wine.py:481 msgid "Sandbox directory" msgstr "Sandboxmap" -#: lutris/runners/wine.py:483 +#: lutris/runners/wine.py:482 msgid "Custom directory for desktop integration folders." msgstr "Aangepaste map voor de bureaubladintegratiemappen." @@ -4764,31 +4876,31 @@ msgstr "Aangepaste map voor de bureaubladintegratiemappen." msgid "Run EXE inside Wine prefix" msgstr "EXE uitvoeren op Wine-profiel" -#: lutris/runners/wine.py:493 +#: lutris/runners/wine.py:492 msgid "Wine configuration" msgstr "Wine-instellingen" -#: lutris/runners/wine.py:495 +#: lutris/runners/wine.py:493 msgid "Open Bash terminal" msgstr "Bash-terminalvenster openen" -#: lutris/runners/wine.py:496 +#: lutris/runners/wine.py:494 msgid "Open Wine console" msgstr "Wine-opdrachtprompt openen" -#: lutris/runners/wine.py:497 +#: lutris/runners/wine.py:495 msgid "Wine registry" msgstr "Wine-register" -#: lutris/runners/wine.py:498 +#: lutris/runners/wine.py:496 msgid "Winetricks" msgstr "Winetricks" -#: lutris/runners/wine.py:499 +#: lutris/runners/wine.py:497 msgid "Wine Control Panel" msgstr "Wine-configuratiescherm" -#: lutris/runners/wine.py:661 +#: lutris/runners/wine.py:659 msgid "Select an EXE or MSI file" msgstr "Kies een exe- of msi-bestand" @@ -4796,6 +4908,7 @@ msgstr "Kies een exe- of msi-bestand" msgid "Yuzu" msgstr "Yuzu" +#. http://zdoom.org/wiki/Command_line_parameters #: lutris/runners/zdoom.py:13 msgid "ZDoom DOOM Game Engine" msgstr "ZDoom DOOM Game Engine" @@ -4885,18 +4998,37 @@ msgstr "" "laden. Het bestand moet een wad-mappenlijst bevatten, anders start de game " "niet." +#: lutris/services/amazon.py:58 lutris/services/amazon.py:637 +msgid "Amazon Prime Gaming" +msgstr "Amazon Prime Gaming" + +#: lutris/services/amazon.py:624 +#, python-format +msgid "Installing file: %s" +msgstr "Bezig met installeren van bestand: %s" + +#: lutris/services/base.py:310 +#, python-format +msgid "" +"This service requires a game launcher. The following steps will install it.\n" +"Once the client is installed, you can login to %s." +msgstr "" +"Voor het gebruik van deze dienst is een starter vereist, welke hierna wordt " +"geïnstalleerd.\n" +"Na het installeren kun je inloggen op %s." + #: lutris/services/battlenet.py:13 msgid "Battle.net" msgstr "Battle.net" -#: lutris/services/bethesda.py:13 -msgid "Bethesda" -msgstr "Bethesda" - #: lutris/services/egs.py:134 msgid "Epic Games Store" msgstr "Epic Games Store" +#: lutris/services/flathub.py:56 +msgid "Flathub" +msgstr "Flathub" + #: lutris/services/gog.py:68 msgid "GOG" msgstr "GOG" @@ -4945,11 +5077,11 @@ msgstr "(c) 2010-2022 Het Lutris-team" msgid "The Lutris team" msgstr "Het Lutris-team" -#: lutris/startup.py:86 +#: lutris/startup.py:87 msgid "Your NVIDIA driver is outdated." msgstr "Je NVIDIA-stuurprogramma is verouderd." -#: lutris/startup.py:88 +#: lutris/startup.py:89 #, python-format msgid "" "You are currently running driver %s which does not fully support all " @@ -4962,11 +5094,11 @@ msgstr "" "Installeer een nieuwere versie middels onze installatiehandleiding (Engels)" -#: lutris/startup.py:119 +#: lutris/startup.py:120 msgid "Missing vulkan libraries" msgstr "Ontbrekende Vulkan-bibliotheken" -#: lutris/startup.py:121 +#: lutris/startup.py:122 #, python-format msgid "" "Lutris was unable to detect Vulkan support for the %s architecture.\n" @@ -4979,52 +5111,60 @@ msgstr "" "Veel games en programma's zullen hierdoor niet werken.\n" "Installeer ze middels onze installatiehandleiding (Engels)" -#: lutris/startup.py:127 +#: lutris/startup.py:128 msgid " and " msgstr " en " -#: lutris/sysoptions.py:30 +#: lutris/sysoptions.py:29 msgid "Keep current" msgstr "Huidige behouden" -#: lutris/sysoptions.py:38 lutris/sysoptions.py:47 lutris/sysoptions.py:58 -#: lutris/sysoptions.py:498 +#: lutris/sysoptions.py:43 +msgid "(recommended)" +msgstr "(aanbevolen)" + +#: lutris/sysoptions.py:46 +msgid "System" +msgstr "Systeem" + +#: lutris/sysoptions.py:55 lutris/sysoptions.py:64 lutris/sysoptions.py:75 +#: lutris/sysoptions.py:539 msgid "Off" msgstr "Uit" -#: lutris/sysoptions.py:39 +#: lutris/sysoptions.py:56 msgid "Primary" msgstr "Primair" -#: lutris/sysoptions.py:85 +#: lutris/sysoptions.py:101 msgid "Auto: WARNING -- No Vulkan Loader detected!" msgstr "Automatisch: WAARSCHUWING -- er is geen Vulkan-loader aangetroffen!" -#: lutris/sysoptions.py:115 +#: lutris/sysoptions.py:127 msgid "Auto: Intel Open Source (MESA: ANV)" msgstr "Automatisch: Intel Open Source (MESA: ANV)" -#: lutris/sysoptions.py:117 +#: lutris/sysoptions.py:128 msgid "Auto: AMD RADV Open Source (MESA: RADV)" msgstr "Automatisch: AMD RADV Open Source (MESA: RADV)" -#: lutris/sysoptions.py:119 +#: lutris/sysoptions.py:129 msgid "Auto: Nvidia Proprietary" msgstr "Automatisch: Nvidia (gesloten stuurprogramma)" -#: lutris/sysoptions.py:136 +#: lutris/sysoptions.py:172 msgid "Default installation folder" msgstr "Standaard installatiemap" -#: lutris/sysoptions.py:139 +#: lutris/sysoptions.py:175 msgid "The default folder where you install your games." msgstr "De standaardmap waarin je games worden geïnstalleerd." -#: lutris/sysoptions.py:147 +#: lutris/sysoptions.py:183 msgid "Disable Lutris Runtime" msgstr "Lutris-runtime uitschakelen" -#: lutris/sysoptions.py:150 +#: lutris/sysoptions.py:186 msgid "" "The Lutris Runtime loads some libraries before running the game, which can " "cause some incompatibilities in some cases. Check this option to disable it." @@ -5033,22 +5173,22 @@ msgstr "" "dit leiden tot incompatibiliteit. Kruis deze optie aan om de runtime uit te " "schakelen." -#: lutris/sysoptions.py:157 +#: lutris/sysoptions.py:193 msgid "Prefer system libraries" msgstr "Voorkeur voor systeembibliotheken" -#: lutris/sysoptions.py:159 +#: lutris/sysoptions.py:195 msgid "" "When the runtime is enabled, prioritize the system libraries over the " "provided ones." msgstr "" "Geef voorrang aan systeembibliotheken, ook als de runtime is ingeschakeld." -#: lutris/sysoptions.py:165 +#: lutris/sysoptions.py:201 msgid "Restore resolution on game exit" msgstr "Resolutie herstellen na beëindigen van game" -#: lutris/sysoptions.py:167 +#: lutris/sysoptions.py:203 msgid "" "Some games don't restore your screen resolution when \n" "closed or when they crash. This is when this option comes \n" @@ -5058,11 +5198,11 @@ msgstr "" "worden afgesloten of crashen. Met deze optie wordt de\n" "resolutie altijd hersteld." -#: lutris/sysoptions.py:174 +#: lutris/sysoptions.py:210 msgid "Enable gamescope" msgstr "Gamescope inschakelen" -#: lutris/sysoptions.py:178 +#: lutris/sysoptions.py:214 msgid "" "Use gamescope to draw the game window isolated from your desktop.\n" "Use Ctrl+Super+F to toggle fullscreen" @@ -5070,35 +5210,35 @@ msgstr "" "Gebruik gamescope om een venster te isoleren van je werkblad.\n" "Druk op Ctrl+Super+F om de beeldvullende modus in/uit te schakelen." -#: lutris/sysoptions.py:184 +#: lutris/sysoptions.py:220 msgid "Gamescope output resolution" msgstr "Gamescope-resolutie" -#: lutris/sysoptions.py:188 +#: lutris/sysoptions.py:224 msgid "Resolution of the window on your desktop" msgstr "De resolutie van het venster op je werkblad" -#: lutris/sysoptions.py:193 +#: lutris/sysoptions.py:229 msgid "Gamescope game resolution" msgstr "Gamescope-gameresolutie" -#: lutris/sysoptions.py:197 +#: lutris/sysoptions.py:233 msgid "Resolution of the screen visible to the game" msgstr "De resolutie van het scherm die de game doorkrijgt" -#: lutris/sysoptions.py:202 +#: lutris/sysoptions.py:238 msgid "Restrict number of cores used" msgstr "Aantal kernen beperken" -#: lutris/sysoptions.py:205 +#: lutris/sysoptions.py:241 msgid "Restrict the game to a maximum number of CPU cores." msgstr "Beperkt de game tot het gebruik van een maximumaantal cpu-kernen." -#: lutris/sysoptions.py:210 +#: lutris/sysoptions.py:246 msgid "Restrict number of cores to" msgstr "Aantal kernen beperken tot" -#: lutris/sysoptions.py:213 +#: lutris/sysoptions.py:249 msgid "" "Maximum number of CPU cores to be used, if 'Restrict number of cores used' " "is turned on." @@ -5106,11 +5246,11 @@ msgstr "" "Beperkt de game tot het gebruik van een maximumaantal cpu-kernen als ‘Aantal " "kernen beperken’ is ingeschakeld." -#: lutris/sysoptions.py:219 +#: lutris/sysoptions.py:255 msgid "Restore gamma on game exit" msgstr "Gamma herstellen na beëindigen van game" -#: lutris/sysoptions.py:221 +#: lutris/sysoptions.py:257 msgid "" "Some games don't correctly restores gamma on exit, making your display too " "bright. Select this option to correct it." @@ -5118,11 +5258,11 @@ msgstr "" "Sommige gamels herstellen het gamma niet als ze worden afgesloten, waardoor " "je helderheid te hoog staat. Kruis deze optie aan om dat te voorkomen." -#: lutris/sysoptions.py:226 +#: lutris/sysoptions.py:262 msgid "Disable desktop effects" msgstr "Bureaubladeffecten uitschakelen" -#: lutris/sysoptions.py:230 +#: lutris/sysoptions.py:266 msgid "" "Disable desktop effects while game is running, reducing stuttering and " "increasing performance" @@ -5130,11 +5270,11 @@ msgstr "" "Schakel bureaubladeffecten uit zolang de game actief is, om lag en traagheid " "te voorkomen" -#: lutris/sysoptions.py:235 +#: lutris/sysoptions.py:271 msgid "Disable screen saver" msgstr "Schermbeveiliging uitschakelen" -#: lutris/sysoptions.py:240 +#: lutris/sysoptions.py:276 msgid "" "Disable the screen saver while a game is running. Requires the screen " "saver's functionality to be exposed over DBus." @@ -5142,19 +5282,19 @@ msgstr "" "Schakel de schermbeveiliging uit tijdens het games van een game. Hiervoor " "dient de functionaliteit te worden doorgegeven middels DBus." -#: lutris/sysoptions.py:247 +#: lutris/sysoptions.py:283 msgid "Reset PulseAudio" msgstr "PulseAudio herstarten" -#: lutris/sysoptions.py:251 +#: lutris/sysoptions.py:287 msgid "Restart PulseAudio before launching the game." msgstr "Herstart PulseAudio voordat de game start." -#: lutris/sysoptions.py:256 +#: lutris/sysoptions.py:292 msgid "Reduce PulseAudio latency" msgstr "PulseAudio-vertraging verminderen" -#: lutris/sysoptions.py:260 +#: lutris/sysoptions.py:296 msgid "" "Set the environment variable PULSE_LATENCY_MSEC=60 to improve audio quality " "on some games" @@ -5162,20 +5302,20 @@ msgstr "" "Stelt de omgevingsvariabel PULSE_LATENCY_MSEC=60 in om de audiokwaliteit van " "sommige games te verbeteren" -#: lutris/sysoptions.py:266 +#: lutris/sysoptions.py:302 msgid "Switch to US keyboard layout" msgstr "Overschakelen naar Amerikaanse toetsenbordindeling" -#: lutris/sysoptions.py:269 +#: lutris/sysoptions.py:305 msgid "Switch to US keyboard QWERTY layout while game is running" msgstr "" "Schakel over naar de Amerikaanse QWERTY-indeling zolang de game actief is" -#: lutris/sysoptions.py:276 +#: lutris/sysoptions.py:312 msgid "Optimus launcher (NVIDIA Optimus laptops)" msgstr "Optimus-starter (NVIDIA Optimus-laptops)" -#: lutris/sysoptions.py:278 +#: lutris/sysoptions.py:314 msgid "" "If you have installed the primus or bumblebee packages, select what launcher " "will run the game with the command, activating your NVIDIA graphic chip for " @@ -5189,11 +5329,11 @@ msgstr "" "maar optirun/virtualgl werkt met meer games. Primus VK biedt Vulkan-" "ondersteuning voor Bumblebee." -#: lutris/sysoptions.py:290 +#: lutris/sysoptions.py:326 msgid "Vulkan ICD loader" msgstr "Vulkan ICD-loader" -#: lutris/sysoptions.py:292 +#: lutris/sysoptions.py:328 msgid "" "The ICD loader is a library that is placed between a Vulkan application and " "any number of Vulkan drivers, in order to support multiple drivers and the " @@ -5203,15 +5343,11 @@ msgstr "" "Zo worden meerdere stuurprogramma's en instanties ondersteund tussen " "stuurprogramma's." -#: lutris/sysoptions.py:300 +#: lutris/sysoptions.py:336 msgid "FPS counter (MangoHud)" msgstr "FPS-teller (MangoHud)" -#: lutris/sysoptions.py:304 -msgid "Enabled (32bit)" -msgstr "Ingeschakeld (32-bit)" - -#: lutris/sysoptions.py:309 +#: lutris/sysoptions.py:339 msgid "" "Display the game's FPS + other information. Requires MangoHud to be " "installed." @@ -5219,23 +5355,23 @@ msgstr "" "Toont de fps van een game, evenals andere technische informatie. MangoHud is " "hiervoor vereist." -#: lutris/sysoptions.py:318 +#: lutris/sysoptions.py:348 msgid "Limit the game's FPS to desired number" msgstr "Stel een FPS-limiet in" -#: lutris/sysoptions.py:325 +#: lutris/sysoptions.py:355 msgid "Enable Feral GameMode" msgstr "Feral GameMode gebruiken" -#: lutris/sysoptions.py:326 +#: lutris/sysoptions.py:356 msgid "Request a set of optimisations be temporarily applied to the host OS" msgstr "Past tijdelijk een set optimalisaties toe op het hostsysteem" -#: lutris/sysoptions.py:333 +#: lutris/sysoptions.py:363 msgid "Enable NVIDIA Prime Render Offload" msgstr "NVIDIA Prime render offload gebruiken" -#: lutris/sysoptions.py:334 +#: lutris/sysoptions.py:364 msgid "" "If you have the latest NVIDIA driver and the properly patched xorg-server " "(see https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/" @@ -5249,11 +5385,11 @@ msgstr "" "door deze optie in te schakelen. Dit past __NV_PRIME_RENDER_OFFLOAD=1 en " "__GLX_VENDOR_LIBRARY_NAME=nvidia toe." -#: lutris/sysoptions.py:345 +#: lutris/sysoptions.py:375 msgid "Use discrete graphics" msgstr "Toegepaste videokaart gebruiken" -#: lutris/sysoptions.py:347 +#: lutris/sysoptions.py:377 msgid "" "If you have open source graphic drivers (Mesa), selecting this option will " "run the game with the 'DRI_PRIME=1' environment variable, activating your " @@ -5263,11 +5399,11 @@ msgstr "" "deze optie met ‘DRI_PRIME=1’, waardoor je toegepaste videokaart (bijv. " "Nvidia) gebruikt wordt voor betere prestaties." -#: lutris/sysoptions.py:355 +#: lutris/sysoptions.py:385 msgid "SDL 1.2 Fullscreen Monitor" msgstr "SDL 1.2 beeldvullend scherm" -#: lutris/sysoptions.py:359 +#: lutris/sysoptions.py:389 msgid "" "Hint SDL 1.2 games to use a specific monitor when going fullscreen by " "setting the SDL_VIDEO_FULLSCREEN environment variable" @@ -5276,11 +5412,11 @@ msgstr "" "gebruikt om de beeldvullende modus in te schakelen middels " "SDL_VIDEO_FULLSCREEN" -#: lutris/sysoptions.py:366 +#: lutris/sysoptions.py:396 msgid "Turn off monitors except" msgstr "Beeldschermen uitschakelen, behalve" -#: lutris/sysoptions.py:371 +#: lutris/sysoptions.py:401 msgid "" "Only keep the selected screen active while the game is running. \n" "This is useful if you have a dual-screen setup, and are \n" @@ -5290,19 +5426,19 @@ msgstr "" "Dit is nuttig als je meer dan één scherm hebt en problemen hebt\n" "met beeldvullende games." -#: lutris/sysoptions.py:379 +#: lutris/sysoptions.py:409 msgid "Switch resolution to" msgstr "Resolutie instellen op" -#: lutris/sysoptions.py:383 +#: lutris/sysoptions.py:413 msgid "Switch to this screen resolution while the game is running." msgstr "Stel de resolutie hier op in zolang de game actief is." -#: lutris/sysoptions.py:387 +#: lutris/sysoptions.py:417 msgid "CLI mode" msgstr "CLI-modus" -#: lutris/sysoptions.py:391 +#: lutris/sysoptions.py:421 msgid "" "Enable a terminal for text-based games. Only useful for ASCII based games. " "May cause issues with graphical games." @@ -5310,11 +5446,11 @@ msgstr "" "Gebruik een terminal bij tekstgebaseerde games (alleen nuttig bij ascii-" "games). Let op: dit kan problemen veroorzaken in grafische games." -#: lutris/sysoptions.py:396 +#: lutris/sysoptions.py:426 msgid "Text based games emulator" msgstr "Tekstgebaseerde game-emulator" -#: lutris/sysoptions.py:401 +#: lutris/sysoptions.py:431 msgid "" "The terminal emulator used with the CLI mode. Choose from the list of " "detected terminal apps or enter the terminal's command or path." @@ -5323,69 +5459,77 @@ msgstr "" "een lijst met geïnstalleerde programma's of voer de opdracht of locatie in. " "Let op: niet alle emulators werken." -#: lutris/sysoptions.py:408 -msgid "Environment variables" -msgstr "Omgevingsvariabelen" +#: lutris/sysoptions.py:438 +msgid "Locale" +msgstr "Taal" -#: lutris/sysoptions.py:409 +#: lutris/sysoptions.py:444 +msgid "" +"Can be used to force certain locale for an app. Fixes encoding issues in " +"legacy software." +msgstr "" +"Kan worden gebruikt om een bepaalde taal in een game te gebruiken. Dit lost " +"tekensetproblemen in oude software op." + +#: lutris/sysoptions.py:450 msgid "Environment variables loaded at run time" msgstr "De tezamen met de game toe te passen omgevingsvariabelen" -#: lutris/sysoptions.py:414 +#: lutris/sysoptions.py:455 msgid "AntiMicroX Profile" msgstr "AntiMicroX-profiel" -#: lutris/sysoptions.py:416 +#: lutris/sysoptions.py:457 msgid "Path to an AntiMicroX profile file" msgstr "Locatie van een AntiMicroX-profielbestand" -#: lutris/sysoptions.py:421 +#: lutris/sysoptions.py:462 msgid "Command prefix" msgstr "Opdrachtregelopties" -#: lutris/sysoptions.py:423 +#: lutris/sysoptions.py:464 msgid "" "Command line instructions to add in front of the game's execution command." msgstr "" "De opdrachtregelopties die vóór de game-opdracht moeten worden toegekend." -#: lutris/sysoptions.py:429 +#: lutris/sysoptions.py:470 msgid "Manual script" msgstr "Aangepast script" -#: lutris/sysoptions.py:431 +#: lutris/sysoptions.py:472 msgid "Script to execute from the game's contextual menu" msgstr "Het uit te voeren script middels het rechtermuisknopmenu van de game" -#: lutris/sysoptions.py:436 +#: lutris/sysoptions.py:477 msgid "Pre-launch script" msgstr "Voortijdig script" -#: lutris/sysoptions.py:438 +#: lutris/sysoptions.py:479 msgid "Script to execute before the game starts" msgstr "Het script dat moet worden uitgevoerd voordat de game start" -#: lutris/sysoptions.py:443 +#: lutris/sysoptions.py:484 msgid "Wait for pre-launch script completion" msgstr "Wachten tot voortijdig script is afgerond" -#: lutris/sysoptions.py:446 +#: lutris/sysoptions.py:487 msgid "Run the game only once the pre-launch script has exited" msgstr "Start de game alleen als het script is afgerond" -#: lutris/sysoptions.py:451 +#: lutris/sysoptions.py:492 msgid "Post-exit script" msgstr "Afsluitend script" -#: lutris/sysoptions.py:453 +#: lutris/sysoptions.py:494 msgid "Script to execute when the game exits" msgstr "Het script dat moet worden uitgevoerd nadat de game is afgesloten" -#: lutris/sysoptions.py:458 +#: lutris/sysoptions.py:499 msgid "Include processes" msgstr "In te sluiten deze processen" -#: lutris/sysoptions.py:460 +#: lutris/sysoptions.py:501 msgid "" "What processes to include in process monitoring. This is to override the " "built-in exclude list.\n" @@ -5397,11 +5541,11 @@ msgstr "" "De lijst is spatiegescheiden. Processen met spaties dienen voorzien te zijn " "van dubbele aanhalingstekens." -#: lutris/sysoptions.py:468 +#: lutris/sysoptions.py:509 msgid "Exclude processes" msgstr "Uit te sluiten processen" -#: lutris/sysoptions.py:470 +#: lutris/sysoptions.py:511 msgid "" "What processes to exclude in process monitoring. For example background " "processes that stick around after the game has been closed.\n" @@ -5414,11 +5558,11 @@ msgstr "" "De lijst is spatiegescheiden. Processen met spaties dienen voorzien te zijn " "van dubbele aanhalingstekens." -#: lutris/sysoptions.py:479 +#: lutris/sysoptions.py:520 msgid "Killswitch file" msgstr "Killswitch-bestand" -#: lutris/sysoptions.py:481 +#: lutris/sysoptions.py:522 msgid "" "Path to a file which will stop the game when deleted \n" "(usually /dev/input/js0 to stop the game on joystick unplugging)" @@ -5427,11 +5571,11 @@ msgstr "" "(doorgaans is dit /dev/input/js0 om het game stop te zetten bij het " "afkoppelen van joysticks)" -#: lutris/sysoptions.py:488 +#: lutris/sysoptions.py:529 msgid "SDL2 gamepad mapping" msgstr "SDL2-gamepadtoewijzing" -#: lutris/sysoptions.py:490 +#: lutris/sysoptions.py:531 msgid "" "SDL_GAMECONTROLLERCONFIG mapping string or path to a custom gamecontrollerdb." "txt file containing mappings." @@ -5439,64 +5583,64 @@ msgstr "" "SDL_GAMECONTROLLERCONFIG-toewijzing, in tekenreeks of locatie, naar een " "aangepast gamecontrollerdb.txt-bestand dat de toewijzingen bevat." -#: lutris/sysoptions.py:495 +#: lutris/sysoptions.py:536 msgid "Use Xephyr" msgstr "Xephyr gebruiken" -#: lutris/sysoptions.py:499 +#: lutris/sysoptions.py:540 msgid "8BPP (256 colors)" msgstr "8BPP (256 kleuren)" -#: lutris/sysoptions.py:500 +#: lutris/sysoptions.py:541 msgid "16BPP (65536 colors)" msgstr "16BPP (65536 kleuren)" -#: lutris/sysoptions.py:501 +#: lutris/sysoptions.py:542 msgid "24BPP (16M colors)" msgstr "24BPP (16M kleuren)" -#: lutris/sysoptions.py:505 +#: lutris/sysoptions.py:546 msgid "Run program in Xephyr to support 8BPP and 16BPP color modes" msgstr "" "Start een game met Xephyr om 8BPP- en 16BPP-kleurenmodi te kunnen gebruiken" -#: lutris/sysoptions.py:510 +#: lutris/sysoptions.py:551 msgid "Xephyr resolution" msgstr "Xephyr-resolutie" -#: lutris/sysoptions.py:512 +#: lutris/sysoptions.py:553 msgid "Screen resolution of the Xephyr server" msgstr "Schermresolutie van de Xephyr-server" -#: lutris/sysoptions.py:517 +#: lutris/sysoptions.py:558 msgid "Xephyr Fullscreen" msgstr "Xephyr beeldvullend" -#: lutris/sysoptions.py:520 +#: lutris/sysoptions.py:561 msgid "Open Xephyr in fullscreen (at the desktop resolution)" msgstr "Xephyr op volledig scherm openen (op bureaubladresolutie)" -#: lutris/util/system.py:20 +#: lutris/util/system.py:21 msgid "Documents" msgstr "Documenten" -#: lutris/util/system.py:21 +#: lutris/util/system.py:22 msgid "Downloads" msgstr "Downloads" -#: lutris/util/system.py:22 +#: lutris/util/system.py:23 msgid "Desktop" msgstr "Bureaublad" -#: lutris/util/system.py:23 lutris/util/system.py:25 +#: lutris/util/system.py:24 lutris/util/system.py:26 msgid "Pictures" msgstr "Afbeeldingen" -#: lutris/util/system.py:24 +#: lutris/util/system.py:25 msgid "Videos" msgstr "Video's" -#: lutris/util/system.py:26 +#: lutris/util/system.py:27 msgid "Projects" msgstr "Projecten" @@ -5527,8 +5671,8 @@ msgstr "Vulkan is niet geïnstalleerd of wordt niet ondersteund door je systeem" msgid "" "If you have compatible hardware, please follow the installation procedures " "as described in\n" -"How-to:-DXVK " -"(https://github.com/lutris/lutris/wiki/How-to:-DXVK)" +"How-to:-" +"DXVK (https://github.com/lutris/docs/blob/master/HowToDXVK.md)" msgstr "" "Als je hardware compatibel is, volg dan de installatiestappen op\n" "How-to:-DXVK " @@ -5537,8 +5681,8 @@ msgstr "" #: lutris/util/wine/wine.py:367 msgid "" "Your limits are not set correctly. Please increase them as described here: " -"How-to:-Esync " -"(https://github.com/lutris/lutris/wiki/How-to:-Esync)" +"How-to:-" +"Esync (https://github.com/lutris/docs/blob/master/HowToEsync.md)" msgstr "" "Je hebt de beperkingen niet goed ingesteld. Verhoog ze middels de stappen op " "How-to:-Esync " @@ -5572,6 +5716,52 @@ msgstr "" "De gekozen Wine-versie heeft geen ondersteuning voor Fsync.\n" "Kies een met fsync compatibele versie." +#~ msgid "video game preservation platform" +#~ msgstr "videogame-bewaarplatform" + +#~ msgid "Show Tray Icon (requires restart)" +#~ msgstr "Systeemvakpictogram tonen (herstart vereist)" + +#~ msgid "Amiga 500+ with 1 MB chip RAM" +#~ msgstr "Amiga 500+ met 1 MB chip-ram" + +#~ msgid "Amiga 600 with 1 MB chip RAM" +#~ msgstr "Amiga 600 met 1 MB chip-ram" + +#~ msgid "Amiga 1000 with 512 KB chip RAM" +#~ msgstr "Amiga 1000 met 512 KB chip-ram" + +#~ msgid "Amiga 1200 with 2 MB chip RAM" +#~ msgstr "Amiga 1200 met 2 MB chip-ram" + +#~ msgid "Amiga 1200 but with 68020 processor" +#~ msgstr "Amiga 1200 met 68020-processor" + +#~ msgid "Amiga 4000 with 2 MB chip RAM and a 68040" +#~ msgstr "Amiga 4000 met 2 MB chip-ram en een 68040" + +#~ msgid "Bethesda" +#~ msgstr "Bethesda" + +#~ msgid "Runner not installed." +#~ msgstr "De runner is niet geïnstalleerd." + +#~ msgid "An error prevented the game from running" +#~ msgstr "Er is een fout opgetreden die het uitvoeren verhinderde" + +#~ msgid "Stop Steam after game exits" +#~ msgstr "Steam afsluiten na beëindigen van game" + +#~ msgid "" +#~ "Shut down Steam after the game has quit\n" +#~ "(only if Steam was started by Lutris)" +#~ msgstr "" +#~ "Sluit Steam af als de game is afgesloten\n" +#~ "(alleen van toepassing als Steam gestart is door Lutris)" + +#~ msgid "Enabled (32bit)" +#~ msgstr "Ingeschakeld (32-bit)" + #~ msgid "Lutris Team" #~ msgstr "Lutris-team" @@ -5602,9 +5792,6 @@ msgstr "Alle Wine-processen beëindigen" #~ msgid "Community Installers" #~ msgstr "Installatiewizards" -#~ msgid "Use cache" -#~ msgstr "Cache gebruiken" - #~ msgid "Use search to find games on winegame.net" #~ msgstr "Gebruik de zoekfuncties om spellen te zoeken op winegame.net" @@ -5947,9 +6134,6 @@ msgstr "Alle Wine-processen beëindigen" #~ msgid "Run the game in a new terminal window." #~ msgstr "Start het spel in een terminalvenster." -#~ msgid "Terminal application" -#~ msgstr "Terminaltoepassing" - #~ msgid "Discord Rich Presence" #~ msgstr "Status tonen op Discord" @@ -6045,9 +6229,6 @@ msgstr "Alle Wine-processen beëindigen" #~ msgid "Click install to continue" #~ msgstr "Klik op 'Installeren' om door te gaan" -#~ msgid "Search WineGame.net" -#~ msgstr "WineGame.net doorzoeken" - #~ msgid "Synchronize library" #~ msgstr "Verzameling synchroniseren" diff --git a/po/pt_BR.po b/po/pt_BR.po index 5302c3872b6f9e8e338bdba6d8c9baa1942b3288..2ed7c36dd317e8a4a32a256c9413dba41081f7a5 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: lutris\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-18 22:54-0300\n" +"POT-Creation-Date: 2022-06-20 16:54+0200\n" "PO-Revision-Date: 2022-03-18 23:12-0300\n" "Last-Translator: Kassin Colombo Dornelles \n" "Language-Team: Brazilian Portuguese \n" @@ -17,7 +17,6 @@ msgstr "" "X-Generator: Gtranslator 40.0\n" #: share/applications/net.lutris.Lutris.desktop:3 -#: share/metainfo/net.lutris.Lutris.metainfo.xml:10 #: share/lutris/ui/lutris-window.ui:25 lutris/gui/application.py:76 #: lutris/gui/widgets/status_icon.py:116 lutris/services/lutris.py:39 msgid "Lutris" @@ -31,10 +30,6 @@ msgstr "plataforma de preservação de video games" msgid "gaming;wine;emulator;" msgstr "gaming;wine;emulação" -#: share/metainfo/net.lutris.Lutris.metainfo.xml:8 -msgid "Lutris Team" -msgstr "Lutris Team" - #: share/metainfo/net.lutris.Lutris.metainfo.xml:11 #: share/lutris/ui/about-dialog.ui:18 msgid "Video game preservation platform" @@ -85,7 +80,7 @@ msgid "Forgot password?" msgstr "Esqueceu a senha?" #: share/lutris/ui/dialog-lutris-login.ui:43 lutris/gui/dialogs/issue.py:52 -#: lutris/gui/installerwindow.py:75 +#: lutris/gui/installerwindow.py:76 msgid "C_ancel" msgstr "C_ancelar" @@ -178,7 +173,7 @@ msgstr "Forums do Lutris" msgid "Make a donation" msgstr "Faça uma doação" -#: lutris/exceptions.py:27 +#: lutris/exceptions.py:26 #, python-brace-format msgid "" "The following {arch} libraries are required but are not installed on your " @@ -189,6 +184,7 @@ msgstr "" "seu sistema:\n" "{libs}" +#. Local services don't show an install dialog, they can be launched directly #: lutris/game_actions.py:60 lutris/gui/widgets/game_bar.py:201 #: lutris/gui/widgets/game_bar.py:215 msgid "Play" @@ -199,7 +195,7 @@ msgid "Stop" msgstr "Parar" #: lutris/game_actions.py:62 lutris/gui/dialogs/runner_install.py:193 -#: lutris/gui/installer/script_box.py:57 lutris/gui/widgets/game_bar.py:210 +#: lutris/gui/installer/script_box.py:62 lutris/gui/widgets/game_bar.py:210 msgid "Install" msgstr "Instalar" @@ -239,7 +235,7 @@ msgstr "Executar script" msgid "Browse files" msgstr "Explorar arquivos" -#: lutris/game_actions.py:75 lutris/gui/installerwindow.py:177 +#: lutris/game_actions.py:75 lutris/gui/installerwindow.py:178 msgid "Create desktop shortcut" msgstr "Criar atalho na área de trabalho" @@ -247,7 +243,7 @@ msgstr "Criar atalho na área de trabalho" msgid "Delete desktop shortcut" msgstr "Deletar atalho na área de trabalho" -#: lutris/game_actions.py:85 lutris/gui/installerwindow.py:181 +#: lutris/game_actions.py:85 lutris/gui/installerwindow.py:182 msgid "Create application menu shortcut" msgstr "Criar atalho no menu de aplicativos" @@ -255,31 +251,41 @@ msgstr "Criar atalho no menu de aplicativos" msgid "Delete application menu shortcut" msgstr "Deletar atalho no menu de aplicativos" -#: lutris/game_actions.py:93 +#: lutris/game_actions.py:95 lutris/gui/installerwindow.py:187 +#, fuzzy +msgid "Create steam shortcut" +msgstr "Criar atalho na área de trabalho" + +#: lutris/game_actions.py:100 +#, fuzzy +msgid "Delete steam shortcut" +msgstr "Deletar atalho na área de trabalho" + +#: lutris/game_actions.py:103 msgid "Install another version" msgstr "Instalar outra versão" -#: lutris/game_actions.py:94 lutris/gui/dialogs/uninstall_game.py:139 +#: lutris/game_actions.py:104 lutris/gui/dialogs/uninstall_game.py:139 msgid "Remove" msgstr "Remover" -#: lutris/game_actions.py:95 +#: lutris/game_actions.py:105 msgid "View on WineGame.net" msgstr "Veja em WineGame.net " -#: lutris/game_actions.py:96 +#: lutris/game_actions.py:106 msgid "Hide game from library" msgstr "Esconder jogo da biblioteca" -#: lutris/game_actions.py:97 +#: lutris/game_actions.py:107 msgid "Unhide game from library" msgstr "Reexibir jogo na biblioteca" -#: lutris/game_actions.py:165 +#: lutris/game_actions.py:185 msgid "Log for {}" msgstr "Log para {}" -#: lutris/game_actions.py:200 +#: lutris/game_actions.py:220 #, python-format msgid "" "Do you wish to duplicate %s?\n" @@ -290,15 +296,15 @@ msgstr "" "A configuração será duplicada, mas os arquivos dos jogos não serão " "duplicados." -#: lutris/game_actions.py:203 +#: lutris/game_actions.py:223 msgid "Duplicate game?" msgstr "Duplicar jogo?" -#: lutris/game_actions.py:264 +#: lutris/game_actions.py:284 msgid "This game has no installation directory" msgstr "Este jogo não tem diretório de instalação" -#: lutris/game_actions.py:268 +#: lutris/game_actions.py:288 #, python-format msgid "" "Can't open %s \n" @@ -326,42 +332,42 @@ msgstr "" "Este jogo não tem um executável definido. O processo de instalação não foi " "concluído corretamente." -#: lutris/game.py:190 +#: lutris/game.py:189 #, python-format msgid "The file %s is not executable" msgstr "O arquivo %s não é executável" -#: lutris/game.py:192 +#: lutris/game.py:191 #, python-format msgid "The path '%s' is not set. please set it in the options." msgstr "O caminho '%s' não está definido. por favor, defina-o nas opções." -#: lutris/game.py:195 +#: lutris/game.py:193 #, python-format msgid "Unhandled error: %s" msgstr "Erro não resolvido: %s" -#: lutris/game.py:299 +#: lutris/game.py:298 msgid "Tried to launch a game that isn't installed." msgstr "Tentei iniciar um jogo que não está instalado." -#: lutris/game.py:302 +#: lutris/game.py:300 lutris/game.py:417 msgid "Invalid game configuration: Missing runner" msgstr "Configuração de jogo inválida: runner ausente" -#: lutris/game.py:307 -msgid "Runner not installed." -msgstr "Runner não instalado." - -#: lutris/game.py:313 +#: lutris/game.py:309 msgid "Runtime currently updating" msgstr "Runtime atualmente atualizando" -#: lutris/game.py:313 +#: lutris/game.py:309 msgid "Game might not work as expected" msgstr "Jogo pode não funcionar como esperado" -#: lutris/game.py:402 +#: lutris/game.py:342 +msgid "Unable to find Xephyr, install it or disable the Xephyr option" +msgstr "" + +#: lutris/game.py:398 #, python-format msgid "" "The selected terminal application could not be launched:\n" @@ -370,15 +376,16 @@ msgstr "" "O aplicativo de terminal selecionado não pôde ser iniciado:\n" "%s" -#: lutris/game.py:454 -msgid "An error prevented the game from running" -msgstr "Um erro impediu o jogo de executar" +#. The 'file' sort of gameplay_info cannot be made to use a configuration +#: lutris/game.py:434 +msgid "The runner could not find a command to apply the configuration to." +msgstr "" -#: lutris/game.py:646 +#: lutris/game.py:635 msgid "Error lauching the game:\n" msgstr "Erro ao iniciar o jogo:\n" -#: lutris/game.py:738 +#: lutris/game.py:727 #, python-format msgid "" "Error: Missing shared library.\n" @@ -389,7 +396,7 @@ msgstr "" "\n" "%s" -#: lutris/game.py:744 +#: lutris/game.py:733 msgid "" "Error: A different Wine version is already using the same Wine prefix." msgstr "" @@ -441,6 +448,10 @@ msgstr "Manualmente configure um jogo disponível localmente" msgid "Add games to Lutris" msgstr "Adicionar jogos ao Lutris" +#: lutris/gui/addgameswindow.py:126 +msgid "Search Lutris.net" +msgstr "" + #: lutris/gui/addgameswindow.py:149 msgid "Select folder to scan" msgstr "Selecione uma pasta para escanear" @@ -463,10 +474,25 @@ msgstr "{total_count} resultados, exibindo apenas o primeiro {count}" msgid "Select setup file" msgstr "Selecione arquivo de instalação" +#: lutris/gui/addgameswindow.py:245 +#, fuzzy +msgid "Game name" +msgstr "Informações do jogo" + #: lutris/gui/addgameswindow.py:249 msgid "Continue" msgstr "Continuar" +#: lutris/gui/addgameswindow.py:257 +#, fuzzy +msgid "Setup file" +msgstr "Selecionar arquivo" + +#: lutris/gui/addgameswindow.py:266 +#, fuzzy +msgid "Select the setup file" +msgstr "Selecione arquivo de instalação" + #: lutris/gui/addgameswindow.py:279 msgid "Select a Lutris installer" msgstr "Selecione um instalador Lutris" @@ -754,11 +780,13 @@ msgstr "Opções do runner" msgid "System options" msgstr "Opções do sistema" +#. Advanced settings checkbox #: lutris/gui/config/common.py:322 msgid "Show advanced options" msgstr "Mostrar opções avançadas" -#: lutris/gui/config/common.py:330 lutris/gui/dialogs/runner_install.py:186 +#: lutris/gui/config/common.py:330 lutris/gui/dialogs/__init__.py:268 +#: lutris/gui/dialogs/runner_install.py:186 #: lutris/gui/dialogs/uninstall_game.py:60 #: lutris/gui/dialogs/uninstall_game.py:135 #: lutris/gui/widgets/download_progress_box.py:95 @@ -973,8 +1001,8 @@ msgstr "Iniciar jogo" msgid "Install the game again" msgstr "Instalar o jogo de novo" -#: lutris/gui/dialogs/__init__.py:229 lutris/gui/dialogs/__init__.py:265 -#: lutris/gui/dialogs/__init__.py:347 +#: lutris/gui/dialogs/__init__.py:229 lutris/gui/dialogs/__init__.py:272 +#: lutris/gui/dialogs/__init__.py:360 msgid "OK" msgstr "OK" @@ -982,23 +1010,23 @@ msgstr "OK" msgid "Select game to launch" msgstr "Selecionar jogo para iniciar" -#: lutris/gui/dialogs/__init__.py:320 +#: lutris/gui/dialogs/__init__.py:333 msgid "Login failed" msgstr "Login falhou" -#: lutris/gui/dialogs/__init__.py:331 +#: lutris/gui/dialogs/__init__.py:344 msgid "Install script for {}" msgstr "Script de instalação para {}" -#: lutris/gui/dialogs/__init__.py:383 +#: lutris/gui/dialogs/__init__.py:396 msgid "Do not display this message again." msgstr "Não mostrar essa mensagem novamente." -#: lutris/gui/dialogs/__init__.py:404 +#: lutris/gui/dialogs/__init__.py:417 msgid "Wine is not installed on your system." msgstr "Wine não está instalado no seu sistema" -#: lutris/gui/dialogs/__init__.py:406 +#: lutris/gui/dialogs/__init__.py:419 msgid "" "Having Wine installed on your system guarantees that Wine builds from Lutris " "will have all required dependencies.\n" @@ -1012,7 +1040,7 @@ msgstr "" "Por favor, siga as instruções fornecidas no Lutris Wiki para instalar o Wine." -#: lutris/gui/dialogs/__init__.py:432 +#: lutris/gui/dialogs/__init__.py:445 #, python-format msgid "Moving %s to %s..." msgstr "Movendo %s para %s..." @@ -1175,7 +1203,7 @@ msgstr "" "Remover %s completamente da biblioteca?\n" "Todo o tempo de jogo será perdido." -#: lutris/gui/dialogs/webconnect_dialog.py:92 +#: lutris/gui/dialogs/webconnect_dialog.py:106 msgid "Loading..." msgstr "Carregando..." @@ -1189,6 +1217,26 @@ msgstr "Jogo Steam {appid}" msgid "{file} on {host}" msgstr "{file} em {host}" +#: lutris/gui/installer/file_box.py:121 +#, fuzzy +msgid "Download" +msgstr "Downloads" + +#: lutris/gui/installer/file_box.py:123 +#, fuzzy +msgid "Use Cache" +msgstr "Cache" + +#: lutris/gui/installer/file_box.py:125 lutris/runners/steam.py:29 +#: lutris/services/steam.py:73 +msgid "Steam" +msgstr "" + +#: lutris/gui/installer/file_box.py:126 +#, fuzzy +msgid "Select File" +msgstr "Selecionar arquivo" + #: lutris/gui/installer/file_box.py:187 msgid "Cache file for future installations" msgstr "Arquivo de cache para instalações futuras" @@ -1197,122 +1245,129 @@ msgstr "Arquivo de cache para instalações futuras" msgid "Source:" msgstr "Fonte:" -#: lutris/gui/installerwindow.py:64 +#: lutris/gui/installerwindow.py:65 msgid "Cache" msgstr "Cache" -#: lutris/gui/installerwindow.py:75 +#: lutris/gui/installerwindow.py:76 msgid "Abort and revert the installation" msgstr "Abortar e reverter a instalação" -#: lutris/gui/installerwindow.py:77 +#: lutris/gui/installerwindow.py:78 msgid "_Eject" msgstr "_Ejetar" -#: lutris/gui/installerwindow.py:78 +#: lutris/gui/installerwindow.py:79 msgid "_View source" msgstr "_Ver fonte" -#: lutris/gui/installerwindow.py:79 +#: lutris/gui/installerwindow.py:80 msgid "_Install" msgstr "_Instalar" -#: lutris/gui/installerwindow.py:80 +#: lutris/gui/installerwindow.py:81 msgid "_Continue" msgstr "_Continuar" -#: lutris/gui/installerwindow.py:81 +#: lutris/gui/installerwindow.py:82 msgid "_Launch" msgstr "_Iniciar" -#: lutris/gui/installerwindow.py:82 +#: lutris/gui/installerwindow.py:83 msgid "_Close" msgstr "_Fechar" -#: lutris/gui/installerwindow.py:121 +#: lutris/gui/installerwindow.py:122 #, python-format msgid "Missing field \"%s\" in install script" msgstr "Campo ausente \"%s\" no script de instalação" -#: lutris/gui/installerwindow.py:127 +#: lutris/gui/installerwindow.py:128 #, python-format msgid "Install %s" msgstr "Instalar %s" -#: lutris/gui/installerwindow.py:161 +#: lutris/gui/installerwindow.py:162 #, python-format msgid "This game requires %s. Do you want to install it?" msgstr "Este jogo requer %s. Deseja instalá-lo?" -#: lutris/gui/installerwindow.py:162 +#: lutris/gui/installerwindow.py:163 msgid "Missing dependency" msgstr "Dependência ausente" -#: lutris/gui/installerwindow.py:174 +#: lutris/gui/installerwindow.py:175 msgid "Installing {}" msgstr "Instalando {}" -#: lutris/gui/installerwindow.py:190 +#: lutris/gui/installerwindow.py:196 msgid "Select installation directory" msgstr "Selecione o diretório de instalação" -#: lutris/gui/installerwindow.py:240 +#: lutris/gui/installerwindow.py:246 msgid "Autodetect" msgstr "Detecção automática" -#: lutris/gui/installerwindow.py:246 +#: lutris/gui/installerwindow.py:252 msgid "Browse…" msgstr "Navegar…" -#: lutris/gui/installerwindow.py:253 +#: lutris/gui/installerwindow.py:259 msgid "Select the folder where the disc is mounted" msgstr "Selecione a pasta onde o disco está montado" -#: lutris/gui/installerwindow.py:314 +#: lutris/gui/installerwindow.py:320 msgid "" "Please review the files needed for the installation then click 'Continue'" msgstr "" "Por favor, revise os arquivos necessários para a instalação e clique em " "'Continuar'" -#: lutris/gui/installerwindow.py:449 +#: lutris/gui/installerwindow.py:358 +msgid "" +"This game has extra content. \n" +"Select which one you want and they will be available in the 'extras' folder " +"where the game is installed." +msgstr "" + +#: lutris/gui/installerwindow.py:459 #, python-format msgid "Unable to get files: %s" msgstr "Não foi possível obter os arquivos: %s" -#: lutris/gui/installerwindow.py:539 +#: lutris/gui/installerwindow.py:554 msgid "Remove game files" msgstr "Remover arquivos do jogo" -#: lutris/gui/installerwindow.py:545 +#: lutris/gui/installerwindow.py:560 msgid "Are you sure you want to cancel the installation?" msgstr "Tem certeza de que deseja cancelar a instalação?" -#: lutris/gui/installerwindow.py:546 +#: lutris/gui/installerwindow.py:561 msgid "Cancel installation?" msgstr "Cancelar instalação?" -#: lutris/gui/lutriswindow.py:344 +#: lutris/gui/lutriswindow.py:345 #, python-format msgid "Connect your %s account to access your games" msgstr "Conecte sua conta %s para acessar seus jogos" -#: lutris/gui/lutriswindow.py:415 +#: lutris/gui/lutriswindow.py:416 #, python-format msgid "No games matching '%s' found " msgstr "Nenhum jogo correspondente a '%s' encontrado" -#: lutris/gui/lutriswindow.py:418 +#: lutris/gui/lutriswindow.py:419 msgid "Add games to your favorites to see them here." msgstr "Adicione jogos aos seus favoritos para vê-los aqui." -#: lutris/gui/lutriswindow.py:420 +#: lutris/gui/lutriswindow.py:421 msgid "No installed games found. Press Ctrl+H to show all games." msgstr "" "Nenhum jogo instalado encontrado. Pressione Ctrl+H para mostrar todos os " "jogos." -#: lutris/gui/lutriswindow.py:428 +#: lutris/gui/lutriswindow.py:430 msgid "No games found" msgstr "Nenhum jogo encontrado" @@ -1459,8 +1514,8 @@ msgstr "Parar" msgid "One of {params} parameter is mandatory for the {cmd} command" msgstr "Um dos parâmetros {params} é obrigatório para o comando {cmd}" -#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:122 -#: lutris/installer/interpreter.py:145 +#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:123 +#: lutris/installer/interpreter.py:146 msgid " or " msgstr " ou " @@ -1601,11 +1656,11 @@ msgstr "A chave de configuração do jogo deve ser uma string" msgid "Invalid 'game' section" msgstr "Seção 'jogo' inválida" -#: lutris/installer/interpreter.py:52 +#: lutris/installer/interpreter.py:53 msgid "This installer doesn't have a 'script' section" msgstr "Este instalador não tem uma seção 'script'" -#: lutris/installer/interpreter.py:56 +#: lutris/installer/interpreter.py:57 msgid "" "Invalid script: \n" "{}" @@ -1613,38 +1668,38 @@ msgstr "" "Script inválido: \n" "{}" -#: lutris/installer/interpreter.py:122 lutris/installer/interpreter.py:125 +#: lutris/installer/interpreter.py:123 lutris/installer/interpreter.py:126 #, python-format msgid "This installer requires %s on your system" msgstr "Este instalador requer %s em seu sistema" -#: lutris/installer/interpreter.py:138 +#: lutris/installer/interpreter.py:139 msgid "You need to install {} before" msgstr "Você precisa instalar {} antes" -#: lutris/installer/interpreter.py:186 +#: lutris/installer/interpreter.py:187 msgid "Lutris does not have the necessary permissions to install to path:" msgstr "Lutris não tem as permissões necessárias para instalar no caminho:" -#: lutris/installer/interpreter.py:270 +#: lutris/installer/interpreter.py:271 #, python-format msgid "Invalid runner provided %s" msgstr "Runner fornecido é inválido %s" -#: lutris/installer/interpreter.py:296 +#: lutris/installer/interpreter.py:297 msgid "Installing game data" msgstr "Instalando dados do jogo" -#: lutris/installer/interpreter.py:308 +#: lutris/installer/interpreter.py:309 msgid "Installer commands are not formatted correctly" msgstr "Os comandos do instalador não estão formatados corretamente" -#: lutris/installer/interpreter.py:340 +#: lutris/installer/interpreter.py:342 #, python-format msgid "The command \"%s\" does not exist." msgstr "O comando \"%s\" não existe." -#: lutris/installer/interpreter.py:357 +#: lutris/installer/interpreter.py:363 #, python-format msgid "" "The executable at path %s can't be found, please check the destination " @@ -1656,7 +1711,7 @@ msgstr "" "Algumas partes do processo de instalação podem não ter sido concluídas com " "êxito." -#: lutris/installer/interpreter.py:363 +#: lutris/installer/interpreter.py:369 msgid "Installation completed!" msgstr "Instalação completa!" @@ -1900,7 +1955,7 @@ msgstr "Executa jogos RPG Maker 2000/2003" #: lutris/runners/easyrpg.py:12 lutris/runners/linux.py:14 #: lutris/runners/linux.py:16 lutris/runners/residualvm.py:15 -#: lutris/runners/scummvm.py:14 lutris/runners/steam.py:43 +#: lutris/runners/scummvm.py:14 lutris/runners/steam.py:30 #: lutris/runners/zdoom.py:15 msgid "Linux" msgstr "" @@ -1935,7 +1990,7 @@ msgstr "Desabilite a detecção automática do motor simulado." #: lutris/runners/easyrpg.py:41 lutris/runners/fsuae.py:50 #: lutris/runners/mame.py:173 lutris/runners/wine.py:82 -#: lutris/runners/wine.py:417 +#: lutris/runners/wine.py:416 msgid "Auto" msgstr "" @@ -2122,7 +2177,7 @@ msgstr "" "Desligue para desabilitar o VSync e use o limite de FPS. O VSync pode ou não " "ser suportado em todas as plataformas." -#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:316 +#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:318 msgid "FPS limit" msgstr "limite de FPS" @@ -2136,7 +2191,7 @@ msgstr "" "o padrão é 60 FPS.Definir como '0' para desabilitar o limitador de quadros. " "Esta opção pode não ser suportada em todas as plataformas" -#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:443 +#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:442 msgid "Show FPS" msgstr "Exibir FPS" @@ -2145,7 +2200,7 @@ msgid "Enable frames per second counter." msgstr "Habilitar contador de quadros por segundo." #: lutris/runners/easyrpg.py:209 lutris/runners/mednafen.py:85 -#: lutris/runners/wine.py:440 lutris/sysoptions.py:302 +#: lutris/runners/wine.py:439 msgid "Disabled" msgstr "Desabilitado" @@ -2786,11 +2841,11 @@ msgstr "Arquivo de configuração" msgid "Verbose logging" msgstr "Logging detalhado" -#: lutris/runners/libretro.py:273 +#: lutris/runners/libretro.py:271 msgid "No core has been selected for this game" msgstr "Nenhum núcleo foi selecionado para este jogo" -#: lutris/runners/libretro.py:284 +#: lutris/runners/libretro.py:282 msgid "No game file specified" msgstr "Nenhum arquivo de jogo especificado" @@ -2807,8 +2862,8 @@ msgid "The game's main executable file" msgstr "O executável principal do jogo" #: lutris/runners/linux.py:30 lutris/runners/mame.py:124 -#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:60 -#: lutris/runners/steam.py:122 lutris/runners/wine.py:54 +#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:47 +#: lutris/runners/steam.py:99 lutris/runners/wine.py:54 #: lutris/runners/zdoom.py:27 msgid "Arguments" msgstr "Argumentos" @@ -3304,7 +3359,7 @@ msgstr "" msgid "Brandt Jopac" msgstr "" -#: lutris/runners/o2em.py:36 lutris/runners/wine.py:398 +#: lutris/runners/o2em.py:36 lutris/runners/wine.py:397 msgid "Disable" msgstr "Desabilitar" @@ -3605,6 +3660,7 @@ msgstr "" msgid "ResidualVM" msgstr "" +#. TODO #: lutris/runners/residualvm.py:16 msgid "3D point-and-click adventure games engine" msgstr "Motor de jogos de aventura point-and-click 3D" @@ -3649,11 +3705,11 @@ msgstr "" msgid "Path to EBOOT.BIN" msgstr "Caminho para EBOOT.BIN" -#: lutris/runners/runner.py:145 +#: lutris/runners/runner.py:148 msgid "Custom executable for the runner" msgstr "Executável personalizado para o runner" -#: lutris/runners/runner.py:289 +#: lutris/runners/runner.py:293 msgid "" "The required runner is not installed.\n" "Do you wish to install it now?" @@ -3661,7 +3717,7 @@ msgstr "" "O runner necessário não está instalado.\n" "Você deseja instalá-lo agora?" -#: lutris/runners/runner.py:291 +#: lutris/runners/runner.py:295 msgid "Required runner unavailable" msgstr "Runner obrigatório indisponível" @@ -3970,19 +4026,15 @@ msgstr "" msgid "Sound driver" msgstr "Driver de som" -#: lutris/runners/steam.py:41 +#: lutris/runners/steam.py:28 msgid "Runs Steam for Linux games" msgstr "Executa jogos da Steam para Linux" -#: lutris/runners/steam.py:42 lutris/services/steam.py:73 -msgid "Steam" -msgstr "" - -#: lutris/runners/steam.py:48 +#: lutris/runners/steam.py:35 msgid "Application ID" msgstr "ID do Aplicativo" -#: lutris/runners/steam.py:51 +#: lutris/runners/steam.py:38 msgid "" "The application ID can be retrieved from the game's page at steampowered." "com. Example: 235320 is the app ID for Original War in: \n" @@ -3992,7 +4044,7 @@ msgstr "" "com. Exemplo: 235320 é o ID do aplicativo para Original War em: \n" "http://store.steampowered.com/app/235320/" -#: lutris/runners/steam.py:62 +#: lutris/runners/steam.py:49 msgid "" "Command line arguments used when launching the game.\n" "Ignored when Steam Big Picture mode is enabled." @@ -4000,42 +4052,30 @@ msgstr "" "Argumentos de linha de comando usados ao iniciar o jogo.\n" "Ignorado quando o modo Steam Big Picture está ativado." -#: lutris/runners/steam.py:68 +#: lutris/runners/steam.py:55 msgid "DRM free mode (Do not launch Steam)" msgstr "Modo DRM-free (não inicie a Steam)" -#: lutris/runners/steam.py:73 +#: lutris/runners/steam.py:60 msgid "" "Run the game directly without Steam, requires the game binary path to be set" msgstr "" "Execute o jogo diretamente sem a Steam, requer que o caminho do binário do " "jogo seja definido" -#: lutris/runners/steam.py:79 +#: lutris/runners/steam.py:66 msgid "Game binary path" msgstr "Caminho do binário do jogo" -#: lutris/runners/steam.py:81 +#: lutris/runners/steam.py:68 msgid "Path to the game executable (Required by DRM free mode)" msgstr "Caminho para o executável do jogo (Requerido pelo modo DRM-free)" -#: lutris/runners/steam.py:87 -msgid "Stop Steam after game exits" -msgstr "Parar a Steam após o jogo encerrar" - -#: lutris/runners/steam.py:91 -msgid "" -"Shut down Steam after the game has quit\n" -"(only if Steam was started by Lutris)" -msgstr "" -"Encerre a Steam depois que o jogo for encerrado\n" -"(somente se o Steam foi iniciada por Lutris)" - -#: lutris/runners/steam.py:97 +#: lutris/runners/steam.py:74 msgid "Start Steam in Big Picture mode" msgstr "Iniciar a Steam no modo Big Picture" -#: lutris/runners/steam.py:101 +#: lutris/runners/steam.py:78 msgid "" "Launches Steam in Big Picture mode.\n" "Only works if Steam is not running or already running in Big Picture mode.\n" @@ -4046,11 +4086,11 @@ msgstr "" "Picture.\n" "Útil ao jogar com um Controle Steam." -#: lutris/runners/steam.py:109 +#: lutris/runners/steam.py:86 msgid "Start Steam with LSI" msgstr "Iniciar Steam com LSI" -#: lutris/runners/steam.py:113 +#: lutris/runners/steam.py:90 msgid "" "Launches steam with LSI patches enabled. Make sure Lutris Runtime is " "disabled and you have LSI installed. https://github.com/solus-project/linux-" @@ -4060,11 +4100,11 @@ msgstr "" "Runtime está desativado e você tem o LSI instalado. https://github.com/solus-" "project/linux-steam-integration" -#: lutris/runners/steam.py:124 +#: lutris/runners/steam.py:101 msgid "Extra command line arguments used when launching Steam" msgstr "Argumentos extras de linha de comando usados ao iniciar a Steam" -#: lutris/runners/steam.py:131 +#: lutris/runners/steam.py:108 msgid "Remove game data (through Steam)" msgstr "Remover dados do jogo (através da Steam)" @@ -4512,10 +4552,11 @@ msgid "Enable Fsync" msgstr "Habilitar Fsync" #: lutris/runners/wine.py:317 +#, fuzzy msgid "" "Enable futex-based synchronization (fsync). This will increase performance " -"in applications that take advantage of multi-core processors. Requires a " -"custom kernel with the fsync patchset." +"in applications that take advantage of multi-core processors. Requires " +"kernel 5.16 or above." msgstr "" "Ative a sincronização baseada em futex (fsync). Isso aumentará o desempenho " "em aplicativos que tiram proveito de processadores multi-core. Requer um " @@ -4592,20 +4633,21 @@ msgid "Enable DPI Scaling" msgstr "Habilitar escala de DPI" #: lutris/runners/wine.py:378 +#, fuzzy msgid "" "Enables the Windows application's DPI scaling.\n" -"Otherwise, disables DPI scaling by using 96 DPI.\n" -"This corresponds to Wine's Screen Resolution option." +"Otherwise, the Screen Resolution option in 'Wine configuration' controls " +"this." msgstr "" "Ativa o dimensionamento de DPI do aplicativo do Windows.\n" "Caso contrário, desativa o dimensionamento de DPI, usando DPI de 96.\n" "Isso corresponde à opção de resolução de tela do Wine." -#: lutris/runners/wine.py:385 +#: lutris/runners/wine.py:384 msgid "DPI" msgstr "DPI" -#: lutris/runners/wine.py:388 +#: lutris/runners/wine.py:387 msgid "" "The DPI to be used if 'Enable DPI Scaling' is turned on.\n" "If blank or 'auto', Lutris will auto-detect this." @@ -4613,19 +4655,19 @@ msgstr "" "O DPI a ser usado se 'Habilitar escala de DPI' estiver ativado.\n" "Se estiver em branco ou 'auto', o Lutris detectará isso automaticamente." -#: lutris/runners/wine.py:394 +#: lutris/runners/wine.py:393 msgid "Mouse Warp Override" msgstr "Sobreposição de Distorção do Mouse " -#: lutris/runners/wine.py:397 +#: lutris/runners/wine.py:396 msgid "Enable" msgstr "Habilitar" -#: lutris/runners/wine.py:399 +#: lutris/runners/wine.py:398 msgid "Force" msgstr "Force" -#: lutris/runners/wine.py:404 +#: lutris/runners/wine.py:403 msgid "" "Override the default mouse pointer warping behavior\n" "Enable: (Wine default) warp the pointer when the mouse is exclusively " @@ -4639,11 +4681,11 @@ msgstr "" "Desabilitar: nunca distorcer o ponteiro do mouse \n" "Forçar: sempre distorcer o ponteiro" -#: lutris/runners/wine.py:413 +#: lutris/runners/wine.py:412 msgid "Audio driver" msgstr "Driver de áudio" -#: lutris/runners/wine.py:424 +#: lutris/runners/wine.py:423 msgid "" "Which audio backend to use.\n" "By default, Wine automatically picks the right one for your system." @@ -4651,44 +4693,44 @@ msgstr "" "Qual back-end de áudio usar.\n" "Por padrão, o Wine escolhe automaticamente o certo para o seu sistema." -#: lutris/runners/wine.py:432 +#: lutris/runners/wine.py:431 msgid "DLL overrides" msgstr "Substituições de DLL" -#: lutris/runners/wine.py:433 +#: lutris/runners/wine.py:432 msgid "Sets WINEDLLOVERRIDES when launching the game." msgstr "Define WINEDLLOVERRIDES ao iniciar o jogo." -#: lutris/runners/wine.py:437 +#: lutris/runners/wine.py:436 msgid "Output debugging info" msgstr "Informações de depuração de saída" -#: lutris/runners/wine.py:441 +#: lutris/runners/wine.py:440 msgid "Enabled" msgstr "Habilitado" -#: lutris/runners/wine.py:442 +#: lutris/runners/wine.py:441 msgid "Inherit from environment" msgstr "Usar do ambiente" -#: lutris/runners/wine.py:444 +#: lutris/runners/wine.py:443 msgid "Full (CAUTION: Will cause MASSIVE slowdown)" msgstr "Completo (CUIDADO: causará lentidão MASSIVA)" -#: lutris/runners/wine.py:447 +#: lutris/runners/wine.py:446 msgid "Output debugging information in the game log (might affect performance)" msgstr "" "Saída de informações de depuração no log do jogo (pode afetar o desempenho)" -#: lutris/runners/wine.py:452 +#: lutris/runners/wine.py:451 msgid "Show crash dialogs" msgstr "Mostrar caixas de diálogo de falha" -#: lutris/runners/wine.py:460 +#: lutris/runners/wine.py:459 msgid "Autoconfigure joypads" msgstr "Autoconfigurar controles" -#: lutris/runners/wine.py:464 +#: lutris/runners/wine.py:463 msgid "" "Automatically disables one of Wine's detected joypad to avoid having 2 " "controllers detected" @@ -4696,11 +4738,11 @@ msgstr "" "Desativa automaticamente um dos controles detectados pelo Wine para evitar " "ter 2controladores detectados" -#: lutris/runners/wine.py:470 +#: lutris/runners/wine.py:469 msgid "Create a sandbox for Wine folders" msgstr "Criar uma sandbox para pastas Wine" -#: lutris/runners/wine.py:474 +#: lutris/runners/wine.py:473 msgid "" "Do not use $HOME for desktop integration folders.\n" "By default, it use the directories in the confined Windows environment." @@ -4708,39 +4750,39 @@ msgstr "" "Não use $HOME para pastas de integração da área de trabalho.\n" "Por padrão, ele usa os diretórios no ambiente Windows confinado." -#: lutris/runners/wine.py:482 +#: lutris/runners/wine.py:481 msgid "Sandbox directory" msgstr "Diretório sandbox" -#: lutris/runners/wine.py:483 +#: lutris/runners/wine.py:482 msgid "Custom directory for desktop integration folders." msgstr "Diretório personalizado para pastas de integração da área de trabalho." -#: lutris/runners/wine.py:491 +#: lutris/runners/wine.py:490 msgid "Run EXE inside Wine prefix" msgstr "Executar EXE dentro do prefixo Wine" -#: lutris/runners/wine.py:493 +#: lutris/runners/wine.py:492 msgid "Wine configuration" msgstr "Configuração do Wine" -#: lutris/runners/wine.py:495 +#: lutris/runners/wine.py:494 msgid "Open Bash terminal" msgstr "Abrir terminal Bash" -#: lutris/runners/wine.py:496 +#: lutris/runners/wine.py:495 msgid "Open Wine console" msgstr "Abra o console do Wine" -#: lutris/runners/wine.py:497 +#: lutris/runners/wine.py:496 msgid "Wine registry" msgstr "Registro do Wine" -#: lutris/runners/wine.py:498 +#: lutris/runners/wine.py:497 msgid "Winetricks" msgstr "" -#: lutris/runners/wine.py:499 +#: lutris/runners/wine.py:498 msgid "Wine Control Panel" msgstr "Painel de Controle do Wine" @@ -4752,6 +4794,7 @@ msgstr "Selecione um arquivo EXE ou MSI" msgid "Yuzu" msgstr "" +#. http://zdoom.org/wiki/Command_line_parameters #: lutris/runners/zdoom.py:13 msgid "ZDoom DOOM Game Engine" msgstr "" @@ -4902,11 +4945,11 @@ msgstr "(c) 2010-2022 Lutris Team" msgid "The Lutris team" msgstr "" -#: lutris/startup.py:86 +#: lutris/startup.py:87 msgid "Your NVIDIA driver is outdated." msgstr "Seu driver NVIDIA está desatualizado" -#: lutris/startup.py:88 +#: lutris/startup.py:89 #, python-format msgid "" "You are currently running driver %s which does not fully support all " @@ -4919,11 +4962,11 @@ msgstr "" "Atualize seu driver conforme descrito em nossa installation " "guide" -#: lutris/startup.py:119 +#: lutris/startup.py:120 msgid "Missing vulkan libraries" msgstr "Bibliotecas vulkan ausentes" -#: lutris/startup.py:121 +#: lutris/startup.py:122 #, python-format msgid "" "Lutris was unable to detect Vulkan support for the %s architecture.\n" @@ -4936,20 +4979,20 @@ msgstr "" "Para instalá-lo, use o seguinte guia: Installing Graphics " "Drivers" -#: lutris/startup.py:127 +#: lutris/startup.py:128 msgid " and " msgstr " e " -#: lutris/sysoptions.py:30 +#: lutris/sysoptions.py:29 msgid "Keep current" msgstr "Manter atual" -#: lutris/sysoptions.py:38 lutris/sysoptions.py:47 lutris/sysoptions.py:58 -#: lutris/sysoptions.py:499 +#: lutris/sysoptions.py:37 lutris/sysoptions.py:46 lutris/sysoptions.py:57 +#: lutris/sysoptions.py:501 msgid "Off" msgstr "Off" -#: lutris/sysoptions.py:39 +#: lutris/sysoptions.py:38 msgid "Primary" msgstr "Primário" @@ -4957,31 +5000,31 @@ msgstr "Primário" msgid "Auto: WARNING -- No Vulkan Loader detected!" msgstr "Auto: AVISO -- Nenhum Vulkan Loader detectado!" -#: lutris/sysoptions.py:115 +#: lutris/sysoptions.py:119 msgid "Auto: Intel Open Source (MESA: ANV)" msgstr "" -#: lutris/sysoptions.py:117 +#: lutris/sysoptions.py:121 msgid "Auto: AMD RADV Open Source (MESA: RADV)" msgstr "" -#: lutris/sysoptions.py:119 +#: lutris/sysoptions.py:123 msgid "Auto: Nvidia Proprietary" msgstr "" -#: lutris/sysoptions.py:136 +#: lutris/sysoptions.py:145 msgid "Default installation folder" msgstr "Pasta de instalação padrão" -#: lutris/sysoptions.py:139 +#: lutris/sysoptions.py:148 msgid "The default folder where you install your games." msgstr "A pasta padrão onde você instala seus jogos." -#: lutris/sysoptions.py:147 +#: lutris/sysoptions.py:156 msgid "Disable Lutris Runtime" msgstr "Desabilitar o Lutris Runtime" -#: lutris/sysoptions.py:150 +#: lutris/sysoptions.py:159 msgid "" "The Lutris Runtime loads some libraries before running the game, which can " "cause some incompatibilities in some cases. Check this option to disable it." @@ -4990,11 +5033,11 @@ msgstr "" "pode causar algumas incompatibilidades em alguns casos. Marque esta opção " "para desativá-la." -#: lutris/sysoptions.py:157 +#: lutris/sysoptions.py:166 msgid "Prefer system libraries" msgstr "Preferir bibliotecas do sistema" -#: lutris/sysoptions.py:159 +#: lutris/sysoptions.py:168 msgid "" "When the runtime is enabled, prioritize the system libraries over the " "provided ones." @@ -5002,11 +5045,11 @@ msgstr "" "Quando o Runtime está habilitado, priorize as bibliotecas do sistema ao " "invés dos fornecidos" -#: lutris/sysoptions.py:165 +#: lutris/sysoptions.py:174 msgid "Restore resolution on game exit" msgstr "Restaurar a resolução ao sair do jogo" -#: lutris/sysoptions.py:167 +#: lutris/sysoptions.py:176 msgid "" "Some games don't restore your screen resolution when \n" "closed or when they crash. This is when this option comes \n" @@ -5016,11 +5059,11 @@ msgstr "" "fechados ou quando travam. É quando esta opção entra \n" "em jogo para salvar sua pele." -#: lutris/sysoptions.py:174 +#: lutris/sysoptions.py:183 msgid "Enable gamescope" msgstr "Habilitar gamescope" -#: lutris/sysoptions.py:178 +#: lutris/sysoptions.py:187 msgid "" "Use gamescope to draw the game window isolated from your desktop.\n" "Use Ctrl+Super+F to toggle fullscreen" @@ -5029,35 +5072,35 @@ msgstr "" "trabalho.\n" "Use Ctrl+Super+F para alternar para tela cheia" -#: lutris/sysoptions.py:184 +#: lutris/sysoptions.py:193 msgid "Gamescope output resolution" msgstr "Resolução de saída do gamescope" -#: lutris/sysoptions.py:188 +#: lutris/sysoptions.py:197 msgid "Resolution of the window on your desktop" msgstr "Resolução da janela na área de trabalho" -#: lutris/sysoptions.py:193 +#: lutris/sysoptions.py:202 msgid "Gamescope game resolution" msgstr "Gamescope Resolução do jogo" -#: lutris/sysoptions.py:197 +#: lutris/sysoptions.py:206 msgid "Resolution of the screen visible to the game" msgstr "Resolução da tela visível para o jogo" -#: lutris/sysoptions.py:202 +#: lutris/sysoptions.py:211 msgid "Restrict number of cores used" msgstr "Restringir numero de núcleos usados" -#: lutris/sysoptions.py:205 +#: lutris/sysoptions.py:214 msgid "Restrict the game to a maximum number of CPU cores." msgstr "Restrinja o jogo a um número máximo de núcleos de CPU." -#: lutris/sysoptions.py:210 +#: lutris/sysoptions.py:219 msgid "Restrict number of cores to" msgstr "Restringir a um único núcleo" -#: lutris/sysoptions.py:213 +#: lutris/sysoptions.py:222 msgid "" "Maximum number of CPU cores to be used, if 'Restrict number of cores used' " "is turned on." @@ -5065,11 +5108,11 @@ msgstr "" "Número máximo de núcleos de CPU a serem usados, se 'Restringir número de " "núcleos usados' estiver ativado." -#: lutris/sysoptions.py:219 +#: lutris/sysoptions.py:228 msgid "Restore gamma on game exit" msgstr "Restaurar gama ao sair do jogo" -#: lutris/sysoptions.py:221 +#: lutris/sysoptions.py:230 msgid "" "Some games don't correctly restores gamma on exit, making your display too " "bright. Select this option to correct it." @@ -5077,11 +5120,11 @@ msgstr "" "Alguns jogos não restauram corretamente a gama ao sair, tornando sua tela " "muito brilhante. Selecione esta opção para corrigi-la." -#: lutris/sysoptions.py:226 +#: lutris/sysoptions.py:235 msgid "Disable desktop effects" msgstr "Desabilitar efeitos da área de trabalho" -#: lutris/sysoptions.py:230 +#: lutris/sysoptions.py:239 msgid "" "Disable desktop effects while game is running, reducing stuttering and " "increasing performance" @@ -5089,11 +5132,11 @@ msgstr "" "Desabilite os efeitos da área de trabalho enquanto o jogo estiver em " "execução, reduzindo a stutters e aumentando o desempenho" -#: lutris/sysoptions.py:235 +#: lutris/sysoptions.py:244 msgid "Disable screen saver" msgstr "Desabilitar protetor de tela" -#: lutris/sysoptions.py:240 +#: lutris/sysoptions.py:249 msgid "" "Disable the screen saver while a game is running. Requires the screen " "saver's functionality to be exposed over DBus." @@ -5101,19 +5144,19 @@ msgstr "" "Desabilite o protetor de tela enquanto um jogo estiver em execução. Requer " "que a funcionalidade do protetor de tela seja exposta no DBus" -#: lutris/sysoptions.py:247 +#: lutris/sysoptions.py:256 msgid "Reset PulseAudio" msgstr "Resetar PulseAudio" -#: lutris/sysoptions.py:251 +#: lutris/sysoptions.py:260 msgid "Restart PulseAudio before launching the game." msgstr "Reinicie o PulseAudio antes de iniciar o jogo." -#: lutris/sysoptions.py:256 +#: lutris/sysoptions.py:265 msgid "Reduce PulseAudio latency" msgstr "Reduzir a latência do PulseAudio" -#: lutris/sysoptions.py:260 +#: lutris/sysoptions.py:269 msgid "" "Set the environment variable PULSE_LATENCY_MSEC=60 to improve audio quality " "on some games" @@ -5121,21 +5164,21 @@ msgstr "" "Defina a variável de ambiente PULSE_LATENCY_MSEC=60 para melhorar a " "qualidade do áudio em alguns jogos" -#: lutris/sysoptions.py:266 +#: lutris/sysoptions.py:275 msgid "Switch to US keyboard layout" msgstr "Mudar para o layout de teclado dos EUA" -#: lutris/sysoptions.py:269 +#: lutris/sysoptions.py:278 msgid "Switch to US keyboard QWERTY layout while game is running" msgstr "" "Mudar para o layout QWERTY do teclado dos EUA enquanto o jogo está em " "execução" -#: lutris/sysoptions.py:276 +#: lutris/sysoptions.py:285 msgid "Optimus launcher (NVIDIA Optimus laptops)" msgstr "Iniciador Optimus (laptops NVIDIA Optimus)" -#: lutris/sysoptions.py:278 +#: lutris/sysoptions.py:287 msgid "" "If you have installed the primus or bumblebee packages, select what launcher " "will run the game with the command, activating your NVIDIA graphic chip for " @@ -5149,11 +5192,11 @@ msgstr "" "virtualgl funciona melhor para mais jogos. O Primus VK fornece suporte " "vulkan com o bublebee" -#: lutris/sysoptions.py:290 +#: lutris/sysoptions.py:299 msgid "Vulkan ICD loader" msgstr "Carregador de ICD Vulkan" -#: lutris/sysoptions.py:292 +#: lutris/sysoptions.py:301 msgid "" "The ICD loader is a library that is placed between a Vulkan application and " "any number of Vulkan drivers, in order to support multiple drivers and the " @@ -5163,23 +5206,11 @@ msgstr "" "e qualquer número de drivers Vulkan, para oferecer suporte a vários drivers " "e à funcionalidade de nível de instância que funciona nesses drivers." -#: lutris/sysoptions.py:300 +#: lutris/sysoptions.py:309 msgid "FPS counter (MangoHud)" msgstr "Contador de FPS (MangoHud)" -#: lutris/sysoptions.py:303 -msgid "Enabled (Vulkan)" -msgstr "Habilitado (Vulkan)" - -#: lutris/sysoptions.py:304 -msgid "Enabled (OpenGL)" -msgstr "Habilitado (OpenGL)" - -#: lutris/sysoptions.py:305 -msgid "Enabled (OpenGL, 32bit)" -msgstr "Habilitado (OpenGL, 32bit)" - -#: lutris/sysoptions.py:310 +#: lutris/sysoptions.py:312 msgid "" "Display the game's FPS + other information. Requires MangoHud to be " "installed." @@ -5187,25 +5218,25 @@ msgstr "" "Exibe o FPS do jogo + outras informações. Requer que o MangoHud esteja " "instalado." -#: lutris/sysoptions.py:319 +#: lutris/sysoptions.py:321 msgid "Limit the game's FPS to desired number" msgstr "Limitar o FPS do jogo ao número desejado" -#: lutris/sysoptions.py:326 +#: lutris/sysoptions.py:328 msgid "Enable Feral GameMode" msgstr "Habilitar o Feral GameMode" -#: lutris/sysoptions.py:327 +#: lutris/sysoptions.py:329 msgid "Request a set of optimisations be temporarily applied to the host OS" msgstr "" "Solicita que um conjunto de otimizações seja aplicado temporariamente ao " "sistema operacional host" -#: lutris/sysoptions.py:334 +#: lutris/sysoptions.py:336 msgid "Enable NVIDIA Prime Render Offload" msgstr "Habilitar descarregamento de renderização NVIDIA Prime" -#: lutris/sysoptions.py:335 +#: lutris/sysoptions.py:337 msgid "" "If you have the latest NVIDIA driver and the properly patched xorg-server " "(see https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/" @@ -5219,11 +5250,11 @@ msgstr "" "ao habilitar esta opção. Isso aplicará __NV_PRIME_RENDER_OFFLOAD=1 e " "__GLX_VENDOR_LIBRARY_NAME=nvidia como variáveis de ambiente." -#: lutris/sysoptions.py:346 +#: lutris/sysoptions.py:348 msgid "Use discrete graphics" msgstr "Usar gráficos discretos" -#: lutris/sysoptions.py:348 +#: lutris/sysoptions.py:350 msgid "" "If you have open source graphic drivers (Mesa), selecting this option will " "run the game with the 'DRI_PRIME=1' environment variable, activating your " @@ -5233,11 +5264,11 @@ msgstr "" "opção vai executar o jogo com a variável de ambiente 'DRI_PRIME=1', ativando " "seu chip gráfico discreto para alto desempenho 3D." -#: lutris/sysoptions.py:356 +#: lutris/sysoptions.py:358 msgid "SDL 1.2 Fullscreen Monitor" msgstr "Monitor de tela cheia SDL 1.2" -#: lutris/sysoptions.py:360 +#: lutris/sysoptions.py:362 msgid "" "Hint SDL 1.2 games to use a specific monitor when going fullscreen by " "setting the SDL_VIDEO_FULLSCREEN environment variable" @@ -5245,11 +5276,11 @@ msgstr "" "Instrui jogos SDL 1.2 a usar um monitor específico ao ir em tela cheia " "definindo a variável de ambiente SDL_VIDEO_FULLSCREEN" -#: lutris/sysoptions.py:367 +#: lutris/sysoptions.py:369 msgid "Turn off monitors except" msgstr "Desligue os monitores, exceto" -#: lutris/sysoptions.py:372 +#: lutris/sysoptions.py:374 msgid "" "Only keep the selected screen active while the game is running. \n" "This is useful if you have a dual-screen setup, and are \n" @@ -5260,19 +5291,19 @@ msgstr "" "Isso é útil se você tiver uma configuração de tela dupla e estiver \n" "tendo problemas de exibição ao executar um jogo em tela cheia." -#: lutris/sysoptions.py:380 +#: lutris/sysoptions.py:382 msgid "Switch resolution to" msgstr "Mudar resolução para" -#: lutris/sysoptions.py:384 +#: lutris/sysoptions.py:386 msgid "Switch to this screen resolution while the game is running." msgstr "Mude para esta resolução de tela enquanto o jogo está em execução." -#: lutris/sysoptions.py:388 +#: lutris/sysoptions.py:390 msgid "CLI mode" msgstr "Modo CLI" -#: lutris/sysoptions.py:392 +#: lutris/sysoptions.py:394 msgid "" "Enable a terminal for text-based games. Only useful for ASCII based games. " "May cause issues with graphical games." @@ -5280,11 +5311,11 @@ msgstr "" "Ative um terminal para jogos baseados em texto. Útil apenas para jogos " "baseados em ASCII.Pode causar problemas com jogos gráficos." -#: lutris/sysoptions.py:397 +#: lutris/sysoptions.py:399 msgid "Text based games emulator" msgstr "Emulador de jogos baseado em texto" -#: lutris/sysoptions.py:402 +#: lutris/sysoptions.py:404 msgid "" "The terminal emulator used with the CLI mode. Choose from the list of " "detected terminal apps or enter the terminal's command or path." @@ -5292,71 +5323,71 @@ msgstr "" "O emulador de terminal usado com o modo CLI. Escolha na lista de aplicativos " "de terminal detectados ou digite o comando ou caminho do terminal." -#: lutris/sysoptions.py:409 +#: lutris/sysoptions.py:411 msgid "Environment variables" msgstr "Variáveis ​​de ambiente" -#: lutris/sysoptions.py:410 +#: lutris/sysoptions.py:412 msgid "Environment variables loaded at run time" msgstr "Variáveis de ambiente carregadas em tempo de execução" -#: lutris/sysoptions.py:415 +#: lutris/sysoptions.py:417 msgid "AntiMicroX Profile" msgstr "Perfil AntiMicroX" -#: lutris/sysoptions.py:417 +#: lutris/sysoptions.py:419 msgid "Path to an AntiMicroX profile file" msgstr "Caminho para um arquivo de perfil do AntiMicroX" -#: lutris/sysoptions.py:422 +#: lutris/sysoptions.py:424 msgid "Command prefix" msgstr "Prefixo de comando" -#: lutris/sysoptions.py:424 +#: lutris/sysoptions.py:426 msgid "" "Command line instructions to add in front of the game's execution command." msgstr "" "Instruções de linha de comando para adicionar na frente do comando de " "execução do jogo." -#: lutris/sysoptions.py:430 +#: lutris/sysoptions.py:432 msgid "Manual script" msgstr "Script manual" -#: lutris/sysoptions.py:432 +#: lutris/sysoptions.py:434 msgid "Script to execute from the game's contextual menu" msgstr "Script para executar a partir do menu contextual do jogo" -#: lutris/sysoptions.py:437 +#: lutris/sysoptions.py:439 msgid "Pre-launch script" msgstr "Script de pré-inicialização" -#: lutris/sysoptions.py:439 +#: lutris/sysoptions.py:441 msgid "Script to execute before the game starts" msgstr "Script para executar antes do jogo começar" -#: lutris/sysoptions.py:444 +#: lutris/sysoptions.py:446 msgid "Wait for pre-launch script completion" msgstr "Aguardar a conclusão do script de pré-inicialização" -#: lutris/sysoptions.py:447 +#: lutris/sysoptions.py:449 msgid "Run the game only once the pre-launch script has exited" msgstr "" "Execute o jogo apenas quando o script de pré-inicialização for encerrado" -#: lutris/sysoptions.py:452 +#: lutris/sysoptions.py:454 msgid "Post-exit script" msgstr "Script pós-saída" -#: lutris/sysoptions.py:454 +#: lutris/sysoptions.py:456 msgid "Script to execute when the game exits" msgstr "Script para executar quando o jogo sair" -#: lutris/sysoptions.py:459 +#: lutris/sysoptions.py:461 msgid "Include processes" msgstr "Incluir processos" -#: lutris/sysoptions.py:461 +#: lutris/sysoptions.py:463 msgid "" "What processes to include in process monitoring. This is to override the " "built-in exclude list.\n" @@ -5368,11 +5399,11 @@ msgstr "" "Lista separada por espaços, processos incluindo espaços podem ser colocados " "entre aspas" -#: lutris/sysoptions.py:469 +#: lutris/sysoptions.py:471 msgid "Exclude processes" msgstr "Excluir processos" -#: lutris/sysoptions.py:471 +#: lutris/sysoptions.py:473 msgid "" "What processes to exclude in process monitoring. For example background " "processes that stick around after the game has been closed.\n" @@ -5384,11 +5415,11 @@ msgstr "" "Lista separada por espaços, processos incluindo espaços podem ser colocados " "entre aspas" -#: lutris/sysoptions.py:480 +#: lutris/sysoptions.py:482 msgid "Killswitch file" msgstr "Arquivo Killswitch" -#: lutris/sysoptions.py:482 +#: lutris/sysoptions.py:484 msgid "" "Path to a file which will stop the game when deleted \n" "(usually /dev/input/js0 to stop the game on joystick unplugging)" @@ -5396,11 +5427,11 @@ msgstr "" "Caminho para um arquivo que irá parar o jogo quando deletado \n" "(geralmente /dev/input/js0 para parar o jogo ao desconectar o controle)" -#: lutris/sysoptions.py:489 +#: lutris/sysoptions.py:491 msgid "SDL2 gamepad mapping" msgstr "Mapeamento do gamepad SDL2" -#: lutris/sysoptions.py:491 +#: lutris/sysoptions.py:493 msgid "" "SDL_GAMECONTROLLERCONFIG mapping string or path to a custom gamecontrollerdb." "txt file containing mappings." @@ -5408,40 +5439,40 @@ msgstr "" "String de mapeamento SDL_GAMECONTROLLERCONFIG ou caminho para um " "gamecontrollerdb personalizado.arquivo txt contendo mapeamentos." -#: lutris/sysoptions.py:496 +#: lutris/sysoptions.py:498 msgid "Use Xephyr" msgstr "Usar Xephyr" -#: lutris/sysoptions.py:500 +#: lutris/sysoptions.py:502 msgid "8BPP (256 colors)" msgstr "8BPP (256 cores)" -#: lutris/sysoptions.py:501 +#: lutris/sysoptions.py:503 msgid "16BPP (65536 colors)" msgstr "16BPP (65536 cores)" -#: lutris/sysoptions.py:502 +#: lutris/sysoptions.py:504 msgid "24BPP (16M colors)" msgstr "24BPP (16M cores)" -#: lutris/sysoptions.py:506 +#: lutris/sysoptions.py:508 msgid "Run program in Xephyr to support 8BPP and 16BPP color modes" msgstr "" "Execute o programa no Xephyr para suportar os modos de cor 8BPP e 16BPP" -#: lutris/sysoptions.py:511 +#: lutris/sysoptions.py:513 msgid "Xephyr resolution" msgstr "Resolução Xephyr" -#: lutris/sysoptions.py:513 +#: lutris/sysoptions.py:515 msgid "Screen resolution of the Xephyr server" msgstr "Resolução de tela do servidor Xephyr" -#: lutris/sysoptions.py:518 +#: lutris/sysoptions.py:520 msgid "Xephyr Fullscreen" msgstr "Tela Cheia Xephyr" -#: lutris/sysoptions.py:521 +#: lutris/sysoptions.py:523 msgid "Open Xephyr in fullscreen (at the desktop resolution)" msgstr "Abra o Xephyr em tela cheia (na resolução da área de trabalho)" @@ -5493,11 +5524,12 @@ msgid "Vulkan is not installed or is not supported by your system" msgstr "Vulkan não está instalado ou não é suportado pelo seu sistema" #: lutris/util/wine/wine.py:355 +#, fuzzy msgid "" "If you have compatible hardware, please follow the installation procedures " "as described in\n" -"How-to:-DXVK " -"(https://github.com/lutris/lutris/wiki/How-to:-DXVK)" +"How-to:-" +"DXVK (https://github.com/lutris/docs/blob/master/HowToDXVK.md)" msgstr "" "Se você tiver hardware compatível, siga os procedimentos de " "instalaçãoconforme descrito em\n" @@ -5505,10 +5537,11 @@ msgstr "" "(https://github.com/lutris/lutris/wiki/How-to:-DXVK)" #: lutris/util/wine/wine.py:367 +#, fuzzy msgid "" "Your limits are not set correctly. Please increase them as described here: " -"How-to:-Esync " -"(https://github.com/lutris/lutris/wiki/How-to:-Esync)" +"How-to:-" +"Esync (https://github.com/lutris/docs/blob/master/HowToEsync.md)" msgstr "" "Seus limites não estão definidos corretamente. Aumente-os conforme descrito " "aqui: How-to:-" @@ -5542,6 +5575,34 @@ msgstr "" "A compilação do Wine que você selecionou não é compatível com Fsync.\n" "Por favor, mude para uma versão compatível com Fsync." +#~ msgid "Lutris Team" +#~ msgstr "Lutris Team" + +#~ msgid "Runner not installed." +#~ msgstr "Runner não instalado." + +#~ msgid "An error prevented the game from running" +#~ msgstr "Um erro impediu o jogo de executar" + +#~ msgid "Stop Steam after game exits" +#~ msgstr "Parar a Steam após o jogo encerrar" + +#~ msgid "" +#~ "Shut down Steam after the game has quit\n" +#~ "(only if Steam was started by Lutris)" +#~ msgstr "" +#~ "Encerre a Steam depois que o jogo for encerrado\n" +#~ "(somente se o Steam foi iniciada por Lutris)" + +#~ msgid "Enabled (Vulkan)" +#~ msgstr "Habilitado (Vulkan)" + +#~ msgid "Enabled (OpenGL)" +#~ msgstr "Habilitado (OpenGL)" + +#~ msgid "Enabled (OpenGL, 32bit)" +#~ msgstr "Habilitado (OpenGL, 32bit)" + #, python-format #~ msgid "In use by %d game" #~ msgid_plural "In use by %d games" diff --git a/po/ru.po b/po/ru.po index b6bd7a3859425fff21b78eb8d54b367287cb7549..903959b33f1d6bc3b1a41e487fbc5bdfe7c3bfdc 100644 --- a/po/ru.po +++ b/po/ru.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: lutris\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-30 17:52+0500\n" +"POT-Creation-Date: 2022-06-20 16:54+0200\n" "PO-Revision-Date: 2020-11-30 17:52+0500\n" "Last-Translator: Nikita Grishko \n" "Language-Team: Russian <>\n" @@ -11,31 +11,28 @@ msgstr "" "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" +"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: Lokalize 20.08.2\n" #: share/applications/net.lutris.Lutris.desktop:3 -#: share/lutris/ui/lutris-window.ui:359 lutris/gui/application.py:71 -#: lutris/gui/widgets/status_icon.py:116 lutris/services/lutris.py:64 +#: share/lutris/ui/lutris-window.ui:25 lutris/gui/application.py:76 +#: lutris/gui/widgets/status_icon.py:116 lutris/services/lutris.py:39 msgid "Lutris" msgstr "Lutris" #: share/applications/net.lutris.Lutris.desktop:4 -msgid "open source gaming platform" -msgstr "открытая игровая платформа" +msgid "video game preservation platform" +msgstr "" #: share/applications/net.lutris.Lutris.desktop:6 msgid "gaming;wine;emulator;" msgstr "gaming;wine;emulator;" -#: share/applications/net.lutris.Lutris.desktop:8 -msgid "lutris" -msgstr "lutris" - #: share/metainfo/net.lutris.Lutris.metainfo.xml:11 -msgid "Play all your games by Lutris" -msgstr "Играйте в ваши игры с помощью Lutris" +#: share/lutris/ui/about-dialog.ui:18 +msgid "Video game preservation platform" +msgstr "" #: share/metainfo/net.lutris.Lutris.metainfo.xml:14 msgid "Main window" @@ -43,26 +40,16 @@ msgstr "Основное окно" #: share/metainfo/net.lutris.Lutris.metainfo.xml:18 msgid "" -"Lutris is an Open Source gaming platform. It installs and launches games so " -"you can start playing without the hassle of setting up your games. Get your " -"games from GOG, Steam, Battle.net, Origin, Uplay and many other sources " -"running on any Linux powered gaming machine." +"Lutris helps you install and play video games from all eras and from most " +"gaming systems. By leveraging and combining existing emulators, engine re-" +"implementations and compatibility layers, it gives you a central interface " +"to launch all your games." msgstr "" -"Lutris - это игровая платформа с открытым исходным кодом. Он сам " -"устанавливает и запускает игры, благодаря чему вы можете сразу же начать " -"играть без необходимости проходить через скучную процедуру по настройке и " -"установке ваших игр. Вы можете играть в игры из GOG, Steam, Battle.net, " -"Origin, Uplay и множества других источников которые работают на любых " -"игровых машинах под управлением Linux." -#: share/lutris/ui/about-dialog.ui:8 share/lutris/ui/lutris-window.ui:183 +#: share/lutris/ui/about-dialog.ui:8 share/lutris/ui/lutris-window.ui:581 msgid "About Lutris" msgstr "О Lutris" -#: share/lutris/ui/about-dialog.ui:18 -msgid "Open Source Gaming Platform" -msgstr "Открытая игровая платформа" - #: share/lutris/ui/about-dialog.ui:21 msgid "" "This program is free software: you can redistribute it and/or modify\n" @@ -101,7 +88,7 @@ msgid "Forgot password?" msgstr "Забыли пароль?" #: share/lutris/ui/dialog-lutris-login.ui:43 lutris/gui/dialogs/issue.py:52 -#: lutris/gui/installerwindow.py:75 +#: lutris/gui/installerwindow.py:76 msgid "C_ancel" msgstr "_Отмена" @@ -117,193 +104,85 @@ msgstr "Пароль" msgid "Username" msgstr "Имя пользователя" -#: share/lutris/ui/dialog-pga-sources.ui:34 lutris/gui/config/boxes.py:512 -#: lutris/gui/dialogs/__init__.py:133 lutris/gui/dialogs/__init__.py:159 -#: lutris/gui/dialogs/__init__.py:249 lutris/gui/dialogs/issue.py:74 -#: lutris/gui/widgets/common.py:99 lutris/gui/widgets/download_progress.py:45 -msgid "_Cancel" -msgstr "_Отмена" - -#: share/lutris/ui/dialog-pga-sources.ui:50 -msgid "Appl_y" -msgstr "_Применить" - -#: share/lutris/ui/dialog-pga-sources.ui:79 -msgid "Personal Game Archives sources" -msgstr "Источники личных достижений" - -#: share/lutris/ui/dialog-pga-sources.ui:142 lutris/gui/config/boxes.py:514 -msgid "_Add" -msgstr "_Добавить" - -#: share/lutris/ui/dialog-pga-sources.ui:158 -msgid "_Remove" -msgstr "_Удалить" - #: share/lutris/ui/log-window.ui:37 msgid "Search..." msgstr "Поиск..." -#: share/lutris/ui/lutris-window.ui:33 -msgid "_Installed Games Only" -msgstr "_Только установленные игры" - -#: share/lutris/ui/lutris-window.ui:48 -msgid "Show _Hidden Games" -msgstr "_Показать скрытые игры" - -#: share/lutris/ui/lutris-window.ui:62 -msgid "Use _Dark Theme" -msgstr "Использовать темную тему" - -#: share/lutris/ui/lutris-window.ui:76 -msgid "Show Side _Panel" -msgstr "Показать боковую панель" - -#: share/lutris/ui/lutris-window.ui:102 -msgid "Preferences" -msgstr "Настройки" - -#: share/lutris/ui/lutris-window.ui:116 -msgid "Manage runners" -msgstr "Менеджер раннеров" - -#: share/lutris/ui/lutris-window.ui:141 -msgid "Discord" -msgstr "Discord" - -#: share/lutris/ui/lutris-window.ui:155 -msgid "Lutris forums" -msgstr "Форум Lutris" +#: share/lutris/ui/lutris-window.ui:154 +msgid "Search games" +msgstr "Поиск игр" #: share/lutris/ui/lutris-window.ui:169 -msgid "Make a donation" -msgstr "Сделать пожертвование" +msgid "Add Game" +msgstr "Добавить игру" -#: share/lutris/ui/lutris-window.ui:218 +#: share/lutris/ui/lutris-window.ui:201 +msgid "Toggle View" +msgstr "Переключить вид" + +#: share/lutris/ui/lutris-window.ui:299 msgid "Zoom:" msgstr "Масштаб:" -#: share/lutris/ui/lutris-window.ui:271 +#: share/lutris/ui/lutris-window.ui:352 msgid "Sort Ascending" msgstr "Сортировать по возрастанию" -#: share/lutris/ui/lutris-window.ui:286 lutris/gui/config/common.py:149 -#: lutris/gui/views/list.py:44 lutris/gui/views/list.py:158 +#: share/lutris/ui/lutris-window.ui:367 lutris/gui/config/common.py:113 +#: lutris/gui/views/list.py:45 lutris/gui/views/list.py:159 msgid "Name" msgstr "Название" -#: share/lutris/ui/lutris-window.ui:301 lutris/gui/views/list.py:45 +#: share/lutris/ui/lutris-window.ui:382 lutris/gui/views/list.py:46 msgid "Year" msgstr "Год" -#: share/lutris/ui/lutris-window.ui:316 lutris/gui/views/list.py:48 +#: share/lutris/ui/lutris-window.ui:397 lutris/gui/views/list.py:49 msgid "Last Played" msgstr "Последний запуск" -#: share/lutris/ui/lutris-window.ui:331 lutris/gui/views/list.py:50 +#: share/lutris/ui/lutris-window.ui:412 lutris/gui/views/list.py:51 msgid "Installed At" msgstr "Дата установки" -#: share/lutris/ui/lutris-window.ui:346 lutris/gui/views/list.py:52 +#: share/lutris/ui/lutris-window.ui:427 lutris/gui/views/list.py:53 msgid "Play Time" msgstr "Время в игре" -#: share/lutris/ui/lutris-window.ui:378 -msgid "Add Game" -msgstr "Добавить игру" - -#: share/lutris/ui/lutris-window.ui:404 -msgid "Search games" -msgstr "Поиск игр" - -#: share/lutris/ui/lutris-window.ui:423 -msgid "Toggle View" -msgstr "Переключить вид" - -#: share/lutris/ui/lutris-window.ui:470 -msgid "View Options" -msgstr "Параметры отображения" - -#: share/lutris/ui/lutris-window.ui:543 -msgid "Community Installers" -msgstr "Пользовательские установщики" - -#: share/lutris/ui/lutris-window.ui:559 -msgid "Your Library" -msgstr "Ваша библиотека" - -#: share/lutris/ui/runner-entry.ui:33 -msgid "name" -msgstr "название" - -#: share/lutris/ui/runner-entry.ui:52 -msgid "description" -msgstr "описание" - -#: share/lutris/ui/runner-entry.ui:69 -msgid "platforms" -msgstr "платформы" - -#: share/lutris/ui/runner-entry.ui:104 lutris/gui/widgets/sidebar.py:186 -msgid "Manage Versions" -msgstr "Менеджер версий" - -#: share/lutris/ui/runner-entry.ui:127 -msgid "Install Runner" -msgstr "Установить раннер" - -#: share/lutris/ui/runner-entry.ui:149 -msgid "Configure Runner" -msgstr "Настроить раннер" - -#: share/lutris/ui/runner-entry.ui:172 -msgid "Remove Runner" -msgstr "Удалить раннер" - -#: share/lutris/ui/runner-remove-all-versions-dialog.ui:19 -msgid "Remove ALL versions?" -msgstr "Удалить ВСЕ версии?" +#: share/lutris/ui/lutris-window.ui:456 +msgid "_Installed Games Only" +msgstr "_Только установленные игры" -#: share/lutris/ui/runner-remove-all-versions-dialog.ui:23 -#: share/lutris/ui/runner-remove-confirm-dialog.ui:23 -#: lutris/gui/config/common.py:368 lutris/gui/dialogs/uninstall_game.py:55 -msgid "Cancel" -msgstr "Отмена" +#: share/lutris/ui/lutris-window.ui:471 +msgid "Show _Hidden Games" +msgstr "_Показать скрытые игры" -#: share/lutris/ui/runner-remove-all-versions-dialog.ui:36 -#: share/lutris/ui/runner-remove-confirm-dialog.ui:19 -#: share/lutris/ui/runner-remove-confirm-dialog.ui:36 lutris/game_actions.py:89 -msgid "Remove" -msgstr "Удалить" +#: share/lutris/ui/lutris-window.ui:485 +msgid "Show Side _Panel" +msgstr "Показать боковую панель" -#: share/lutris/ui/runner-remove-all-versions-dialog.ui:59 -msgid "" -"This will remove ALL versions of %s.\n" -"\n" -"Use the Manage Versions button if you want to remove just one version." -msgstr "" -"Это действие удалит ВСЕ версии %s.\n" -"\n" -"Используйте кнопку Менеджер версий если вы хотите удалить только одну из них." +#: share/lutris/ui/lutris-window.ui:500 +#, fuzzy +msgid "Add games" +msgstr "Добавить игру" -#: share/lutris/ui/runner-remove-confirm-dialog.ui:59 -msgid "This will remove %s and all associated data." -msgstr "Это действие удалит %s и все связанные с ним данные." +#: share/lutris/ui/lutris-window.ui:514 +msgid "Preferences" +msgstr "Настройки" -#: share/lutris/ui/runners-dialog.ui:16 lutris/gui/widgets/sidebar.py:227 -msgid "Manage Runners" -msgstr "Менеджер раннеров" +#: share/lutris/ui/lutris-window.ui:539 +msgid "Discord" +msgstr "Discord" -#: share/lutris/ui/runners-dialog.ui:24 -msgid "Refresh Runners" -msgstr "Обновить раннеры" +#: share/lutris/ui/lutris-window.ui:553 +msgid "Lutris forums" +msgstr "Форум Lutris" -#: share/lutris/ui/runners-dialog.ui:40 -msgid "Open Runners Folder" -msgstr "Открыть каталог с раннерами " +#: share/lutris/ui/lutris-window.ui:567 +msgid "Make a donation" +msgstr "Сделать пожертвование" -#: lutris/exceptions.py:27 +#: lutris/exceptions.py:26 #, python-brace-format msgid "" "The following {arch} libraries are required but are not installed on your " @@ -314,88 +193,125 @@ msgstr "" "системе :\n" "{libs}" -#: lutris/game_actions.py:58 lutris/gui/widgets/game_bar.py:169 +#. Local services don't show an install dialog, they can be launched directly +#: lutris/game_actions.py:60 lutris/gui/widgets/game_bar.py:201 +#: lutris/gui/widgets/game_bar.py:215 msgid "Play" msgstr "Играть" -#: lutris/game_actions.py:59 lutris/gui/widgets/game_bar.py:175 +#: lutris/game_actions.py:61 lutris/gui/widgets/game_bar.py:207 msgid "Stop" msgstr "Остановить" -#: lutris/game_actions.py:60 -msgid "Show logs" -msgstr "Показать журнал" - -#: lutris/game_actions.py:61 lutris/gui/installer/script_box.py:58 -#: lutris/gui/widgets/game_bar.py:155 lutris/gui/widgets/game_bar.py:178 +#: lutris/game_actions.py:62 lutris/gui/dialogs/runner_install.py:193 +#: lutris/gui/installer/script_box.py:62 lutris/gui/widgets/game_bar.py:210 msgid "Install" msgstr "Установить" -#: lutris/game_actions.py:62 +#: lutris/game_actions.py:63 +#, fuzzy +msgid "Install updates" +msgstr "Установить раннеры" + +#: lutris/game_actions.py:65 +msgid "Show logs" +msgstr "Показать журнал" + +#: lutris/game_actions.py:66 msgid "Add installed game" msgstr "Добавить установленную игру" -#: lutris/game_actions.py:63 lutris/gui/widgets/sidebar.py:192 +#: lutris/game_actions.py:67 +msgid "Duplicate" +msgstr "" + +#: lutris/game_actions.py:68 lutris/gui/widgets/sidebar.py:205 msgid "Configure" msgstr "Настройки" -#: lutris/game_actions.py:64 +#: lutris/game_actions.py:69 msgid "Add to favorites" msgstr "Добавить в избранное" -#: lutris/game_actions.py:65 +#: lutris/game_actions.py:70 msgid "Remove from favorites" msgstr "Удалить из избранного" -#: lutris/game_actions.py:66 +#: lutris/game_actions.py:71 msgid "Execute script" msgstr "Выполнить скрипт" -#: lutris/game_actions.py:67 +#: lutris/game_actions.py:72 msgid "Browse files" msgstr "Показать файлы" -#: lutris/game_actions.py:70 lutris/gui/installerwindow.py:425 +#: lutris/game_actions.py:75 lutris/gui/installerwindow.py:178 msgid "Create desktop shortcut" msgstr "Создать ярлык на рабочем столе" -#: lutris/game_actions.py:75 +#: lutris/game_actions.py:80 msgid "Delete desktop shortcut" msgstr "Удалить ярлык с рабочего стола" -#: lutris/game_actions.py:80 lutris/gui/installerwindow.py:426 +#: lutris/game_actions.py:85 lutris/gui/installerwindow.py:182 msgid "Create application menu shortcut" msgstr "Создать ярлык в меню приложений" -#: lutris/game_actions.py:85 +#: lutris/game_actions.py:90 msgid "Delete application menu shortcut" msgstr "Удалить ярлык из меню приложений" -#: lutris/game_actions.py:88 +#: lutris/game_actions.py:95 lutris/gui/installerwindow.py:187 +#, fuzzy +msgid "Create steam shortcut" +msgstr "Создать ярлык на рабочем столе" + +#: lutris/game_actions.py:100 +#, fuzzy +msgid "Delete steam shortcut" +msgstr "Удалить ярлык с рабочего стола" + +#: lutris/game_actions.py:103 msgid "Install another version" msgstr "Установить другую версию" -#: lutris/game_actions.py:90 +#: lutris/game_actions.py:104 lutris/gui/dialogs/uninstall_game.py:139 +msgid "Remove" +msgstr "Удалить" + +#: lutris/game_actions.py:105 msgid "View on WineGame.net" msgstr "Посмотреть на WineGame.net" -#: lutris/game_actions.py:91 +#: lutris/game_actions.py:106 msgid "Hide game from library" msgstr "Скрыть игру из библиотеки" -#: lutris/game_actions.py:92 +#: lutris/game_actions.py:107 msgid "Unhide game from library" msgstr "Вернуть игру в библиотеку" -#: lutris/game_actions.py:161 +#: lutris/game_actions.py:185 msgid "Log for {}" msgstr "Журнал для {}" -#: lutris/game_actions.py:210 +#: lutris/game_actions.py:220 +#, python-format +msgid "" +"Do you wish to duplicate %s?\n" +"The configuration will be duplicated, but the games files will not be " +"duplicated." +msgstr "" + +#: lutris/game_actions.py:223 +msgid "Duplicate game?" +msgstr "" + +#: lutris/game_actions.py:284 msgid "This game has no installation directory" msgstr "Для игры не указан установочный каталог" -#: lutris/game_actions.py:214 +#: lutris/game_actions.py:288 #, python-format msgid "" "Can't open %s \n" @@ -404,46 +320,59 @@ msgstr "" "Не удается открыть %s \n" "Каталог не существует." -#: lutris/game.py:169 +#: lutris/game.py:178 msgid "Error the runner is not installed" msgstr "Ошибка: раннер не установлен" -#: lutris/game.py:171 +#: lutris/game.py:180 msgid "A bios file is required to run this game" msgstr "Для запуска этой игры необходим файл bios" -#: lutris/game.py:175 +#: lutris/game.py:184 msgid "The file {} could not be found" msgstr "Не удалось найти файл {}" -#: lutris/game.py:177 -msgid "No file provided" -msgstr "Файл не указан" +#: lutris/game.py:186 +msgid "" +"This game has no executable set. The install process didn't finish properly." +msgstr "" -#: lutris/game.py:181 +#: lutris/game.py:189 #, python-format msgid "The file %s is not executable" msgstr "Файл %s не является исполняемым" -#: lutris/game.py:183 +#: lutris/game.py:191 #, python-format msgid "The path '%s' is not set. please set it in the options." msgstr "Путь '%s' не установлен, пожалуйста установите его в опциях." -#: lutris/game.py:186 +#: lutris/game.py:193 #, python-format msgid "Unhandled error: %s" msgstr "Необработанная ошибка: %s" #: lutris/game.py:298 +msgid "Tried to launch a game that isn't installed." +msgstr "" + +#: lutris/game.py:300 lutris/game.py:417 +msgid "Invalid game configuration: Missing runner" +msgstr "Неверная конфигурация игры: отсутствует раннер" + +#: lutris/game.py:309 msgid "Runtime currently updating" msgstr "В данный момент среда выполнения обновляется" -#: lutris/game.py:298 +#: lutris/game.py:309 msgid "Game might not work as expected" msgstr "Игра может работать не так, как ожидалось" -#: lutris/game.py:372 +#: lutris/game.py:342 +msgid "Unable to find Xephyr, install it or disable the Xephyr option" +msgstr "" + +#: lutris/game.py:398 #, python-format msgid "" "The selected terminal application could not be launched:\n" @@ -452,19 +381,16 @@ msgstr "" "Не удалось запустить выбранное терминальное приложение:\n" "%s" -#: lutris/game.py:406 -msgid "An error prevented the game from running" -msgstr "Из-за ошибки игра не запустилась" - -#: lutris/game.py:481 -msgid "Invalid game configuration: Missing runner" -msgstr "Неверная конфигурация игры: отсутствует раннер" +#. The 'file' sort of gameplay_info cannot be made to use a configuration +#: lutris/game.py:434 +msgid "The runner could not find a command to apply the configuration to." +msgstr "" -#: lutris/game.py:528 +#: lutris/game.py:635 msgid "Error lauching the game:\n" msgstr "Ошибка при запуске игры:\n" -#: lutris/game.py:618 +#: lutris/game.py:727 #, python-format msgid "" "Error: Missing shared library.\n" @@ -475,11 +401,110 @@ msgstr "" "\n" "%s" -#: lutris/game.py:624 +#: lutris/game.py:733 msgid "" "Error: A different Wine version is already using the same Wine prefix." msgstr "Ошибка: Другая версия Wine уже использует этот Wine prefix." +#: lutris/gui/addgameswindow.py:21 +msgid "Search the Lutris website for installers" +msgstr "" + +#: lutris/gui/addgameswindow.py:22 +msgid "Query our website for community installers" +msgstr "" + +#: lutris/gui/addgameswindow.py:27 +msgid "Scan a folder for games" +msgstr "" + +#: lutris/gui/addgameswindow.py:28 +msgid "Mass-import a folder of games" +msgstr "" + +#: lutris/gui/addgameswindow.py:33 +#, fuzzy +msgid "Install a Windows game from media" +msgstr "Установить игру из yml файла" + +#: lutris/gui/addgameswindow.py:34 +msgid "Launch a setup file from an optical drive or download" +msgstr "" + +#: lutris/gui/addgameswindow.py:39 +msgid "Install from a local install script" +msgstr "" + +#: lutris/gui/addgameswindow.py:40 +msgid "Run a YAML install script" +msgstr "" + +#: lutris/gui/addgameswindow.py:45 +#, fuzzy +msgid "Add locally installed game" +msgstr "Добавить установленную игру" + +#: lutris/gui/addgameswindow.py:46 +msgid "Manually configure a game available locally" +msgstr "" + +#: lutris/gui/addgameswindow.py:51 +msgid "Add games to Lutris" +msgstr "" + +#: lutris/gui/addgameswindow.py:126 +msgid "Search Lutris.net" +msgstr "" + +#: lutris/gui/addgameswindow.py:149 +#, fuzzy +msgid "Select folder to scan" +msgstr "Выбрать каталог" + +#: lutris/gui/addgameswindow.py:223 +msgid "No results" +msgstr "" + +#: lutris/gui/addgameswindow.py:225 +#, python-brace-format +msgid "Showing {count} results" +msgstr "" + +#: lutris/gui/addgameswindow.py:227 +#, python-brace-format +msgid "{total_count} results, only displaying first {count}" +msgstr "" + +#: lutris/gui/addgameswindow.py:243 +#, fuzzy +msgid "Select setup file" +msgstr "Выбрать файл" + +#: lutris/gui/addgameswindow.py:245 +#, fuzzy +msgid "Game name" +msgstr "Информация об игре" + +#: lutris/gui/addgameswindow.py:249 +#, fuzzy +msgid "Continue" +msgstr "П_родолжить" + +#: lutris/gui/addgameswindow.py:257 +#, fuzzy +msgid "Setup file" +msgstr "Выбрать файл" + +#: lutris/gui/addgameswindow.py:266 +#, fuzzy +msgid "Select the setup file" +msgstr "Выберите файл лицензии" + +#: lutris/gui/addgameswindow.py:279 +#, fuzzy +msgid "Select a Lutris installer" +msgstr "Выберите файл лицензии" + #: lutris/gui/application.py:87 msgid "" "Running Lutris as root is not recommended and may cause unexpected issues" @@ -545,42 +570,89 @@ msgid "List all known Steam library folders" msgstr "Вывести список известных каталогов с играми Steam" #: lutris/gui/application.py:187 +#, fuzzy +msgid "List all known runners" +msgstr "Установить раннеры" + +#: lutris/gui/application.py:195 +#, fuzzy +msgid "List all known Wine versions" +msgstr "Установить другую версию" + +#: lutris/gui/application.py:203 +#, fuzzy +msgid "Install a Runner" +msgstr "Установить раннер" + +#: lutris/gui/application.py:211 +#, fuzzy +msgid "Uninstall a Runner" +msgstr "Установить раннер" + +#: lutris/gui/application.py:219 +msgid "Export a game" +msgstr "" + +#: lutris/gui/application.py:227 +msgid "Import a game" +msgstr "" + +#: lutris/gui/application.py:235 +msgid "Destination path for export" +msgstr "" + +#: lutris/gui/application.py:243 msgid "Display the list of games in JSON format" msgstr "Вывести список игр в формате JSON" -#: lutris/gui/application.py:195 +#: lutris/gui/application.py:251 msgid "Reinstall game" msgstr "Переустановить игру" -#: lutris/gui/application.py:198 +#: lutris/gui/application.py:254 msgid "Submit an issue" msgstr "Сообщить об ошибке" -#: lutris/gui/application.py:204 +#: lutris/gui/application.py:260 msgid "URI to open" msgstr "URI для открытия" -#: lutris/gui/application.py:357 +#: lutris/gui/application.py:489 #, python-format msgid "%s is not a valid URI" msgstr "%s не является допустимым URI" -#: lutris/gui/application.py:375 +#: lutris/gui/application.py:509 #, python-format msgid "Failed to download %s" msgstr "Не удалось загрузить %s" -#: lutris/gui/application.py:383 +#: lutris/gui/application.py:517 #, python-brace-format msgid "download {url} to {file} started" msgstr "началась загрузка {url} в {file}" -#: lutris/gui/application.py:394 +#: lutris/gui/application.py:528 #, python-format msgid "No such file: %s" msgstr "Нет такого файла: %s" -#: lutris/gui/config/add_game.py:15 +#: lutris/gui/application.py:645 +#, fuzzy, python-format +msgid "There is no installer available for %s." +msgstr "На вашей системе не установлен Wine." + +#: lutris/gui/application.py:655 +#, fuzzy +msgid "No updates found" +msgstr "Игр не найдено" + +#: lutris/gui/application.py:665 +#, fuzzy +msgid "No DLC found" +msgstr "Игр не найдено" + +#: lutris/gui/config/add_game.py:11 msgid "Add a new game" msgstr "Добавить новую игру" @@ -611,8 +683,7 @@ msgstr "" msgid "%s (default)" msgstr "%s (по умолчанию)" -#: lutris/gui/config/boxes.py:391 lutris/gui/installer/file_box.py:145 -#: lutris/gui/widgets/common.py:45 +#: lutris/gui/config/boxes.py:391 lutris/gui/widgets/common.py:45 msgid "Select file" msgstr "Выбрать файл" @@ -632,7 +703,18 @@ msgstr "Файлы" msgid "Select files" msgstr "Выбрать файлы" -#: lutris/gui/config/boxes.py:644 +#: lutris/gui/config/boxes.py:511 +msgid "_Add" +msgstr "_Добавить" + +#: lutris/gui/config/boxes.py:512 lutris/gui/dialogs/__init__.py:134 +#: lutris/gui/dialogs/__init__.py:161 lutris/gui/dialogs/issue.py:75 +#: lutris/gui/widgets/common.py:98 +#: lutris/gui/widgets/download_progress_box.py:47 +msgid "_Cancel" +msgstr "_Отмена" + +#: lutris/gui/config/boxes.py:640 msgid "" "If modified, these options supersede the same options from the base runner " "configuration." @@ -640,7 +722,7 @@ msgstr "" "В случае изменения эти параметры заменяют собой параметры из базовой " "конфигурации раннера." -#: lutris/gui/config/boxes.py:665 +#: lutris/gui/config/boxes.py:661 msgid "" "If modified, these options supersede the same options from the base runner " "configuration, which themselves supersede the global preferences." @@ -648,7 +730,7 @@ msgstr "" "В случае изменения эти параметры заменяют собой параметры из базовой " "конфигурации раннера, которые в свою очередь заменяют глобальные настройки." -#: lutris/gui/config/boxes.py:671 +#: lutris/gui/config/boxes.py:667 msgid "" "If modified, these options supersede the same options from the global " "preferences." @@ -656,103 +738,84 @@ msgstr "" "В случае изменения эти параметры заменяют собой параметры из глобальной " "конфигурации." -#: lutris/gui/config/common.py:27 +#: lutris/gui/config/common.py:28 msgid "Select a runner in the Game Info tab" msgstr "Выберите раннер во вкладке Информация об игре" -#: lutris/gui/config/common.py:98 +#: lutris/gui/config/common.py:109 msgid "Game info" msgstr "Информация об игре" -#: lutris/gui/config/common.py:103 -msgid "Minimize client when a game is launched" -msgstr "Свернуть клиент при запуске игры" - -#: lutris/gui/config/common.py:104 -msgid "Hide text under icons" -msgstr "Скрывать текст за иконками" - -#: lutris/gui/config/common.py:105 -msgid "Show Tray Icon" -msgstr "Показать иконку в области уведомлений" - -#: lutris/gui/config/common.py:110 -msgid "Lutris preferences" -msgstr "Настройки Lutris" - -#: lutris/gui/config/common.py:123 -msgid "Copy System Info" -msgstr "Скопировать информацию о системе" - -#: lutris/gui/config/common.py:129 -msgid "System Information" -msgstr "Информация о системе" - -#: lutris/gui/config/common.py:160 +#: lutris/gui/config/common.py:124 msgid "Identifier" msgstr "Идентификатор" -#: lutris/gui/config/common.py:169 lutris/gui/config/common.py:299 +#: lutris/gui/config/common.py:133 lutris/gui/config/common.py:259 msgid "Change" msgstr "Изменить" -#: lutris/gui/config/common.py:178 +#: lutris/gui/config/common.py:142 msgid "Directory" msgstr "Каталог" -#: lutris/gui/config/common.py:184 +#: lutris/gui/config/common.py:148 msgid "Move" msgstr "Переместить" -#: lutris/gui/config/common.py:192 lutris/gui/views/list.py:46 +#: lutris/gui/config/common.py:156 lutris/gui/views/list.py:47 msgid "Runner" msgstr "Раннер" -#: lutris/gui/config/common.py:198 -msgid "Install runners" -msgstr "Установить раннеры" - -#: lutris/gui/config/common.py:217 +#: lutris/gui/config/common.py:177 msgid "Remove custom banner" msgstr "Удалить пользовательский баннер" -#: lutris/gui/config/common.py:228 +#: lutris/gui/config/common.py:188 msgid "Remove custom icon" msgstr "Удалить пользовательскую иконку" -#: lutris/gui/config/common.py:237 +#: lutris/gui/config/common.py:197 msgid "Release year" msgstr "Дата выхода" -#: lutris/gui/config/common.py:280 +#: lutris/gui/config/common.py:240 msgid "Select a runner from the list" msgstr "Выберите раннер из списка" -#: lutris/gui/config/common.py:288 +#: lutris/gui/config/common.py:248 msgid "Apply" msgstr "Применить" -#: lutris/gui/config/common.py:336 +#: lutris/gui/config/common.py:296 msgid "Game options" msgstr "Параметры игры" -#: lutris/gui/config/common.py:344 +#: lutris/gui/config/common.py:304 msgid "Runner options" msgstr "Параметры раннера" -#: lutris/gui/config/common.py:351 +#: lutris/gui/config/common.py:312 msgid "System options" msgstr "Параметры системы" -#: lutris/gui/config/common.py:360 +#. Advanced settings checkbox +#: lutris/gui/config/common.py:322 msgid "Show advanced options" msgstr "Показать продвинутые параметры" -#: lutris/gui/config/common.py:372 +#: lutris/gui/config/common.py:330 lutris/gui/dialogs/__init__.py:268 +#: lutris/gui/dialogs/runner_install.py:186 +#: lutris/gui/dialogs/uninstall_game.py:60 +#: lutris/gui/dialogs/uninstall_game.py:135 +#: lutris/gui/widgets/download_progress_box.py:95 +msgid "Cancel" +msgstr "Отмена" + +#: lutris/gui/config/common.py:334 msgid "Save" msgstr "Сохранить" -#: lutris/gui/config/common.py:405 +#: lutris/gui/config/common.py:368 msgid "" "Are you sure you want to change the runner for this game ? This will reset " "the full configuration for this game and is not reversible." @@ -760,48 +823,148 @@ msgstr "" "Вы уверены что хотите изменить раннер для этой игры? Это действие полностью " "сбросит все настройки для этой игры. Это действие необратимо." -#: lutris/gui/config/common.py:409 +#: lutris/gui/config/common.py:372 msgid "Confirm runner change" msgstr "Подтвердите изменение раннера" -#: lutris/gui/config/common.py:457 +#: lutris/gui/config/common.py:420 msgid "Runner not provided" msgstr "Раннер не указан" -#: lutris/gui/config/common.py:460 +#: lutris/gui/config/common.py:423 msgid "Please fill in the name" msgstr "Пожалуйста заполните имя" -#: lutris/gui/config/common.py:463 -msgid "Steam AppId not provided" +#: lutris/gui/config/common.py:426 +#, fuzzy +msgid "Steam AppID not provided" msgstr "AppId игры Steam не указан" -#: lutris/gui/config/common.py:481 +#: lutris/gui/config/common.py:444 msgid "The following fields have invalid values: " msgstr "Следующие поля имеют недопустимые значения:" -#: lutris/gui/config/common.py:488 +#: lutris/gui/config/common.py:451 msgid "Current configuration is not valid, ignoring save request" msgstr "" "Текущая конфигурация не является допустимой, запрос на сохранение " "проигнорирован." -#: lutris/gui/config/common.py:524 +#: lutris/gui/config/common.py:486 msgid "Please choose a custom image" msgstr "Пожалуйста укажите пользовательское изображение" -#: lutris/gui/config/common.py:536 +#: lutris/gui/config/common.py:494 msgid "Images" msgstr "Изображения" -#: lutris/gui/config/edit_game.py:15 lutris/gui/config/runner.py:17 +#: lutris/gui/config/edit_game.py:10 lutris/gui/config/runner.py:11 #, python-format msgid "Configure %s" msgstr "Настройки %s" -#: lutris/gui/config/system.py:14 -msgid "System preferences" -msgstr "Настройки системы" +#: lutris/gui/config/preferences_box.py:11 lutris/gui/config/sysinfo_box.py:11 +msgid "Minimize client when a game is launched" +msgstr "Свернуть клиент при запуске игры" + +#: lutris/gui/config/preferences_box.py:12 +#, fuzzy +msgid "Hide text under icons (requires restart)" +msgstr "Скрывать текст за иконками" + +#: lutris/gui/config/preferences_box.py:13 +msgid "Show Tray Icon (requires restart)" +msgstr "" + +#: lutris/gui/config/preferences_box.py:14 +msgid "Use dark theme (requires dark theme variant for Gtk)" +msgstr "" + +#: lutris/gui/config/preferences_box.py:29 +#, fuzzy +msgid "Interface options" +msgstr "Параметры раннера" + +#: lutris/gui/config/preferences_dialog.py:18 +#, fuzzy +msgid "Lutris settings" +msgstr "Настройки Lutris" + +#: lutris/gui/config/preferences_dialog.py:26 +#, fuzzy +msgid "Interface" +msgstr "Целочисленный масштаб" + +#: lutris/gui/config/preferences_dialog.py:27 lutris/gui/widgets/sidebar.py:271 +msgid "Runners" +msgstr "Раннеры" + +#: lutris/gui/config/preferences_dialog.py:28 lutris/gui/widgets/sidebar.py:270 +msgid "Sources" +msgstr "Источники" + +#: lutris/gui/config/preferences_dialog.py:29 +#, fuzzy +msgid "Hardware information" +msgstr "Информация о системе" + +#: lutris/gui/config/preferences_dialog.py:30 +#, fuzzy +msgid "Global options" +msgstr "Параметры игры" + +#: lutris/gui/config/runner_box.py:90 lutris/gui/widgets/sidebar.py:214 +#, python-format +msgid "Manage %s versions" +msgstr "Менеджер версий %s" + +#: lutris/gui/config/runner_box.py:121 +#, fuzzy, python-format +msgid "Do you want to uninstall %s?" +msgstr "Для этой игры требуется %s. Вы хотите его установить?" + +#: lutris/gui/config/runner_box.py:122 +#, python-format +msgid "This will remove %s and all associated data." +msgstr "Это действие удалит %s и все связанные с ним данные." + +#: lutris/gui/config/runners_box.py:17 +msgid "Add, remove or configure runners" +msgstr "" + +#: lutris/gui/config/runners_box.py:19 +msgid "" +"Runners are programs such as emulators, engines or translation layers " +"capable of running games." +msgstr "" + +#: lutris/gui/config/services_box.py:18 +#, fuzzy +msgid "Enable integrations with game sources" +msgstr "Включить субтитры (если в игре есть голос)" + +#: lutris/gui/config/services_box.py:20 +msgid "" +"Access your game libraries from various sources. Changes require a restart " +"to take effect." +msgstr "" + +#: lutris/gui/config/sysinfo_box.py:12 +msgid "Hide text under icons" +msgstr "Скрывать текст за иконками" + +#: lutris/gui/config/sysinfo_box.py:13 +msgid "Show Tray Icon" +msgstr "Показать иконку в области уведомлений" + +#: lutris/gui/config/sysinfo_box.py:38 +msgid "Copy to clipboard" +msgstr "" + +#: lutris/gui/config/sysinfo_box.py:41 +#, fuzzy +msgid "System information" +msgstr "Информация о системе" #: lutris/gui/dialogs/cache.py:11 msgid "Cache configuration" @@ -836,58 +999,59 @@ msgstr "Файл загружается" msgid "Downloading %s" msgstr "%s загружается" -#: lutris/gui/dialogs/__init__.py:133 lutris/gui/dialogs/__init__.py:159 -#: lutris/gui/dialogs/__init__.py:249 lutris/gui/dialogs/issue.py:74 -#: lutris/gui/dialogs/runner_install.py:36 lutris/gui/widgets/common.py:99 +#: lutris/gui/dialogs/__init__.py:133 lutris/gui/dialogs/__init__.py:160 +#: lutris/gui/dialogs/issue.py:74 lutris/gui/dialogs/runner_install.py:63 +#: lutris/gui/widgets/common.py:98 msgid "_OK" msgstr "_OK" -#: lutris/gui/dialogs/__init__.py:150 +#: lutris/gui/dialogs/__init__.py:151 msgid "Please choose a file" msgstr "Пожалуйста, выберите файл" -#: lutris/gui/dialogs/__init__.py:174 +#: lutris/gui/dialogs/__init__.py:181 +msgid "Checking for runtime updates, please wait…" +msgstr "" + +#: lutris/gui/dialogs/__init__.py:212 #, python-format msgid "%s is already installed" msgstr "%s уже установлен" -#: lutris/gui/dialogs/__init__.py:185 +#: lutris/gui/dialogs/__init__.py:221 msgid "Launch game" msgstr "Запустить игру" -#: lutris/gui/dialogs/__init__.py:189 +#: lutris/gui/dialogs/__init__.py:225 msgid "Install the game again" msgstr "Установить игру заново" -#: lutris/gui/dialogs/__init__.py:193 lutris/gui/dialogs/__init__.py:437 +#: lutris/gui/dialogs/__init__.py:229 lutris/gui/dialogs/__init__.py:272 +#: lutris/gui/dialogs/__init__.py:360 msgid "OK" msgstr "OK" -#: lutris/gui/dialogs/__init__.py:246 -msgid "Select directory" -msgstr "Выберите каталог" +#: lutris/gui/dialogs/__init__.py:248 +msgid "Select game to launch" +msgstr "" -#: lutris/gui/dialogs/__init__.py:313 +#: lutris/gui/dialogs/__init__.py:333 msgid "Login failed" msgstr "Ошибка входа" -#: lutris/gui/dialogs/__init__.py:386 -msgid "Loading..." -msgstr "Загрузка..." - -#: lutris/gui/dialogs/__init__.py:421 +#: lutris/gui/dialogs/__init__.py:344 msgid "Install script for {}" msgstr "Установочный скрипт для {}" -#: lutris/gui/dialogs/__init__.py:473 +#: lutris/gui/dialogs/__init__.py:396 msgid "Do not display this message again." msgstr "Не показывать это сообщение снова." -#: lutris/gui/dialogs/__init__.py:494 +#: lutris/gui/dialogs/__init__.py:417 msgid "Wine is not installed on your system." msgstr "На вашей системе не установлен Wine." -#: lutris/gui/dialogs/__init__.py:496 +#: lutris/gui/dialogs/__init__.py:419 msgid "" "Having Wine installed on your system guarantees that Wine builds from Lutris " "will have all required dependencies.\n" @@ -901,6 +1065,11 @@ msgstr "" "Для установки Wine проследуйте инструкциям приведенным в Lutris Вики." +#: lutris/gui/dialogs/__init__.py:445 +#, python-format +msgid "Moving %s to %s..." +msgstr "" + #: lutris/gui/dialogs/issue.py:27 msgid "Submit an issue" msgstr "Сообщить об ошибке" @@ -923,76 +1092,108 @@ msgstr "_Сохранить" msgid "Select a location to save the issue" msgstr "Выберите путь для сохранения сообщения об ошибке" -#: lutris/gui/dialogs/issue.py:90 +#: lutris/gui/dialogs/issue.py:91 #, python-format msgid "Issue saved in %s" msgstr "Сообщение об ошибке сохранено в %s" -#: lutris/gui/dialogs/runner_install.py:44 +#: lutris/gui/dialogs/runner_install.py:29 +#, python-format +msgid "Showing games using %s" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:71 #, python-format msgid "Waiting for response from %s" msgstr "Ожидаем ответа от %s" -#: lutris/gui/dialogs/runner_install.py:60 +#: lutris/gui/dialogs/runner_install.py:87 #, python-format msgid "Unable to get runner versions: %s" msgstr "Не удалось получить версии раннера: " -#: lutris/gui/dialogs/runner_install.py:74 +#: lutris/gui/dialogs/runner_install.py:101 msgid "Unable to get runner versions from winegame.net" msgstr "Не удалось получить версии раннера с winegame.net" -#: lutris/gui/dialogs/runner_install.py:83 +#: lutris/gui/dialogs/runner_install.py:108 #, python-format msgid "%s version management" msgstr "Менеджер версий %s" -#: lutris/gui/dialogs/runner_install.py:142 -#, python-format -msgid "In use by %d game" -msgid_plural "In use by %d games" +#: lutris/gui/dialogs/runner_install.py:158 +#, fuzzy, python-format +msgid "_View %d game" +msgid_plural "_View %d games" msgstr[0] "Используется игрой %d" msgstr[1] "Используется играми %d" msgstr[2] "Используется играми %d" -#: lutris/gui/dialogs/runner_install.py:144 -msgid "Not in use" -msgstr "Не используется" +#: lutris/gui/dialogs/runner_install.py:190 +#: lutris/gui/dialogs/uninstall_game.py:34 +msgid "Uninstall" +msgstr "Удалить" + +#: lutris/gui/dialogs/runner_install.py:214 +#, fuzzy +msgid "Wine version usage" +msgstr "Версия Wine" -#: lutris/gui/dialogs/runner_install.py:176 +#: lutris/gui/dialogs/runner_install.py:256 msgid "Do you want to cancel the download?" msgstr "Вы хотите прекратить загрузку?" -#: lutris/gui/dialogs/runner_install.py:177 +#: lutris/gui/dialogs/runner_install.py:257 msgid "Download starting" msgstr "Загрузка начата" -#: lutris/gui/dialogs/runner_install.py:234 +#: lutris/gui/dialogs/runner_install.py:307 +#, python-format +msgid "Version %s is not longer available" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:332 msgid "Downloading…" msgstr "Загружается…" -#: lutris/gui/dialogs/runner_install.py:237 +#: lutris/gui/dialogs/runner_install.py:335 msgid "Extracting…" msgstr "Извлекаем…" -#: lutris/gui/dialogs/runner_install.py:274 +#: lutris/gui/dialogs/runner_install.py:377 msgid "Failed to retrieve the runner archive" msgstr "Не удалось получить архив с раннером" -#: lutris/gui/dialogs/runners.py:58 -msgid "Multiple platforms" -msgstr "Множество платформ" +#: lutris/gui/dialogs/uninstall_game.py:27 +#, python-format +msgid "Uninstall %s" +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:38 +#, fuzzy +msgid "No file will be deleted" +msgstr "Файл не указан" -#: lutris/gui/dialogs/runners.py:123 lutris/gui/widgets/sidebar.py:201 +#: lutris/gui/dialogs/uninstall_game.py:41 #, python-format -msgid "Manage %s versions" -msgstr "Менеджер версий %s" +msgid "The folder %s is used by other games and will be kept." +msgstr "" -#: lutris/gui/dialogs/uninstall_game.py:35 -msgid "Uninstall" +#: lutris/gui/dialogs/uninstall_game.py:44 +msgid "Calculating size…" +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:48 +#, python-format +msgid "Content of %s are protected and will not be deleted." +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:76 +#, fuzzy, python-format +msgid "Delete %s (%s)" msgstr "Удалить" -#: lutris/gui/dialogs/uninstall_game.py:84 +#: lutris/gui/dialogs/uninstall_game.py:93 #, python-format msgid "" "Please confirm.\n" @@ -1003,152 +1204,198 @@ msgstr "" "Все связанное с %s\n" "будет удалено." -#: lutris/gui/dialogs/uninstall_game.py:87 +#: lutris/gui/dialogs/uninstall_game.py:96 msgid "Permanently delete files?" msgstr "Удалить файлы навсегда?" +#: lutris/gui/dialogs/uninstall_game.py:103 +msgid "Uninstalling game and deleting files..." +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:105 +#, fuzzy +msgid "Uninstalling game..." +msgstr "Переустановить игру" + +#: lutris/gui/dialogs/uninstall_game.py:122 +#, python-format +msgid "Remove %s" +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:128 +#, python-format +msgid "" +"Completely remove %s from the library?\n" +"All play time will be lost." +msgstr "" + +#: lutris/gui/dialogs/webconnect_dialog.py:106 +msgid "Loading..." +msgstr "Загрузка..." + #: lutris/gui/installer/file_box.py:95 -#, python-brace-format -msgid "Steam game for {platform} (appid: {appid})" +#, fuzzy, python-brace-format +msgid "Steam game {appid}" msgstr "Игра из Steam для {platform} (appid: {appid})" -#: lutris/gui/installer/file_box.py:138 lutris/gui/installer/file_box.py:182 +#: lutris/gui/installer/file_box.py:110 +#, python-brace-format +msgid "{file} on {host}" +msgstr "" + +#: lutris/gui/installer/file_box.py:121 msgid "Download" msgstr "Загрузить" -#: lutris/gui/installer/file_box.py:142 -msgid "Use cache" +#: lutris/gui/installer/file_box.py:123 +#, fuzzy +msgid "Use Cache" msgstr "Использовать кэш" -#: lutris/gui/installer/file_box.py:183 lutris/gui/installerwindow.py:64 -msgid "Cache" -msgstr "Кэш" - -#: lutris/gui/installer/file_box.py:184 lutris/services/xdg.py:40 -msgid "Local" -msgstr "Локальный" - -#: lutris/gui/installer/file_box.py:185 lutris/runners/steam.py:44 -#: lutris/services/steam.py:83 +#: lutris/gui/installer/file_box.py:125 lutris/runners/steam.py:29 +#: lutris/services/steam.py:73 msgid "Steam" msgstr "Steam" -#: lutris/gui/installer/file_box.py:207 +#: lutris/gui/installer/file_box.py:126 +#, fuzzy +msgid "Select File" +msgstr "Выбрать файл" + +#: lutris/gui/installer/file_box.py:187 msgid "Cache file for future installations" msgstr "Поместить файл в кэш для будущих установок" -#: lutris/gui/installer/file_box.py:226 +#: lutris/gui/installer/file_box.py:206 msgid "Source:" msgstr "Источник:" -#: lutris/gui/installerwindow.py:75 +#: lutris/gui/installerwindow.py:65 +msgid "Cache" +msgstr "Кэш" + +#: lutris/gui/installerwindow.py:76 msgid "Abort and revert the installation" msgstr "Прервать и отменить установку" -#: lutris/gui/installerwindow.py:77 +#: lutris/gui/installerwindow.py:78 msgid "_Eject" msgstr "_Выбросить" -#: lutris/gui/installerwindow.py:78 +#: lutris/gui/installerwindow.py:79 msgid "_View source" msgstr "_Показать источник" -#: lutris/gui/installerwindow.py:79 +#: lutris/gui/installerwindow.py:80 msgid "_Install" msgstr "_Установить" -#: lutris/gui/installerwindow.py:80 +#: lutris/gui/installerwindow.py:81 msgid "_Continue" msgstr "П_родолжить" -#: lutris/gui/installerwindow.py:81 +#: lutris/gui/installerwindow.py:82 msgid "_Launch" msgstr "_Запустить" -#: lutris/gui/installerwindow.py:82 +#: lutris/gui/installerwindow.py:83 msgid "_Close" msgstr "З_акрыть" -#: lutris/gui/installerwindow.py:125 +#: lutris/gui/installerwindow.py:122 +#, python-format +msgid "Missing field \"%s\" in install script" +msgstr "" + +#: lutris/gui/installerwindow.py:128 #, python-format msgid "Install %s" msgstr "Установить %s" -#: lutris/gui/installerwindow.py:165 +#: lutris/gui/installerwindow.py:162 #, python-format msgid "This game requires %s. Do you want to install it?" msgstr "Для этой игры требуется %s. Вы хотите его установить?" -#: lutris/gui/installerwindow.py:166 +#: lutris/gui/installerwindow.py:163 msgid "Missing dependency" msgstr "Отсутствует зависимость" -#: lutris/gui/installerwindow.py:178 +#: lutris/gui/installerwindow.py:175 msgid "Installing {}" msgstr "Установка {}" -#: lutris/gui/installerwindow.py:186 +#: lutris/gui/installerwindow.py:196 msgid "Select installation directory" msgstr "Выберите каталог для установки" -#: lutris/gui/installerwindow.py:236 +#: lutris/gui/installerwindow.py:246 msgid "Autodetect" msgstr "Определить автоматически" -#: lutris/gui/installerwindow.py:242 +#: lutris/gui/installerwindow.py:252 msgid "Browse…" msgstr "Выбрать…" -#: lutris/gui/installerwindow.py:249 +#: lutris/gui/installerwindow.py:259 msgid "Select the folder where the disc is mounted" msgstr "Выберите каталог к которому примонтирован диск" -#: lutris/gui/installerwindow.py:309 +#: lutris/gui/installerwindow.py:320 msgid "" "Please review the files needed for the installation then click 'Continue'" msgstr "" "Пожалуйста проверьте файлы необходимые для установки, затем нажмите " "'Продолжить'" -#: lutris/gui/installerwindow.py:494 +#: lutris/gui/installerwindow.py:358 +msgid "" +"This game has extra content. \n" +"Select which one you want and they will be available in the 'extras' folder " +"where the game is installed." +msgstr "" + +#: lutris/gui/installerwindow.py:459 +#, fuzzy, python-format +msgid "Unable to get files: %s" +msgstr "Не удалось получить версии раннера: " + +#: lutris/gui/installerwindow.py:554 msgid "Remove game files" msgstr "Удалить игровые файлы" -#: lutris/gui/installerwindow.py:500 +#: lutris/gui/installerwindow.py:560 msgid "Are you sure you want to cancel the installation?" msgstr "Вы уверены что хотите прервать установку?" -#: lutris/gui/installerwindow.py:501 +#: lutris/gui/installerwindow.py:561 msgid "Cancel installation?" msgstr "Прервать установку?" -#: lutris/gui/lutriswindow.py:355 +#: lutris/gui/lutriswindow.py:345 #, python-format msgid "Connect your %s account to access your games" msgstr "Подключите ваш аккаунт %s чтобы получить доступ к вашим играм" -#: lutris/gui/lutriswindow.py:423 +#: lutris/gui/lutriswindow.py:416 #, python-format msgid "No games matching '%s' found " msgstr "Не найдено игр соответствующих %s" -#: lutris/gui/lutriswindow.py:425 -msgid "Use search to find games on winegame.net" -msgstr "Используйте строку поиска чтобы искать игры на winegame.net" - -#: lutris/gui/lutriswindow.py:428 +#: lutris/gui/lutriswindow.py:419 msgid "Add games to your favorites to see them here." msgstr "Добавьте игры в избранное, после этого они появятся здесь." -#: lutris/gui/lutriswindow.py:430 +#: lutris/gui/lutriswindow.py:421 msgid "No installed games found. Press Ctrl+H to show all games." msgstr "Не найдено установленных игр. Нажмите CTRL+H чтобы показать все игры." -#: lutris/gui/lutriswindow.py:432 +#: lutris/gui/lutriswindow.py:430 msgid "No games found" msgstr "Игр не найдено" -#: lutris/gui/views/list.py:47 lutris/runners/dolphin.py:25 +#: lutris/gui/views/list.py:48 lutris/runners/dolphin.py:26 +#: lutris/runners/scummvm.py:178 msgid "Platform" msgstr "Платформа" @@ -1190,20 +1437,20 @@ msgstr "Добавить" msgid "Delete" msgstr "Удалить" -#: lutris/gui/widgets/download_progress.py:26 -msgid "Downloading {}" -msgstr "Загружается {}" +#: lutris/gui/widgets/download_progress_box.py:88 +msgid "Retry" +msgstr "" -#: lutris/gui/widgets/download_progress.py:92 +#: lutris/gui/widgets/download_progress_box.py:115 msgid "Download interrupted" msgstr "Загрузка прервана" -#: lutris/gui/widgets/download_progress.py:101 +#: lutris/gui/widgets/download_progress_box.py:123 #, python-brace-format msgid "{downloaded:0.2f} / {size:0.2f}MB ({speed:0.2f}MB/s), {time} remaining" msgstr "{downloaded:0.2f} / {size:0.2f}МБ ({speed:0.2f}МБ/c), {time} осталось" -#: lutris/gui/widgets/game_bar.py:133 +#: lutris/gui/widgets/game_bar.py:150 #, python-format msgid "" "Platform:\n" @@ -1212,7 +1459,7 @@ msgstr "" "Платформа:\n" "%s" -#: lutris/gui/widgets/game_bar.py:140 +#: lutris/gui/widgets/game_bar.py:159 #, python-format msgid "" "Time played:\n" @@ -1221,7 +1468,7 @@ msgstr "" "Времени в игре:\n" "%s" -#: lutris/gui/widgets/game_bar.py:147 +#: lutris/gui/widgets/game_bar.py:168 #, python-format msgid "" "Last played:\n" @@ -1230,108 +1477,250 @@ msgstr "" "Последний запуск:\n" "%s" -#: lutris/gui/widgets/game_bar.py:172 +#: lutris/gui/widgets/game_bar.py:204 msgid "Launching" msgstr "Запуск" -#: lutris/gui/widgets/sidebar.py:126 lutris/gui/widgets/sidebar.py:153 +#: lutris/gui/widgets/sidebar.py:128 lutris/gui/widgets/sidebar.py:161 msgid "Reload" msgstr "Обновить" -#: lutris/gui/widgets/sidebar.py:140 -msgid "" -"Failed to load games. Check that your profile is set to public during the " -"sync." -msgstr "" -"Не удалось загрузить игры. Убедитесь что во время синхронизации ваш профиль " -"открыт." +#: lutris/gui/widgets/sidebar.py:160 lutris/gui/widgets/sidebar.py:204 +msgid "Run" +msgstr "Запустить" -#: lutris/gui/widgets/sidebar.py:154 +#: lutris/gui/widgets/sidebar.py:162 msgid "Disconnect" msgstr "Отключить" -#: lutris/gui/widgets/sidebar.py:155 +#: lutris/gui/widgets/sidebar.py:163 msgid "Connect" msgstr "Подключить" -#: lutris/gui/widgets/sidebar.py:191 -msgid "Run" -msgstr "Запустить" - -#: lutris/gui/widgets/sidebar.py:221 lutris/gui/widgets/sidebar.py:255 -msgid "Runners" -msgstr "Раннеры" +#: lutris/gui/widgets/sidebar.py:199 +msgid "Manage Versions" +msgstr "Менеджер версий" -#: lutris/gui/widgets/sidebar.py:253 +#: lutris/gui/widgets/sidebar.py:269 msgid "Library" msgstr "Библиотека" -#: lutris/gui/widgets/sidebar.py:254 -msgid "Sources" -msgstr "Источники" - -#: lutris/gui/widgets/sidebar.py:256 +#: lutris/gui/widgets/sidebar.py:272 msgid "Platforms" msgstr "Платформы" -#: lutris/gui/widgets/sidebar.py:285 -msgid "Games" -msgstr "Игры" +#: lutris/gui/widgets/sidebar.py:316 lutris/util/system.py:27 +msgid "Games" +msgstr "Игры" + +#: lutris/gui/widgets/sidebar.py:325 +msgid "Recent" +msgstr "Недавние" + +#: lutris/gui/widgets/sidebar.py:334 +msgid "Favorites" +msgstr "Избранные" + +#: lutris/gui/widgets/sidebar.py:342 +msgid "Running" +msgstr "Запущенные" + +#: lutris/gui/widgets/status_icon.py:67 +msgid "Show Lutris" +msgstr "Показать Lutris" + +#: lutris/gui/widgets/status_icon.py:72 +msgid "Quit" +msgstr "Закрыть" + +#: lutris/installer/commands.py:66 +#, python-brace-format +msgid "One of {params} parameter is mandatory for the {cmd} command" +msgstr "" + +#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:123 +#: lutris/installer/interpreter.py:146 +msgid " or " +msgstr "" + +#: lutris/installer/commands.py:73 +#, python-brace-format +msgid "The {param} parameter is mandatory for the {cmd} command" +msgstr "" + +#: lutris/installer/commands.py:90 +#, fuzzy, python-format +msgid "Invalid file '%s'. Can't make it executable" +msgstr "Файл %s не является исполняемым" + +#: lutris/installer/commands.py:103 +msgid "" +"Parameters file and command can't be used at the same time for the execute " +"command" +msgstr "" + +#: lutris/installer/commands.py:138 +msgid "No parameters supplied to execute command." +msgstr "" + +#: lutris/installer/commands.py:152 +#, fuzzy, python-format +msgid "Unable to find executable %s" +msgstr "Пользовательский исполняемый файл Wine" + +#: lutris/installer/commands.py:186 +#, python-format +msgid "%s does not exist" +msgstr "" + +#: lutris/installer/commands.py:192 +#, python-format +msgid "Extracting %s" +msgstr "Извлекаем %s" + +#: lutris/installer/commands.py:234 +msgid "" +"Insert or mount game disc and click Autodetect or\n" +"use Browse if the disc is mounted on a non standard location." +msgstr "" +"Вставьте или примонтируйте диск с игрой и нажмите\n" +"Определить автоматически, или используйте Выбрать\n" +"если диск примонтирован в нестандартном месте." + +#: lutris/installer/commands.py:238 +#, python-format +msgid "" +"\n" +"\n" +"Lutris is looking for a mounted disk drive or image \n" +"containing the following file or folder:\n" +"%s" +msgstr "" +"\n" +"\n" +"Lutris'у нужен примонтированный диск или образ \n" +"содержащий следующий файл или каталог:\n" +"%s" + +#: lutris/installer/commands.py:280 +#, python-format +msgid "Source does not exist: %s" +msgstr "" + +#: lutris/installer/commands.py:306 +#, python-format +msgid "Invalid source for 'move' operation: %s" +msgstr "" + +#: lutris/installer/commands.py:325 +#, python-brace-format +msgid "" +"Can't move {src} \n" +"to destination {dst}" +msgstr "" + +#: lutris/installer/commands.py:332 +#, python-format +msgid "Rename error, source path does not exist: %s" +msgstr "" + +#: lutris/installer/commands.py:339 +#, python-format +msgid "Rename error, destination already exists: %s" +msgstr "" + +#: lutris/installer/commands.py:355 +#, fuzzy +msgid "Missing parameter src" +msgstr "Отсутствует зависимость" + +#: lutris/installer/commands.py:358 +msgid "Wrong value for 'src' param" +msgstr "" + +#: lutris/installer/commands.py:362 +msgid "Wrong value for 'dst' param" +msgstr "" + +#: lutris/installer/commands.py:451 +#, python-format +msgid "Command exited with code %s" +msgstr "" + +#: lutris/installer/commands.py:469 +#, python-format +msgid "Wrong value for write_file mode: '%s'" +msgstr "" + +#: lutris/installer/installer_file.py:26 +#, python-format +msgid "missing field `url` for file `%s`" +msgstr "" -#: lutris/gui/widgets/sidebar.py:294 -msgid "Recent" -msgstr "Недавние" +#: lutris/installer/installer_file.py:38 +#, python-format +msgid "missing field `filename` in file `%s`" +msgstr "" -#: lutris/gui/widgets/sidebar.py:303 -msgid "Favorites" -msgstr "Избранные" +#: lutris/installer/installer_file.py:176 +msgid "Invalid checksum, expected format (type:hash) " +msgstr "" -#: lutris/gui/widgets/sidebar.py:311 -msgid "Running" -msgstr "Запущенные" +#: lutris/installer/installer_file.py:179 +msgid " checksum mismatch " +msgstr "" -#: lutris/gui/widgets/status_icon.py:67 -msgid "Show WineGame" -msgstr "Показать WineGame" +#: lutris/installer/installer.py:179 +msgid "Game config key must be a string" +msgstr "" -#: lutris/gui/widgets/status_icon.py:72 -msgid "Quit" -msgstr "Закрыть" +#: lutris/installer/installer.py:228 +msgid "Invalid 'game' section" +msgstr "" -#: lutris/installer/commands.py:168 -#, python-format -msgid "Extracting %s" -msgstr "Извлекаем %s" +#: lutris/installer/interpreter.py:53 +msgid "This installer doesn't have a 'script' section" +msgstr "" -#: lutris/installer/commands.py:210 +#: lutris/installer/interpreter.py:57 +#, fuzzy msgid "" -"Insert or mount game disc and click Autodetect or\n" -"use Browse if the disc is mounted on a non standard location." +"Invalid script: \n" +"{}" +msgstr "Установочный скрипт для {}" + +#: lutris/installer/interpreter.py:123 lutris/installer/interpreter.py:126 +#, fuzzy, python-format +msgid "This installer requires %s on your system" +msgstr "На вашей системе не установлен Wine." + +#: lutris/installer/interpreter.py:139 +msgid "You need to install {} before" msgstr "" -"Вставьте или примонтируйте диск с игрой и нажмите\n" -"Определить автоматически, или используйте Выбрать\n" -"если диск примонтирован в нестандартном месте." -#: lutris/installer/commands.py:214 -#, python-format -msgid "" -"\n" -"\n" -"Lutris is looking for a mounted disk drive or image \n" -"containing the following file or folder:\n" -"%s" +#: lutris/installer/interpreter.py:187 +msgid "Lutris does not have the necessary permissions to install to path:" msgstr "" -"\n" -"\n" -"Lutris'у нужен примонтированный диск или образ \n" -"содержащий следующий файл или каталог:\n" -"%s" -#: lutris/installer/interpreter.py:289 +#: lutris/installer/interpreter.py:271 +#, fuzzy, python-format +msgid "Invalid runner provided %s" +msgstr "Раннер не указан" + +#: lutris/installer/interpreter.py:297 msgid "Installing game data" msgstr "Установка игровых данных" -#: lutris/installer/interpreter.py:348 +#: lutris/installer/interpreter.py:309 +msgid "Installer commands are not formatted correctly" +msgstr "" + +#: lutris/installer/interpreter.py:342 +#, python-format +msgid "The command \"%s\" does not exist." +msgstr "" + +#: lutris/installer/interpreter.py:363 #, python-format msgid "" "The executable at path %s can't be found, please check the destination " @@ -1342,10 +1731,15 @@ msgstr "" "каталог назначения.\n" "Некоторые части процесса установки могли не завершиться успешно." -#: lutris/installer/interpreter.py:354 +#: lutris/installer/interpreter.py:369 msgid "Installation completed!" msgstr "Установка завершена!" +#: lutris/installer/steam_installer.py:47 +#, python-format +msgid "Malformed steam path: %s" +msgstr "" + #: lutris/runners/atari800.py:19 msgid "Desktop resolution" msgstr "Разрешение рабочего стола" @@ -1362,8 +1756,8 @@ msgstr "8-битные компьютеры Atari" msgid "Atari 400, 800 and XL emulator" msgstr "Эмулятор Atari 400, 800 и XL" -#: lutris/runners/atari800.py:44 lutris/runners/jzintv.py:19 -#: lutris/runners/libretro.py:68 lutris/runners/mame.py:72 +#: lutris/runners/atari800.py:41 lutris/runners/jzintv.py:19 +#: lutris/runners/libretro.py:74 lutris/runners/mame.py:78 #: lutris/runners/mednafen.py:57 lutris/runners/mupen64plus.py:20 #: lutris/runners/o2em.py:45 lutris/runners/openmsx.py:17 #: lutris/runners/osmose.py:21 lutris/runners/snes9x.py:27 @@ -1371,7 +1765,7 @@ msgstr "Эмулятор Atari 400, 800 и XL" msgid "ROM file" msgstr "Файл образа ПЗУ (ROM)" -#: lutris/runners/atari800.py:46 +#: lutris/runners/atari800.py:43 msgid "" "The game data, commonly called a ROM image. \n" "Supported formats: ATR, XFD, DCM, ATR.GZ, XFD.GZ and PRO." @@ -1379,11 +1773,11 @@ msgstr "" "Игровые данные обычно называемые образом ПЗУ (ROM). \n" "Поддерживаемые форматы: ATR, XFD, DCM, ATR.GZ, XFD.GZ и PRO." -#: lutris/runners/atari800.py:60 +#: lutris/runners/atari800.py:57 msgid "BIOS location" msgstr "Путь к BIOS" -#: lutris/runners/atari800.py:62 +#: lutris/runners/atari800.py:59 msgid "" "A folder containing the Atari 800 BIOS files.\n" "They are provided by Lutris so you shouldn't have to change this." @@ -1391,48 +1785,48 @@ msgstr "" "Каталог содержащий файлы BIOS для Atari 800.\n" "Эти файлы предоставляются Lutris, вам не нужно менять этот параметр." -#: lutris/runners/atari800.py:73 +#: lutris/runners/atari800.py:70 msgid "Emulate Atari 800" msgstr "Эмулировать Atari 800" -#: lutris/runners/atari800.py:74 +#: lutris/runners/atari800.py:71 msgid "Emulate Atari 800 XL" msgstr "Эмулировать Atari 800 XL" -#: lutris/runners/atari800.py:75 +#: lutris/runners/atari800.py:72 msgid "Emulate Atari 320 XE (Compy Shop)" msgstr "Эмулировать Atari 320 XE (Compy Shop)" -#: lutris/runners/atari800.py:76 +#: lutris/runners/atari800.py:73 msgid "Emulate Atari 320 XE (Rambo)" msgstr "Эмулировать Atari 320 XE (Rambo)" -#: lutris/runners/atari800.py:77 +#: lutris/runners/atari800.py:74 msgid "Emulate Atari 5200" msgstr "Эмулировать Atari 5200" -#: lutris/runners/atari800.py:82 lutris/runners/mame.py:77 +#: lutris/runners/atari800.py:79 lutris/runners/mame.py:83 #: lutris/runners/vice.py:88 msgid "Machine" msgstr "Устройство" -#: lutris/runners/atari800.py:88 lutris/runners/hatari.py:72 -#: lutris/runners/jzintv.py:43 lutris/runners/libretro.py:88 -#: lutris/runners/mame.py:151 lutris/runners/mednafen.py:74 -#: lutris/runners/mupen64plus.py:28 lutris/runners/o2em.py:75 -#: lutris/runners/osmose.py:34 lutris/runners/pcsx2.py:28 -#: lutris/runners/pico8.py:38 lutris/runners/redream.py:25 -#: lutris/runners/reicast.py:42 lutris/runners/residualvm.py:42 -#: lutris/runners/scummvm.py:46 lutris/runners/snes9x.py:36 -#: lutris/runners/vice.py:57 +#: lutris/runners/atari800.py:85 lutris/runners/easyrpg.py:144 +#: lutris/runners/hatari.py:72 lutris/runners/jzintv.py:43 +#: lutris/runners/libretro.py:94 lutris/runners/mame.py:157 +#: lutris/runners/mednafen.py:74 lutris/runners/mupen64plus.py:28 +#: lutris/runners/o2em.py:75 lutris/runners/osmose.py:34 +#: lutris/runners/pcsx2.py:26 lutris/runners/pico8.py:38 +#: lutris/runners/redream.py:25 lutris/runners/reicast.py:42 +#: lutris/runners/residualvm.py:39 lutris/runners/scummvm.py:76 +#: lutris/runners/snes9x.py:36 lutris/runners/vice.py:57 msgid "Fullscreen" msgstr "Полноэкранный режим" -#: lutris/runners/atari800.py:95 +#: lutris/runners/atari800.py:92 msgid "Fullscreen resolution" msgstr "Разрешение в полноэкранном режиме" -#: lutris/runners/atari800.py:107 +#: lutris/runners/atari800.py:104 msgid "Could not download Atari 800 BIOS archive" msgstr "Не удалось загрузить архив с BIOS для Atari 800" @@ -1440,39 +1834,43 @@ msgstr "Не удалось загрузить архив с BIOS для Atari 8 msgid "GameCube and Wii emulator" msgstr "Эмулятор GameCube и Wii" -#: lutris/runners/dolphin.py:11 +#: lutris/runners/dolphin.py:11 lutris/services/dolphin.py:27 msgid "Dolphin" msgstr "Dolphin" -#: lutris/runners/dolphin.py:12 lutris/runners/dolphin.py:26 +#: lutris/runners/dolphin.py:12 lutris/runners/dolphin.py:27 msgid "Nintendo GameCube" msgstr "Nintendo GameСube" -#: lutris/runners/dolphin.py:12 lutris/runners/dolphin.py:26 +#: lutris/runners/dolphin.py:12 lutris/runners/dolphin.py:27 msgid "Nintendo Wii" msgstr "Nintendo Wii" -#: lutris/runners/dolphin.py:20 lutris/runners/pcsx2.py:20 +#: lutris/runners/dolphin.py:21 lutris/runners/pcsx2.py:18 msgid "ISO file" msgstr "Файл ISO" -#: lutris/runners/dolphin.py:33 lutris/runners/pcsx2.py:40 +#: lutris/runners/dolphin.py:34 lutris/runners/pcsx2.py:38 #: lutris/runners/rpcs3.py:23 msgid "No GUI" msgstr "Не использовать графический интерфейс" -#: lutris/runners/dolphin.py:35 +#: lutris/runners/dolphin.py:36 msgid "Disable the graphical user interface." msgstr "Отключить графический интерфейс пользователя." -#: lutris/runners/dolphin.py:40 +#: lutris/runners/dolphin.py:41 msgid "Batch" msgstr "Закрывать с эмулятором" -#: lutris/runners/dolphin.py:42 +#: lutris/runners/dolphin.py:44 msgid "Exit Dolphin with emulator." msgstr "Закрывать Dolphin вместе с эмулятором" +#: lutris/runners/dolphin.py:50 +msgid "Custom Global User Directory" +msgstr "" + #: lutris/runners/dosbox.py:13 msgid "DOSBox" msgstr "DOSBox" @@ -1540,11 +1938,11 @@ msgstr "" msgid "none" msgstr "нет" -#: lutris/runners/dosbox.py:85 lutris/runners/scummvm.py:70 +#: lutris/runners/dosbox.py:85 lutris/runners/scummvm.py:101 msgid "Graphic scaler" msgstr "Тип масштабирования" -#: lutris/runners/dosbox.py:93 lutris/runners/scummvm.py:90 +#: lutris/runners/dosbox.py:93 lutris/runners/scummvm.py:119 msgid "" "The algorithm used to scale up the game's base resolution, resulting in " "different visual styles. " @@ -1568,6 +1966,321 @@ msgstr "Открывать игру в полноэкранном режиме" msgid "Tells DOSBox to launch the game in fullscreen." msgstr "Указывает DOSBox запускать игру в полноэкранном режиме." +#: lutris/runners/easyrpg.py:10 +#, fuzzy +msgid "EasyRPG Player" +msgstr "Последний запуск" + +#: lutris/runners/easyrpg.py:11 +msgid "Runs RPG Maker 2000/2003 games" +msgstr "" + +#: lutris/runners/easyrpg.py:12 lutris/runners/linux.py:14 +#: lutris/runners/linux.py:16 lutris/runners/residualvm.py:15 +#: lutris/runners/scummvm.py:14 lutris/runners/steam.py:30 +#: lutris/runners/zdoom.py:15 +msgid "Linux" +msgstr "Linux" + +#: lutris/runners/easyrpg.py:22 +#, fuzzy +msgid "Game directory" +msgstr "Каталог с данными" + +#: lutris/runners/easyrpg.py:23 +msgid "Select the directory of the game. (required)" +msgstr "" + +#: lutris/runners/easyrpg.py:28 +msgid "Encoding" +msgstr "" + +#: lutris/runners/easyrpg.py:30 +msgid "" +"Instead of auto detecting the encoding or using the one in RPG_RT.ini, the " +"specified encoding is used. Use 'auto' for automatic detection." +msgstr "" + +#: lutris/runners/easyrpg.py:38 +#, fuzzy +msgid "Engine" +msgstr "PC Engine" + +#: lutris/runners/easyrpg.py:39 +msgid "Disable auto detection of the simulated engine." +msgstr "" + +#: lutris/runners/easyrpg.py:41 lutris/runners/fsuae.py:50 +#: lutris/runners/mame.py:173 lutris/runners/wine.py:82 +#: lutris/runners/wine.py:416 +msgid "Auto" +msgstr "Автоматически" + +#: lutris/runners/easyrpg.py:42 +msgid "RPG Maker 2000 engine (v1.00 - v1.10)" +msgstr "" + +#: lutris/runners/easyrpg.py:43 +msgid "RPG Maker 2000 engine (v1.50 - v1.51)" +msgstr "" + +#: lutris/runners/easyrpg.py:44 +msgid "RPG Maker 2000 (English release) engine" +msgstr "" + +#: lutris/runners/easyrpg.py:45 +msgid "RPG Maker 2003 engine (v1.00 - v1.04)" +msgstr "" + +#: lutris/runners/easyrpg.py:46 +msgid "RPG Maker 2003 engine (v1.05 - v1.09a)" +msgstr "" + +#: lutris/runners/easyrpg.py:47 +msgid "RPG Maker 2003 (English release) engine" +msgstr "" + +#: lutris/runners/easyrpg.py:54 lutris/runners/zdoom.py:46 +msgid "Save path" +msgstr "Путь сохранения" + +#: lutris/runners/easyrpg.py:56 +msgid "" +"Instead of storing save files in the game directory they are stored in the " +"specified path. The directory must exist." +msgstr "" + +#: lutris/runners/easyrpg.py:63 +#, fuzzy +msgid "New game" +msgstr "Добавить новую игру" + +#: lutris/runners/easyrpg.py:64 +msgid "Skip the title scene and start a new game directly." +msgstr "" + +#: lutris/runners/easyrpg.py:70 +#, fuzzy +msgid "Load game ID" +msgstr "Запустить игру" + +#: lutris/runners/easyrpg.py:72 +msgid "Skip the title scene and load SaveXX.lsd. Set to '0' to disable." +msgstr "" + +#: lutris/runners/easyrpg.py:82 +#, fuzzy +msgid "Start map ID" +msgstr "Варп на карту" + +#: lutris/runners/easyrpg.py:84 +msgid "" +"Overwrite the map used for new games and use MapXXXX.lmu instead. Set to '0' " +"to disable. \n" +"\n" +"Incompatible with 'Load game ID'." +msgstr "" + +#: lutris/runners/easyrpg.py:95 +msgid "Start position" +msgstr "" + +#: lutris/runners/easyrpg.py:97 +msgid "" +"Overwrite the party start position and move the party to the specified " +"position. Provide two numbers separated by a space. \n" +"\n" +"Incompatible with 'Load game ID'." +msgstr "" + +#: lutris/runners/easyrpg.py:106 +msgid "Start party" +msgstr "" + +#: lutris/runners/easyrpg.py:108 +msgid "" +"Overwrite the starting party members with the actors with the specified IDs. " +"Provide one to four numbers separated by spaces. \n" +"\n" +"Incompatible with 'Load game ID'." +msgstr "" + +#: lutris/runners/easyrpg.py:117 +msgid "Monster party" +msgstr "" + +#: lutris/runners/easyrpg.py:118 +msgid "Start a battle test with the specified monster party." +msgstr "" + +#: lutris/runners/easyrpg.py:123 +msgid "Record input" +msgstr "" + +#: lutris/runners/easyrpg.py:124 +msgid "Records all button input to the specified log file." +msgstr "" + +#: lutris/runners/easyrpg.py:129 +msgid "Replay input" +msgstr "" + +#: lutris/runners/easyrpg.py:131 +msgid "" +"Replays button input from the specified log file, as generated by 'Record " +"input'. If the RNG seed and the state of the save file directory is also the " +"same as it was when the log was recorded, this should reproduce an identical " +"run to the one recorded." +msgstr "" + +#: lutris/runners/easyrpg.py:145 +#, fuzzy +msgid "Start in fullscreen mode." +msgstr "Начать в режиме splore" + +#: lutris/runners/easyrpg.py:151 +#, fuzzy +msgid "Enable audio" +msgstr "Включено" + +#: lutris/runners/easyrpg.py:153 +msgid "Switch off to disable audio (in case you prefer your own music)." +msgstr "" + +#: lutris/runners/easyrpg.py:161 +#, fuzzy +msgid "Enable mouse" +msgstr "Включить Esync" + +#: lutris/runners/easyrpg.py:163 +msgid "Use mouse click for decision and scroll wheel for lists." +msgstr "" + +#: lutris/runners/easyrpg.py:170 +#, fuzzy +msgid "Enable touch" +msgstr "Включить Esync" + +#: lutris/runners/easyrpg.py:171 +msgid "Use one/two finger tap for decision/cancel." +msgstr "" + +#: lutris/runners/easyrpg.py:177 +msgid "Hide title" +msgstr "" + +#: lutris/runners/easyrpg.py:179 +msgid "Hide the title background image and center the command menu." +msgstr "" + +#: lutris/runners/easyrpg.py:186 +#, fuzzy +msgid "Enable VSync" +msgstr "Включить Esync" + +#: lutris/runners/easyrpg.py:188 +msgid "" +"Switch off to disable VSync and use the FPS limit. VSync may or may not be " +"supported on all platforms." +msgstr "" + +#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:318 +msgid "FPS limit" +msgstr "Ограничение FPS" + +#: lutris/runners/easyrpg.py:198 +msgid "" +"Set a custom frames per second limit. If unspecified, the default is 60 FPS. " +"Set to '0' to disable the frame limiter. This option may not be supported on " +"all platforms." +msgstr "" + +#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:442 +msgid "Show FPS" +msgstr "Показывать FPS" + +#: lutris/runners/easyrpg.py:207 +msgid "Enable frames per second counter." +msgstr "" + +#: lutris/runners/easyrpg.py:209 lutris/runners/mednafen.py:85 +#: lutris/runners/wine.py:439 +msgid "Disabled" +msgstr "Отключено" + +#: lutris/runners/easyrpg.py:210 +#, fuzzy +msgid "Fullscreen & title bar" +msgstr "Полноэкранный режим" + +#: lutris/runners/easyrpg.py:211 +msgid "Fullscreen, title bar & window" +msgstr "" + +#: lutris/runners/easyrpg.py:218 +msgid "RNG seed" +msgstr "" + +#: lutris/runners/easyrpg.py:219 +msgid "Seeds the random number generator" +msgstr "" + +#: lutris/runners/easyrpg.py:224 +msgid "Test play" +msgstr "" + +#: lutris/runners/easyrpg.py:225 +#, fuzzy +msgid "Enable TestPlay mode." +msgstr "Включить Feral GameMode" + +#: lutris/runners/easyrpg.py:231 +#, fuzzy +msgid "Enable RTP" +msgstr "Включить" + +#: lutris/runners/easyrpg.py:233 +msgid "Switch off to disable support for the Runtime Package (RTP)." +msgstr "" + +#: lutris/runners/easyrpg.py:240 +msgid "RPG2000 RTP location" +msgstr "" + +#: lutris/runners/easyrpg.py:242 +msgid "" +"Full path to a directory containing an extracted RPG Maker 2000 Run-Time-" +"Package (RTP)." +msgstr "" + +#: lutris/runners/easyrpg.py:249 +msgid "RPG2003 RTP location" +msgstr "" + +#: lutris/runners/easyrpg.py:251 +msgid "" +"Full path to a directory containing an extracted RPG Maker 2003 Run-Time-" +"Package (RTP)." +msgstr "" + +#: lutris/runners/easyrpg.py:258 +msgid "Fallback RTP location" +msgstr "" + +#: lutris/runners/easyrpg.py:259 +msgid "Full path to a directory containing a combined RTP." +msgstr "" + +#: lutris/runners/easyrpg.py:349 +#, fuzzy +msgid "No game directory provided" +msgstr "Файл не указан" + +#: lutris/runners/easyrpg.py:409 +#, fuzzy +msgid "The directory {} could not be found" +msgstr "Не удалось найти файл {}" + #: lutris/runners/fsuae.py:11 msgid "FS-UAE" msgstr "FS-UAE" @@ -1688,13 +2401,6 @@ msgstr "68060 без внутреннего MMU" msgid "68060" msgstr "68060" -#: lutris/runners/fsuae.py:50 lutris/runners/mame.py:159 -#: lutris/runners/wine.py:82 lutris/runners/wine.py:435 -#: lutris/runners/wine.py:472 lutris/runners/winesteam.py:86 -#: lutris/sysoptions.py:72 -msgid "Auto" -msgstr "Автоматически" - #: lutris/runners/fsuae.py:53 lutris/runners/fsuae.py:60 #: lutris/runners/fsuae.py:94 msgid "0" @@ -1996,7 +2702,7 @@ msgid "Floppy Disk B" msgstr "Флоппи-диск B" #: lutris/runners/hatari.py:52 lutris/runners/redream.py:74 -#: lutris/runners/zdoom.py:76 +#: lutris/runners/zdoom.py:75 msgid "None" msgstr "Нет" @@ -2005,6 +2711,7 @@ msgid "Keyboard" msgstr "Клавиатура" #: lutris/runners/hatari.py:52 lutris/runners/o2em.py:39 +#: lutris/runners/scummvm.py:186 msgid "Joystick" msgstr "Джойстик" @@ -2119,40 +2826,34 @@ msgstr "" msgid "Resolution" msgstr "Разрешение" -#: lutris/runners/libretro.py:59 +#: lutris/runners/libretro.py:65 msgid "Libretro" msgstr "Libretro" -#: lutris/runners/libretro.py:60 +#: lutris/runners/libretro.py:66 msgid "Multi-system emulator" msgstr "Многосистемный эмулятор" -#: lutris/runners/libretro.py:73 +#: lutris/runners/libretro.py:79 msgid "Core" msgstr "Ядро" -#: lutris/runners/libretro.py:82 lutris/runners/zdoom.py:88 +#: lutris/runners/libretro.py:88 lutris/runners/zdoom.py:87 msgid "Config file" msgstr "Файл конфигурации" -#: lutris/runners/libretro.py:94 +#: lutris/runners/libretro.py:100 msgid "Verbose logging" msgstr "Подробный журнал" -#: lutris/runners/libretro.py:257 +#: lutris/runners/libretro.py:271 msgid "No core has been selected for this game" msgstr "Ядро для этой игры не выбрано" -#: lutris/runners/libretro.py:268 +#: lutris/runners/libretro.py:282 msgid "No game file specified" msgstr "Файл игры не указан" -#: lutris/runners/linux.py:14 lutris/runners/linux.py:16 -#: lutris/runners/residualvm.py:15 lutris/runners/scummvm.py:16 -#: lutris/runners/steam.py:45 lutris/runners/zdoom.py:16 -msgid "Linux" -msgstr "Linux" - #: lutris/runners/linux.py:15 msgid "Runs native games" msgstr "Запускает нативные игры" @@ -2165,16 +2866,15 @@ msgstr "Исполняемый файл" msgid "The game's main executable file" msgstr "Основной исполняемый файл игры" -#: lutris/runners/linux.py:30 lutris/runners/mame.py:118 -#: lutris/runners/scummvm.py:39 lutris/runners/steam.py:62 -#: lutris/runners/steam.py:135 lutris/runners/wine.py:54 -#: lutris/runners/winesteam.py:63 lutris/runners/winesteam.py:155 -#: lutris/runners/zdoom.py:28 +#: lutris/runners/linux.py:30 lutris/runners/mame.py:124 +#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:47 +#: lutris/runners/steam.py:99 lutris/runners/wine.py:54 +#: lutris/runners/zdoom.py:27 msgid "Arguments" msgstr "Аргументы" -#: lutris/runners/linux.py:31 lutris/runners/mame.py:119 -#: lutris/runners/scummvm.py:40 lutris/runners/winesteam.py:64 +#: lutris/runners/linux.py:31 lutris/runners/mame.py:125 +#: lutris/runners/scummvm.py:32 msgid "Command line arguments used when launching the game" msgstr "Аргументы командной строки, используемые при запуске игры" @@ -2201,131 +2901,131 @@ msgstr "" "какой-нибудь новой библиотеки или использовании нестандартной библиотеки для " "особых целей." -#: lutris/runners/mame.py:59 +#: lutris/runners/mame.py:65 lutris/services/mame.py:11 msgid "MAME" msgstr "MAME" -#: lutris/runners/mame.py:60 +#: lutris/runners/mame.py:66 msgid "Arcade game emulator" msgstr "Эмулятор аркадных игр" -#: lutris/runners/mame.py:79 lutris/runners/mednafen.py:67 +#: lutris/runners/mame.py:85 lutris/runners/mednafen.py:67 msgid "The emulated machine." msgstr "Эмулируемая машина." -#: lutris/runners/mame.py:84 +#: lutris/runners/mame.py:90 msgid "Storage type" msgstr "Тип хранилища" -#: lutris/runners/mame.py:86 +#: lutris/runners/mame.py:92 msgid "Floppy disk" msgstr "Флоппи-диск" -#: lutris/runners/mame.py:87 +#: lutris/runners/mame.py:93 msgid "Floppy drive 1" msgstr "Флоппи-дисковод 1" -#: lutris/runners/mame.py:88 +#: lutris/runners/mame.py:94 msgid "Floppy drive 2" msgstr "Флоппи-дисковод 2" -#: lutris/runners/mame.py:89 +#: lutris/runners/mame.py:95 msgid "Floppy drive 3" msgstr "Флоппи-дисковод 3" -#: lutris/runners/mame.py:90 +#: lutris/runners/mame.py:96 msgid "Floppy drive 4" msgstr "Флоппи-дисковод 4" -#: lutris/runners/mame.py:91 +#: lutris/runners/mame.py:97 msgid "Cassette (tape)" msgstr "Кассета" -#: lutris/runners/mame.py:92 +#: lutris/runners/mame.py:98 msgid "Cassette 1 (tape)" msgstr "Кассета 1" -#: lutris/runners/mame.py:93 +#: lutris/runners/mame.py:99 msgid "Cassette 2 (tape)" msgstr "Кассета 2" -#: lutris/runners/mame.py:94 +#: lutris/runners/mame.py:100 msgid "Cartridge" msgstr "Картридж" -#: lutris/runners/mame.py:95 +#: lutris/runners/mame.py:101 msgid "Cartridge 1" msgstr "Картридж 1" -#: lutris/runners/mame.py:96 +#: lutris/runners/mame.py:102 msgid "Cartridge 2" msgstr "Картридж 2" -#: lutris/runners/mame.py:97 +#: lutris/runners/mame.py:103 msgid "Cartridge 3" msgstr "Картридж 3" -#: lutris/runners/mame.py:98 +#: lutris/runners/mame.py:104 msgid "Cartridge 4" msgstr "Картридж 4" -#: lutris/runners/mame.py:99 lutris/runners/mame.py:106 +#: lutris/runners/mame.py:105 lutris/runners/mame.py:112 msgid "Snapshot" msgstr "Снимок ФС" -#: lutris/runners/mame.py:100 +#: lutris/runners/mame.py:106 msgid "Hard Disk" msgstr "Жесткий диск" -#: lutris/runners/mame.py:101 +#: lutris/runners/mame.py:107 msgid "Hard Disk 1" msgstr "Жесткий диск 1" -#: lutris/runners/mame.py:102 +#: lutris/runners/mame.py:108 msgid "Hard Disk 2" msgstr "Жесткий диск 2" -#: lutris/runners/mame.py:103 +#: lutris/runners/mame.py:109 msgid "CD-ROM" msgstr "CD-ROM" -#: lutris/runners/mame.py:104 +#: lutris/runners/mame.py:110 msgid "CD-ROM 1" msgstr "CD-ROM 1" -#: lutris/runners/mame.py:105 +#: lutris/runners/mame.py:111 msgid "CD-ROM 2" msgstr "CD-ROM 2" -#: lutris/runners/mame.py:107 +#: lutris/runners/mame.py:113 msgid "Quickload" msgstr "Quickload" -#: lutris/runners/mame.py:108 +#: lutris/runners/mame.py:114 msgid "Memory Card" msgstr "Карта памяти" -#: lutris/runners/mame.py:109 +#: lutris/runners/mame.py:115 msgid "Cylinder" msgstr "Цилиндр" -#: lutris/runners/mame.py:110 +#: lutris/runners/mame.py:116 msgid "Punch Tape 1" msgstr "Перфолента 1" -#: lutris/runners/mame.py:111 +#: lutris/runners/mame.py:117 msgid "Punch Tape 2" msgstr "Перфолента 2" -#: lutris/runners/mame.py:112 +#: lutris/runners/mame.py:118 msgid "Print Out" msgstr "Вывод" -#: lutris/runners/mame.py:124 +#: lutris/runners/mame.py:130 msgid "Autoboot command" msgstr "Команда автозагрузки" -#: lutris/runners/mame.py:125 +#: lutris/runners/mame.py:131 msgid "" "Autotype this command when the system has started, an enter keypress is " "automatically added." @@ -2333,15 +3033,15 @@ msgstr "" "Автоматически вводить эту команду при старте системы, ввод перевода строки " "добавляется автоматически." -#: lutris/runners/mame.py:131 +#: lutris/runners/mame.py:137 msgid "Delay before entering autoboot command" msgstr "Задержка перед вводом команды автозагрузки" -#: lutris/runners/mame.py:141 +#: lutris/runners/mame.py:147 msgid "ROM/BIOS path" msgstr "Путь к ROM/BIOS" -#: lutris/runners/mame.py:143 +#: lutris/runners/mame.py:149 msgid "" "Choose the folder containing ROMs and BIOS files.\n" "These files contain code from the original hardware necessary to the " @@ -2350,74 +3050,83 @@ msgstr "" "Выберите папку, содержащую файлы ROM и BIOS.\n" "Эти файлы содержат код оригинального оборудования, необходимый для эмуляции." -#: lutris/runners/mame.py:157 +#: lutris/runners/mame.py:163 +msgid "CRT effect ()" +msgstr "" + +#: lutris/runners/mame.py:164 +msgid "Applies a CRT effect to the screen.Requires OpenGL renderer." +msgstr "" + +#: lutris/runners/mame.py:171 msgid "Video backend" msgstr "Видео-бэкенд" -#: lutris/runners/mame.py:163 lutris/runners/residualvm.py:53 +#: lutris/runners/mame.py:177 lutris/runners/residualvm.py:50 #: lutris/runners/vice.py:82 msgid "Software" msgstr "Программный" -#: lutris/runners/mame.py:170 +#: lutris/runners/mame.py:184 msgid "Wait for VSync" msgstr "Ждать вертикальную синхронизацию" -#: lutris/runners/mame.py:172 +#: lutris/runners/mame.py:186 +#, fuzzy msgid "" -"Enable waiting for the start of VBLANK before flipping screens; " +"Enable waiting for the start of vblank before flipping screens; " "reduces tearing effects." msgstr "" "Включить ожидание начала VBLANK перед перелистыванием экранных буферов; " "уменьшает эффект разрыва экрана." -#: lutris/runners/mame.py:180 +#: lutris/runners/mame.py:194 msgid "Menu mode key" msgstr "Клавиша режима меню" -#: lutris/runners/mame.py:182 +#: lutris/runners/mame.py:196 msgid "Scroll Lock" msgstr "Scroll Lock" -#: lutris/runners/mame.py:183 +#: lutris/runners/mame.py:197 msgid "Num Lock" msgstr "Num Lock" -#: lutris/runners/mame.py:184 +#: lutris/runners/mame.py:198 msgid "Caps Lock" msgstr "Caps Lock" -#: lutris/runners/mame.py:185 +#: lutris/runners/mame.py:199 msgid "Menu" msgstr "Меню" # Заменить Control на Ctrl? -#: lutris/runners/mame.py:186 +#: lutris/runners/mame.py:200 msgid "Right Control" msgstr "Правый Control" # Заменить Control на Ctrl? -#: lutris/runners/mame.py:187 +#: lutris/runners/mame.py:201 msgid "Left Control" msgstr "Левый Control" -#: lutris/runners/mame.py:188 +#: lutris/runners/mame.py:202 msgid "Right Alt" msgstr "Правый Alt" -#: lutris/runners/mame.py:189 +#: lutris/runners/mame.py:203 msgid "Left Alt" msgstr "Левый Alt" -#: lutris/runners/mame.py:190 +#: lutris/runners/mame.py:204 msgid "Right Super" msgstr "Правая клавиша Super" -#: lutris/runners/mame.py:191 +#: lutris/runners/mame.py:205 msgid "Left Super" msgstr "Левая клавиша Super" -#: lutris/runners/mame.py:195 +#: lutris/runners/mame.py:209 msgid "" "Key to switch between Full Keyboard Mode and Partial Keyboard Mode (default: " "Scroll Lock)" @@ -2425,11 +3134,11 @@ msgstr "" "Клавиша для переключения между полным и частичным режимом клавиатуры (по " "умолчанию: Scroll Lock)" -#: lutris/runners/mame.py:209 lutris/runners/mame.py:249 +#: lutris/runners/mame.py:223 lutris/runners/mame.py:265 msgid "Arcade" msgstr "Аркада" -#: lutris/runners/mame.py:209 lutris/runners/mame.py:248 +#: lutris/runners/mame.py:223 lutris/runners/mame.py:264 msgid "Nintendo Game & Watch" msgstr "Nintendo Game & Watch" @@ -2438,7 +3147,8 @@ msgid "Mednafen" msgstr "Mednafen" #: lutris/runners/mednafen.py:17 -msgid "Multi-system emulator supporting NES, GB(A), PC Engine and many more." +#, fuzzy +msgid "Multi-system emulator: NES, PC Engine, PSX…" msgstr "" "Многосистемный эмулятор, поддерживающий NES, GB(A) и PC Engine и многие " "другие" @@ -2579,12 +3289,6 @@ msgstr "Тип машины" msgid "Aspect ratio" msgstr "Соотношение сторон" -#: lutris/runners/mednafen.py:85 lutris/runners/wine.py:397 -#: lutris/runners/wine.py:416 lutris/runners/wine.py:496 -#: lutris/sysoptions.py:234 -msgid "Disabled" -msgstr "Отключено" - #: lutris/runners/mednafen.py:86 msgid "Stretched" msgstr "Растянуть" @@ -2634,8 +3338,8 @@ msgid "Nintendo 64" msgstr "Nintendo 64" #: lutris/runners/mupen64plus.py:21 lutris/runners/o2em.py:47 -#: lutris/runners/openmsx.py:18 lutris/runners/snes9x.py:28 -#: lutris/runners/yuzu.py:24 +#: lutris/runners/openmsx.py:18 lutris/runners/ryujinx.py:26 +#: lutris/runners/snes9x.py:28 lutris/runners/yuzu.py:24 msgid "The game data, commonly called a ROM image." msgstr "Игровые данные обычно называемые образом ПЗУ (ROM)." @@ -2648,7 +3352,8 @@ msgid "O2EM" msgstr "O2EM" #: lutris/runners/o2em.py:12 -msgid "Magnavox Osyssey² Emulator" +#, fuzzy +msgid "Magnavox Odyssey² Emulator" msgstr "Эмулятор Magnavox Osyssey²" #: lutris/runners/o2em.py:14 lutris/runners/o2em.py:30 @@ -2667,7 +3372,7 @@ msgstr "Phillips Videopac+" msgid "Brandt Jopac" msgstr "Brandt Jopac" -#: lutris/runners/o2em.py:36 lutris/runners/wine.py:355 +#: lutris/runners/o2em.py:36 lutris/runners/wine.py:397 msgid "Disable" msgstr "Отключить" @@ -2720,27 +3425,27 @@ msgstr "" "Поддерживаемые форматы: файлы SMS и GG. Образы сжатые ZIP также " "поддерживаются." -#: lutris/runners/pcsx2.py:10 +#: lutris/runners/pcsx2.py:8 msgid "PCSX2" msgstr "PCSX2" -#: lutris/runners/pcsx2.py:11 +#: lutris/runners/pcsx2.py:9 msgid "PlayStation 2 emulator" msgstr "Эмулятор PlayStation 2" -#: lutris/runners/pcsx2.py:12 +#: lutris/runners/pcsx2.py:10 msgid "Sony PlayStation 2" msgstr "Sony PlayStation 2" -#: lutris/runners/pcsx2.py:34 +#: lutris/runners/pcsx2.py:32 msgid "Fullboot" msgstr "Полная загрузка" -#: lutris/runners/pcsx2.py:46 +#: lutris/runners/pcsx2.py:44 msgid "Custom config file" msgstr "Пользовательский файл конфигурации" -#: lutris/runners/pcsx2.py:52 +#: lutris/runners/pcsx2.py:50 msgid "Custom config path" msgstr "Пользовательский путь к конфигурации" @@ -2970,35 +3675,33 @@ msgstr "" msgid "ResidualVM" msgstr "ResidualVM" -#: lutris/runners/residualvm.py:17 -msgid "" -"Runs various 3D point-and-click adventure games, like Grim Fandango and " -"Escape from Monkey Island." -msgstr "" -"Запускает различные трехмерные приключенческие игры в жанре point-and-click, " -"такие как Grim Fandango и Escape from Monkey Island." +#. TODO +#: lutris/runners/residualvm.py:16 +#, fuzzy +msgid "3D point-and-click adventure games engine" +msgstr "Запускает различные приключенческие 2D-игры в жанре point-and-click." -#: lutris/runners/residualvm.py:25 lutris/runners/scummvm.py:23 +#: lutris/runners/residualvm.py:22 lutris/runners/scummvm.py:21 msgid "Game identifier" msgstr "Идентификатор игры" -#: lutris/runners/residualvm.py:30 lutris/runners/scummvm.py:28 +#: lutris/runners/residualvm.py:27 lutris/runners/scummvm.py:26 msgid "Game files location" msgstr "Расположение файлов игры" -#: lutris/runners/residualvm.py:34 lutris/runners/scummvm.py:32 +#: lutris/runners/residualvm.py:31 msgid "Enable subtitles (if the game has voice)" msgstr "Включить субтитры (если в игре есть голос)" -#: lutris/runners/residualvm.py:48 +#: lutris/runners/residualvm.py:45 msgid "Renderer" msgstr "Рендерер" -#: lutris/runners/residualvm.py:52 +#: lutris/runners/residualvm.py:49 msgid "OpenGL shaders" msgstr "Шейдеры OpenGL" -#: lutris/runners/residualvm.py:59 +#: lutris/runners/residualvm.py:56 msgid "Display FPS information" msgstr "Отображать информацию о FPS" @@ -3018,11 +3721,11 @@ msgstr "Sony PlayStation 3" msgid "Path to EBOOT.BIN" msgstr "Путь к EBOOT.BIN" -#: lutris/runners/runner.py:145 +#: lutris/runners/runner.py:148 msgid "Custom executable for the runner" msgstr "Пользовательский исполняемый файл раннера" -#: lutris/runners/runner.py:291 +#: lutris/runners/runner.py:293 msgid "" "The required runner is not installed.\n" "Do you wish to install it now?" @@ -3030,23 +3733,62 @@ msgstr "" "Требуемый раннер не установлен.\n" "Вы хотите его установить?" -#: lutris/runners/runner.py:293 +#: lutris/runners/runner.py:295 msgid "Required runner unavailable" msgstr "Требуемый раннер недоступен" -#: lutris/runners/scummvm.py:14 -msgid "Runs various 2D point-and-click adventure games." +#: lutris/runners/ryujinx.py:14 +msgid "Ryujinx" +msgstr "" + +#: lutris/runners/ryujinx.py:15 lutris/runners/yuzu.py:15 +msgid "Nintendo Switch" +msgstr "Nintendo Switch" + +#: lutris/runners/ryujinx.py:16 lutris/runners/yuzu.py:16 +msgid "Nintendo Switch emulator" +msgstr "Эмулятор Nintendo Switch" + +#: lutris/runners/ryujinx.py:25 +#, fuzzy +msgid "NSP file" +msgstr "Файл ISO" + +#: lutris/runners/ryujinx.py:32 lutris/runners/yuzu.py:30 +#, fuzzy +msgid "Encryption keys" +msgstr "Ключи шифрования" + +#: lutris/runners/ryujinx.py:34 lutris/runners/yuzu.py:32 +msgid "File containing the encryption keys." +msgstr "Файл с ключами шифрования." + +#: lutris/runners/ryujinx.py:37 lutris/runners/yuzu.py:35 +msgid "Title keys" +msgstr "Заголовочные ключи" + +#: lutris/runners/ryujinx.py:39 lutris/runners/yuzu.py:37 +msgid "File containing the title keys." +msgstr "Файл содержащий титульные ключи." + +#: lutris/runners/scummvm.py:12 +#, fuzzy +msgid "Engine for point-and-click games." msgstr "Запускает различные приключенческие 2D-игры в жанре point-and-click." -#: lutris/runners/scummvm.py:15 lutris/services/scummvm.py:10 +#: lutris/runners/scummvm.py:13 lutris/services/scummvm.py:10 msgid "ScummVM" msgstr "ScummVM" -#: lutris/runners/scummvm.py:54 +#: lutris/runners/scummvm.py:82 +msgid "Enable subtitles" +msgstr "" + +#: lutris/runners/scummvm.py:89 msgid "Aspect ratio correction" msgstr "Коррекция соотношения сторон" -#: lutris/runners/scummvm.py:60 +#: lutris/runners/scummvm.py:93 msgid "" "Most games supported by ScummVM were made for VGA display modes using " "rectangular pixels. Activating this option for these games will preserve the " @@ -3057,14 +3799,226 @@ msgstr "" "опции для таких игр сохранит соотношение сторон 4:3, для которого они были " "созданы." -#: lutris/runners/scummvm.py:95 +#: lutris/runners/scummvm.py:140 +#, fuzzy +msgid "Render mode" +msgstr "Рендерер" + +#: lutris/runners/scummvm.py:157 +#, fuzzy +msgid "Changes how the game is rendered." +msgstr "Запускать игру в полноэкранном режиме." + +#: lutris/runners/scummvm.py:161 +msgid "Filtering" +msgstr "" + +#: lutris/runners/scummvm.py:163 +msgid "" +"Uses bilinear interpolation instead of nearest neighbor resampling for the " +"aspect ratio correction and stretch mode." +msgstr "" + +#: lutris/runners/scummvm.py:170 msgid "Data directory" msgstr "Каталог с данными" -#: lutris/runners/scummvm.py:97 +#: lutris/runners/scummvm.py:172 msgid "Defaults to share/scummvm if unspecified." msgstr "По умолчанию используется share/scummvm, если не указано иное." +#: lutris/runners/scummvm.py:179 +msgid "" +"Specifes platform of game. Allowed values: 2gs, 3do, acorn, amiga, atari, " +"c64, fmtowns, nes, mac, pc pc98, pce, segacd, wii, windows" +msgstr "" + +#: lutris/runners/scummvm.py:187 +msgid "Enables joystick input (default: 0 = first joystick)" +msgstr "" + +#: lutris/runners/scummvm.py:193 +#, fuzzy +msgid "Language" +msgstr "Язык в системе" + +#: lutris/runners/scummvm.py:194 +msgid "" +"Selects language (en, de, fr, it, pt, es, jp, zh, kr, se, gb, hb, ru, cz)" +msgstr "" + +#: lutris/runners/scummvm.py:200 +msgid "Engine speed" +msgstr "" + +#: lutris/runners/scummvm.py:201 +msgid "" +"Sets frames per second limit (0 - 100) for Grim Fandango or Escape from " +"Monkey Island (default: 60)." +msgstr "" + +#: lutris/runners/scummvm.py:208 +msgid "Talk speed" +msgstr "" + +#: lutris/runners/scummvm.py:209 +msgid "Sets talk speed for games (default: 60)" +msgstr "" + +#: lutris/runners/scummvm.py:215 +msgid "Music tempo" +msgstr "" + +#: lutris/runners/scummvm.py:216 +msgid "Sets music tempo (in percent, 50-200) for SCUMM games (default: 100)" +msgstr "" + +#: lutris/runners/scummvm.py:222 +msgid "Digital iMuse tempo" +msgstr "" + +#: lutris/runners/scummvm.py:223 +msgid "Sets internal Digital iMuse tempo (10 - 100) per second (default: 10)" +msgstr "" + +#: lutris/runners/scummvm.py:228 +#, fuzzy +msgid "Music driver" +msgstr "Аудио драйвер" + +#: lutris/runners/scummvm.py:244 +msgid "Specifies the device ScummVM uses to output audio." +msgstr "" + +#: lutris/runners/scummvm.py:249 +msgid "Output rate" +msgstr "" + +#: lutris/runners/scummvm.py:256 +msgid "Selects output sample rate in Hz." +msgstr "" + +#: lutris/runners/scummvm.py:261 +#, fuzzy +msgid "OPL driver" +msgstr "Звуковой драйвер" + +#: lutris/runners/scummvm.py:273 +msgid "" +"Chooses which emulator is used by ScummVM when the AdLib emulator is chosen " +"as the Preferred device." +msgstr "" + +#: lutris/runners/scummvm.py:280 +msgid "Music volume" +msgstr "" + +#: lutris/runners/scummvm.py:281 +msgid "Sets the music volume, 0-255 (default: 192)" +msgstr "" + +#: lutris/runners/scummvm.py:287 +msgid "SFX volume" +msgstr "" + +#: lutris/runners/scummvm.py:288 +msgid "Sets the sfx volume, 0-255 (default: 192)" +msgstr "" + +#: lutris/runners/scummvm.py:294 +msgid "Speech volume" +msgstr "" + +#: lutris/runners/scummvm.py:295 +msgid "Sets the speech volume, 0-255 (default: 192)" +msgstr "" + +#: lutris/runners/scummvm.py:301 +msgid "MIDI gain" +msgstr "" + +#: lutris/runners/scummvm.py:302 +msgid "Sets the gain for MIDI playback. 0-1000 (default: 100)" +msgstr "" + +#: lutris/runners/scummvm.py:308 +msgid "Soundfont" +msgstr "" + +#: lutris/runners/scummvm.py:309 +msgid "Specifies the path to a soundfont file." +msgstr "" + +#: lutris/runners/scummvm.py:314 +msgid "Mixed AdLib/MIDI mode" +msgstr "" + +#: lutris/runners/scummvm.py:317 +msgid "Combines MIDI music with AdLib sound effects." +msgstr "" + +#: lutris/runners/scummvm.py:322 +msgid "True Roland MT-32" +msgstr "" + +#: lutris/runners/scummvm.py:325 +msgid "" +"Tells ScummVM that the MIDI device is an actual Roland MT-32, LAPC-I, CM-64, " +"CM-32L, CM-500 or other MT-32 device." +msgstr "" + +#: lutris/runners/scummvm.py:331 +#, fuzzy +msgid "Enable Roland GS" +msgstr "Включить (Vulkan)" + +#: lutris/runners/scummvm.py:334 +msgid "" +"Tells ScummVM that the MIDI device is a GS device that has an MT-32 map, " +"such as an SC-55, SC-88 or SC-8820." +msgstr "" + +#: lutris/runners/scummvm.py:341 +msgid "Use alternate intro" +msgstr "" + +#: lutris/runners/scummvm.py:342 +msgid "Uses alternative intro for CD versions" +msgstr "" + +#: lutris/runners/scummvm.py:348 +msgid "Copy protection" +msgstr "" + +#: lutris/runners/scummvm.py:349 +msgid "Enables copy protection" +msgstr "" + +#: lutris/runners/scummvm.py:355 +#, fuzzy +msgid "Demo mode" +msgstr "Модель Amiga" + +#: lutris/runners/scummvm.py:356 +msgid "Starts demo mode of Maniac Mansion or The 7th Guest" +msgstr "" + +#: lutris/runners/scummvm.py:362 +msgid "Debug level" +msgstr "" + +#: lutris/runners/scummvm.py:363 +msgid "Sets debug verbosity level" +msgstr "" + +#: lutris/runners/scummvm.py:369 +msgid "Debug flags" +msgstr "" + +#: lutris/runners/scummvm.py:370 +msgid "Enables engine specific debug flags" +msgstr "" + #: lutris/runners/snes9x.py:17 msgid "Super Nintendo emulator" msgstr "Эмулятор Super Nintendo" @@ -3092,15 +4046,15 @@ msgstr "" msgid "Sound driver" msgstr "Звуковой драйвер" -#: lutris/runners/steam.py:43 +#: lutris/runners/steam.py:28 msgid "Runs Steam for Linux games" msgstr "Запускает Steam для игр Linux" -#: lutris/runners/steam.py:50 lutris/runners/winesteam.py:52 +#: lutris/runners/steam.py:35 msgid "Application ID" msgstr "ID приложения" -#: lutris/runners/steam.py:53 lutris/runners/winesteam.py:54 +#: lutris/runners/steam.py:38 msgid "" "The application ID can be retrieved from the game's page at steampowered." "com. Example: 235320 is the app ID for Original War in: \n" @@ -3111,7 +4065,7 @@ msgstr "" "в: \n" "http://store.steampowered.com/app/235320/" -#: lutris/runners/steam.py:64 +#: lutris/runners/steam.py:49 msgid "" "Command line arguments used when launching the game.\n" "Ignored when Steam Big Picture mode is enabled." @@ -3119,42 +4073,30 @@ msgstr "" "Аргументы командной строки, используемые при запуске игры.\n" "Игнорируется, когда включен режим Steam Big Picture." -#: lutris/runners/steam.py:70 lutris/runners/winesteam.py:111 +#: lutris/runners/steam.py:55 msgid "DRM free mode (Do not launch Steam)" msgstr "Режим без DRM (не запускать Steam)" -#: lutris/runners/steam.py:75 lutris/runners/winesteam.py:115 +#: lutris/runners/steam.py:60 msgid "" "Run the game directly without Steam, requires the game binary path to be set" msgstr "" "Запустить игру напрямую без Steam, требуется указать путь к бинарному файлу " "игры " -#: lutris/runners/steam.py:81 lutris/runners/winesteam.py:120 +#: lutris/runners/steam.py:66 msgid "Game binary path" msgstr "Путь к бинарному файлу игры" -#: lutris/runners/steam.py:83 lutris/runners/winesteam.py:122 +#: lutris/runners/steam.py:68 msgid "Path to the game executable (Required by DRM free mode)" msgstr "Путь к исполняемому файлу игры (требуется для режима без DRM)" -#: lutris/runners/steam.py:89 lutris/runners/winesteam.py:147 -msgid "Stop Steam after game exits" -msgstr "Закрывать Steam после выхода из игры" - -#: lutris/runners/steam.py:93 -msgid "" -"Shut down Steam after the game has quit\n" -"(only if Steam was started by Lutris)" -msgstr "" -"Закрывать Steam после выхода из игры\n" -"(только если Steam был запущен Lutris'ом)" - -#: lutris/runners/steam.py:99 +#: lutris/runners/steam.py:74 msgid "Start Steam in Big Picture mode" msgstr "Запускать Steam в режиме Big Picture" -#: lutris/runners/steam.py:103 +#: lutris/runners/steam.py:78 msgid "" "Launches Steam in Big Picture mode.\n" "Only works if Steam is not running or already running in Big Picture mode.\n" @@ -3165,23 +4107,11 @@ msgstr "" "режиме Big Picture.\n" "Полезно при игре с контроллером Steam." -#: lutris/runners/steam.py:111 -msgid "Disable Steam Runtime (use native libraries)" -msgstr "Отключить Steam Runtime (использовать системные библиотеки)" - -#: lutris/runners/steam.py:115 -msgid "" -"Launches Steam with STEAM_RUNTIME=0. Make sure you disabled Lutris Runtime " -"and have the required libraries installed." -msgstr "" -"Запускает Steam с переменной окружения STEAM_RUNTIME=0. Убедитесь, что вы " -"отключили Lutris Runtime и у вас установлены необходимые библиотеки." - -#: lutris/runners/steam.py:122 +#: lutris/runners/steam.py:86 msgid "Start Steam with LSI" msgstr "Запускать Steam с LSI" -#: lutris/runners/steam.py:126 +#: lutris/runners/steam.py:90 msgid "" "Launches steam with LSI patches enabled. Make sure Lutris Runtime is " "disabled and you have LSI installed. https://github.com/solus-project/linux-" @@ -3191,12 +4121,12 @@ msgstr "" "отключен и у вас установлен LSI. https://github.com/solus-project/linux-" "steam-integration" -#: lutris/runners/steam.py:137 lutris/runners/winesteam.py:157 +#: lutris/runners/steam.py:101 msgid "Extra command line arguments used when launching Steam" msgstr "" "Дополнительные аргументы командной строки, используемые при запуске Steam" -#: lutris/runners/steam.py:144 +#: lutris/runners/steam.py:108 msgid "Remove game data (through Steam)" msgstr "Удалить данные игры (через Steam)" @@ -3451,7 +4381,7 @@ msgstr "Запускает игры для Windows" msgid "Wine" msgstr "Wine" -#: lutris/runners/wine.py:40 lutris/runners/winesteam.py:41 +#: lutris/runners/wine.py:40 msgid "Windows" msgstr "Windows" @@ -3467,9 +4397,10 @@ msgstr "Аргументы командной строки Windows, исполь msgid "Wine prefix" msgstr "Префикс Wine" -#: lutris/runners/wine.py:73 lutris/runners/winesteam.py:74 +#: lutris/runners/wine.py:73 +#, fuzzy msgid "" -"The prefix (also named \"bottle\") used by Wine.\n" +"The prefix used by Wine.\n" "It's a directory containing a set of files and folders making up a confined " "Windows environment." msgstr "" @@ -3477,17 +4408,15 @@ msgstr "" "Это каталог, содержащий набор файлов и папок, составляющих ограниченную " "среду Windows." -#: lutris/runners/wine.py:81 lutris/runners/winesteam.py:85 +#: lutris/runners/wine.py:81 msgid "Prefix architecture" msgstr "Архитектура префикса" -#: lutris/runners/wine.py:82 lutris/runners/wine.py:318 -#: lutris/runners/winesteam.py:86 +#: lutris/runners/wine.py:82 msgid "32-bit" msgstr "32-битный" -#: lutris/runners/wine.py:82 lutris/runners/wine.py:319 -#: lutris/runners/winesteam.py:86 +#: lutris/runners/wine.py:82 msgid "64-bit" msgstr "64-битный" @@ -3495,35 +4424,31 @@ msgstr "64-битный" msgid "The architecture of the Windows environment" msgstr "Архитектура среды Windows" -#: lutris/runners/wine.py:116 +#: lutris/runners/wine.py:112 msgid "Custom (select executable below)" msgstr "Пользовательская (выберите исполняемый файл ниже)" -#: lutris/runners/wine.py:118 +#: lutris/runners/wine.py:114 msgid "WineHQ Devel ({})" msgstr "WineHQ Devel ({})" -#: lutris/runners/wine.py:119 +#: lutris/runners/wine.py:115 msgid "WineHQ Staging ({})" msgstr "WineHQ Staging ({})" -#: lutris/runners/wine.py:120 +#: lutris/runners/wine.py:116 msgid "Wine Development ({})" msgstr "Wine Development ({})" -#: lutris/runners/wine.py:121 +#: lutris/runners/wine.py:117 msgid "System ({})" msgstr "Системная ({})" -#: lutris/runners/wine.py:135 -msgid "Manual" -msgstr "Ручной" - -#: lutris/runners/wine.py:185 +#: lutris/runners/wine.py:169 msgid "Wine version" msgstr "Версия Wine" -#: lutris/runners/wine.py:190 +#: lutris/runners/wine.py:174 msgid "" "The version of Wine used to launch the game.\n" "Using the last version is generally recommended, but some games work better " @@ -3533,11 +4458,11 @@ msgstr "" "Обычно рекомендуется использовать последнюю версию, но некоторые игры лучше " "работают на старых версиях." -#: lutris/runners/wine.py:197 +#: lutris/runners/wine.py:181 msgid "Custom Wine executable" msgstr "Пользовательский исполняемый файл Wine" -#: lutris/runners/wine.py:200 +#: lutris/runners/wine.py:184 msgid "" "The Wine executable to be used if you have selected \"Custom\" as the Wine " "version." @@ -3545,38 +4470,105 @@ msgstr "" "Исполняемый файл Wine, который будет использоваться, если вы выбрали " "«Пользовательский» в качестве версии Wine." -#: lutris/runners/wine.py:205 +#: lutris/runners/wine.py:189 msgid "Use system winetricks" msgstr "Использовать системную версию winetricks" -#: lutris/runners/wine.py:209 +#: lutris/runners/wine.py:193 msgid "Switch on to use /usr/bin/winetricks for winetricks." msgstr "" "Включите, чтобы использовать /usr/bin/winetricks в качестве winetricks." -#: lutris/runners/wine.py:213 -msgid "Enable DXVK/VKD3D" +#: lutris/runners/wine.py:197 +#, fuzzy +msgid "Enable DXVK" msgstr "Включить DXVK/VKD3D" -#: lutris/runners/wine.py:220 +#: lutris/runners/wine.py:204 +#, fuzzy msgid "" -"Use DXVK and VKD3D to enable support for Direct3D 12 and increase " -"compatibility and performance in Direct3D 11, 10 and 9 applications by " -"translating their calls to Vulkan." +"Use DXVK to increase compatibility and performance in Direct3D 11, 10 and 9 " +"applications by translating their calls to Vulkan." msgstr "" "Используйте DXVK и VKD3D для включения поддержки Direct3D 12, это повысит " "совместимость и производительность приложений на Direct3D 11, 10 и 9 за счет " "преобразования их вызовов в вызовы Vulkan." -#: lutris/runners/wine.py:226 +#: lutris/runners/wine.py:210 msgid "DXVK version" msgstr "Версия DXVK" -#: lutris/runners/wine.py:242 +#: lutris/runners/wine.py:219 +#, fuzzy +msgid "Enable VKD3D" +msgstr "Включить DXVK/VKD3D" + +#: lutris/runners/wine.py:226 +#, fuzzy +msgid "" +"Use VKD3D to enable support for Direct3D 12 applications by translating " +"their calls to Vulkan." +msgstr "" +"Используйте DXVK и VKD3D для включения поддержки Direct3D 12, это повысит " +"совместимость и производительность приложений на Direct3D 11, 10 и 9 за счет " +"преобразования их вызовов в вызовы Vulkan." + +#: lutris/runners/wine.py:231 +#, fuzzy +msgid "VKD3D version" +msgstr "Версия DXVK" + +#: lutris/runners/wine.py:239 +#, fuzzy +msgid "Enable D3D Extras" +msgstr "Включить Esync" + +#: lutris/runners/wine.py:244 +msgid "" +"Replace Wine's D3DX and D3DCOMPILER libraries with alternative ones. Needed " +"for proper functionality of DXVK with some games." +msgstr "" + +#: lutris/runners/wine.py:250 +#, fuzzy +msgid "D3D Extras version" +msgstr "Версия DXVK" + +#: lutris/runners/wine.py:258 +#, fuzzy +msgid "Enable DXVK-NVAPI / DLSS" +msgstr "Включить DXVK/VKD3D" + +#: lutris/runners/wine.py:263 +msgid "Enable emulation of Nvidia's NVAPI and add DLSS support, if available." +msgstr "" + +#: lutris/runners/wine.py:268 +#, fuzzy +msgid "DXVK NVAPI version" +msgstr "Версия DXVK" + +#: lutris/runners/wine.py:276 +#, fuzzy +msgid "Enable dgvoodoo2" +msgstr "Включено" + +#: lutris/runners/wine.py:281 +msgid "" +"dgvoodoo2 is an alternative translation layer for rendering old games that " +"utilize D3D1-7 and Glide APIs. As it translates to D3D11, it's recommended " +"to use it in combination with DXVK. Only 32-bit apps are supported." +msgstr "" + +#: lutris/runners/wine.py:288 +msgid "dgvoodoo2 version" +msgstr "" + +#: lutris/runners/wine.py:296 msgid "Enable Esync" msgstr "Включить Esync" -#: lutris/runners/wine.py:248 +#: lutris/runners/wine.py:303 msgid "" "Enable eventfd-based synchronization (esync). This will increase performance " "in applications that take advantage of multi-core processors." @@ -3584,83 +4576,60 @@ msgstr "" "Включить синхронизацию основанную на eventfd (esync). Это повысит " "производительность приложений, использующих многоядерные процессоры." -#: lutris/runners/wine.py:255 +#: lutris/runners/wine.py:310 msgid "Enable Fsync" msgstr "Включить Fsync" -#: lutris/runners/wine.py:261 +#: lutris/runners/wine.py:317 +#, fuzzy msgid "" "Enable futex-based synchronization (fsync). This will increase performance " -"in applications that take advantage of multi-core processors. Requires a " -"custom kernel with the fsync patchset." +"in applications that take advantage of multi-core processors. Requires " +"kernel 5.16 or above." msgstr "" "Включить синхронизацию на основе фьютекса (fsync). Это повысит " "производительность приложений, использующих многоядерные процессоры. " "Требуется кастомное ядро с набором патчей fsync." -#: lutris/runners/wine.py:269 -msgid "Enable Gallium Nine" -msgstr "Включить Gallium Nine" +#: lutris/runners/wine.py:325 +msgid "Enable AMD FidelityFX Super Resolution (FSR)" +msgstr "" -#: lutris/runners/wine.py:275 +#: lutris/runners/wine.py:329 msgid "" -"Gallium Nine allows to run Direct3D 9 applications faster.\n" -"Make sure your active graphics card supports Gallium Nine state tracker " -"before enabling this option.\n" -"Note: This feature is not supported by proprietary Nvidia driver." +"Use FSR to upscale the game window to native resolution.\n" +"Requires Lutris Wine FShack >= 6.13 and setting the game to a lower " +"resolution.\n" +"Does not work with games running in borderless window mode or that perform " +"their own upscaling." msgstr "" -"Gallium Nine позволяет приложениям на Direct3D 9 работать быстрее.\n" -"Перед включением этой опции убедитесь, что ваша текущая видеокарта " -"поддерживает отслеживание состояния Gallium Nine.\n" -"Примечание: Эта функция не поддерживается проприетарным драйвером Nvidia." - -#: lutris/runners/wine.py:283 -msgid "Path to the game's executable, for x360ce support" -msgstr "Путь к исполняемому файлу игры для работы x360ce" - -#: lutris/runners/wine.py:285 -msgid "Locate the path for the game's executable for x360 support" -msgstr "Укажите путь к исполняемому файлу игры для работы x360" - -#: lutris/runners/wine.py:290 -msgid "x360ce DInput 8 mode" -msgstr "Режим DInput 8 для x360ce" -#: lutris/runners/wine.py:293 -msgid "Configure x360ce with dinput8.dll, required for some games" -msgstr "Настроить x360ce с помощью dinput8.dll, необходимо для некоторых игр" - -#: lutris/runners/wine.py:298 -msgid "x360ce XInput 9.1.0 mode" -msgstr "Режим XInput 9.1.0 для x360ce" - -#: lutris/runners/wine.py:301 -msgid "Configure x360ce with xinput9_1_0.dll, required for some newer games" +#: lutris/runners/wine.py:336 +msgid "Enable BattlEye Anti-Cheat" msgstr "" -"Настроить x360ce с помощью xinput9_1_0.dll, необходимо для некоторых новых " -"игр" -#: lutris/runners/wine.py:306 -msgid "Use Dumb XInput Emulator (experimental)" -msgstr "Использовать глупый эмулятор XInput (экспериментальный)" - -#: lutris/runners/wine.py:309 -msgid "Use the dlls from kozec/dumbxinputemu" -msgstr "Используйте библиотеки от kozec/dumbxinputemu" +#: lutris/runners/wine.py:340 +msgid "" +"Enable support for BattlEye Anti-Cheat in supported games\n" +"Requires Lutris Wine 6.21-2 and newer or any other compatible Wine build.\n" +msgstr "" -#: lutris/runners/wine.py:314 -msgid "XInput architecture" -msgstr "Архитектура XInput" +#: lutris/runners/wine.py:346 +#, fuzzy +msgid "Enable Easy Anti-Cheat" +msgstr "Включить Esync" -#: lutris/runners/wine.py:317 -msgid "Same as Wine prefix" -msgstr "Такая же, что и префикс Wine" +#: lutris/runners/wine.py:350 +msgid "" +"Enable support for Easy Anti-Cheat in supported games\n" +"Requires Lutris Wine 7.2 and newer or any other compatible Wine build.\n" +msgstr "" -#: lutris/runners/wine.py:328 +#: lutris/runners/wine.py:356 msgid "Windowed (virtual desktop)" msgstr "Оконный режим (виртуальный рабочий стол)" -#: lutris/runners/wine.py:334 +#: lutris/runners/wine.py:360 msgid "" "Run the whole Windows desktop in a window.\n" "Otherwise, run it fullscreen.\n" @@ -3670,126 +4639,66 @@ msgstr "" "В противном случае запускает его в полноэкранном режиме.\n" "Это соответствует параметру Virtual Desktop в Wine." -#: lutris/runners/wine.py:341 +#: lutris/runners/wine.py:367 msgid "Virtual desktop resolution" msgstr "Разрешение виртуального рабочего стола" -#: lutris/runners/wine.py:344 +#: lutris/runners/wine.py:370 msgid "The size of the virtual desktop in pixels." msgstr "Размер виртуального рабочего стола в пикселях." -#: lutris/runners/wine.py:350 -msgid "Mouse Warp Override" -msgstr "Переопределение захвата ввода мыши" - -#: lutris/runners/wine.py:354 -msgid "Enable" -msgstr "Включить" - -#: lutris/runners/wine.py:356 -msgid "Force" -msgstr "Принудительно" - -#: lutris/runners/wine.py:363 -msgid "" -"Override the default mouse pointer warping behavior\n" -"Enable: (Wine default) warp the pointer when the mouse is exclusively " -"acquired \n" -"Disable: never warp the mouse pointer \n" -"Force: always warp the pointer" -msgstr "" -"Переопределяет поведение захвата ввода мыши по умолчанию\n" -"Включить: (по умолчанию для Wine) захват ввода при монопольном " -"захвате мыши\n" -"Отключить: никогда не захватывать ввод с мыши\n" -"Принудительно: всегда захватывать ввод с мыши" - #: lutris/runners/wine.py:374 -msgid "Offscreen Rendering Mode" -msgstr "Режим закадрового рендеринга" - -#: lutris/runners/wine.py:383 -msgid "" -"Select the offscreen rendering implementation.\n" -"FBO: (Wine default) Use framebuffer objects for offscreen rendering \n" -"Backbuffer: Render offscreen render targets in the backbuffer." +msgid "Enable DPI Scaling" msgstr "" -"Выберите реализацию закадрового рендеринга.\n" -"FBO: (по умолчанию для Wine) использовать объекты фреймбуфера для " -"закадрового рендеринга \n" -"Backbuffer: рендеринг закадровых целей в бэк-буфер." - -#: lutris/runners/wine.py:394 -msgid "Strict Draw Ordering" -msgstr "Строгий порядок отрисовки" - -#: lutris/runners/wine.py:397 lutris/runners/wine.py:416 -#: lutris/runners/wine.py:497 -msgid "Enabled" -msgstr "Включено" -#: lutris/runners/wine.py:403 +#: lutris/runners/wine.py:378 msgid "" -"This option ensures any pending drawing operations are submitted to the " -"driver, but at a significant performance cost. This setting is deprecated " -"since Wine-2.6 and will likely be removed after Wine-3.0. Use \"csmt\" " -"instead." +"Enables the Windows application's DPI scaling.\n" +"Otherwise, the Screen Resolution option in 'Wine configuration' controls " +"this." msgstr "" -"Этот параметр гарантирует, что все ожидающие операции отрисовки передаются " -"драйверу, но со значительными потерями в производительности. Этот параметр " -"устарел с версии Wine-2.6 и, вероятно, будет удален после Wine-3.0. Вместо " -"этого используйте \"csmt\"." -#: lutris/runners/wine.py:413 -msgid "Use GLSL" -msgstr "Использовать GLSL" +#: lutris/runners/wine.py:384 +msgid "DPI" +msgstr "" -#: lutris/runners/wine.py:422 +#: lutris/runners/wine.py:387 msgid "" -"When set to \"disabled\", this disables the use of GLSL for shaders. In " -"general disabling GLSL is not recommended, only use this for debugging " -"purposes." +"The DPI to be used if 'Enable DPI Scaling' is turned on.\n" +"If blank or 'auto', Lutris will auto-detect this." msgstr "" -"Если установлено значение «Отключено», эта опция отключает использование " -"GLSL для шейдеров. В большинстве случаев отключение GLSL не рекомендуется, " -"используйте эту опцию только для устранения ошибок." -#: lutris/runners/wine.py:431 -msgid "Anti-aliasing Sample Count" -msgstr "Количество выборок сглаживания" +#: lutris/runners/wine.py:393 +msgid "Mouse Warp Override" +msgstr "Переопределение захвата ввода мыши" -#: lutris/runners/wine.py:447 -msgid "" -"Override swapchain sample count. It can be used to force enable " -"multisampling with applications that otherwise don't support it, like the " -"similar control panel setting available with some GPU drivers. This one " -"might work in more cases than the driver setting though. Not all " -"applications are compatible with all sample counts. " -msgstr "" -"Переопределяет количество выборок свопчейна. Эту опцию можно использовать " -"для принудительного включения мультисэмплинга в приложениях, которые его не " -"поддерживают. Эта опция работает также как аналогичные настройки в панелях " -"управления, доступных в некоторых драйверах графических карт. Однако этот " -"метод может работать в большем количестве случаев, нежели аналогичные опции " -"драйверов. Не все приложения совместимы со всеми возможными вариантами." +#: lutris/runners/wine.py:396 +msgid "Enable" +msgstr "Включить" -#: lutris/runners/wine.py:456 -msgid "Use XVidMode to switch resolutions" -msgstr "Используйте XVidMode для переключения разрешения" +#: lutris/runners/wine.py:398 +msgid "Force" +msgstr "Принудительно" -#: lutris/runners/wine.py:460 +#: lutris/runners/wine.py:403 msgid "" -"Set this to \"Y\" to allow Wine switch the resolution using XVidMode " -"extension." +"Override the default mouse pointer warping behavior\n" +"Enable: (Wine default) warp the pointer when the mouse is exclusively " +"acquired \n" +"Disable: never warp the mouse pointer \n" +"Force: always warp the pointer" msgstr "" -"Установите значение «Y», чтобы разрешить Wine переключать разрешение с " -"помощью расширения XVidMode." +"Переопределяет поведение захвата ввода мыши по умолчанию\n" +"Включить: (по умолчанию для Wine) захват ввода при монопольном " +"захвате мыши\n" +"Отключить: никогда не захватывать ввод с мыши\n" +"Принудительно: всегда захватывать ввод с мыши" -#: lutris/runners/wine.py:466 +#: lutris/runners/wine.py:412 msgid "Audio driver" msgstr "Аудио драйвер" -#: lutris/runners/wine.py:480 +#: lutris/runners/wine.py:423 msgid "" "Which audio backend to use.\n" "By default, Wine automatically picks the right one for your system." @@ -3797,44 +4706,44 @@ msgstr "" "Какой звуковой бэкенд использовать.\n" "По умолчанию Wine автоматически выбирает подходящий для вашей системы." -#: lutris/runners/wine.py:488 +#: lutris/runners/wine.py:431 msgid "DLL overrides" msgstr "Переопределения разделяемых библиотек (DLL)" -#: lutris/runners/wine.py:489 +#: lutris/runners/wine.py:432 msgid "Sets WINEDLLOVERRIDES when launching the game." msgstr "Устанавливает WINEDLLOVERRIDES при запуске игры." -#: lutris/runners/wine.py:493 +#: lutris/runners/wine.py:436 msgid "Output debugging info" msgstr "Вывод отладочной информации" -#: lutris/runners/wine.py:498 +#: lutris/runners/wine.py:440 +msgid "Enabled" +msgstr "Включено" + +#: lutris/runners/wine.py:441 msgid "Inherit from environment" msgstr "Наследоваться от окружения" -#: lutris/runners/wine.py:499 -msgid "Show FPS" -msgstr "Показывать FPS" - -#: lutris/runners/wine.py:500 +#: lutris/runners/wine.py:443 msgid "Full (CAUTION: Will cause MASSIVE slowdown)" msgstr "Полностью (ВНИМАНИЕ: вызывает ЗНАЧИТЕЛЬНОЕ замедление)" -#: lutris/runners/wine.py:503 +#: lutris/runners/wine.py:446 msgid "Output debugging information in the game log (might affect performance)" msgstr "" "Вывод отладочной информации в лог игры (может повлиять на производительность)" -#: lutris/runners/wine.py:508 +#: lutris/runners/wine.py:451 msgid "Show crash dialogs" msgstr "Показывать диалоговое окно в случае сбоя" -#: lutris/runners/wine.py:516 +#: lutris/runners/wine.py:459 msgid "Autoconfigure joypads" msgstr "Автоматически настраивать джойстики" -#: lutris/runners/wine.py:520 +#: lutris/runners/wine.py:463 msgid "" "Automatically disables one of Wine's detected joypad to avoid having 2 " "controllers detected" @@ -3842,11 +4751,11 @@ msgstr "" "Автоматически отключает один из обнаруженных Wine джойстиков, для избежания " "ситуации с обнаружением 2-х контроллеров" -#: lutris/runners/wine.py:529 +#: lutris/runners/wine.py:469 msgid "Create a sandbox for Wine folders" msgstr "Создать песочницу для каталогов Wine" -#: lutris/runners/wine.py:535 +#: lutris/runners/wine.py:473 msgid "" "Do not use $HOME for desktop integration folders.\n" "By default, it use the directories in the confined Windows environment." @@ -3854,179 +4763,76 @@ msgstr "" "Указывает не использовать $HOME для интеграции с папками рабочего стола.\n" "По умолчанию используются каталоги из изолированной среды Windows." -#: lutris/runners/wine.py:543 +#: lutris/runners/wine.py:481 msgid "Sandbox directory" msgstr "Каталог песочницы" -#: lutris/runners/wine.py:544 +#: lutris/runners/wine.py:482 msgid "Custom directory for desktop integration folders." msgstr "Пользовательский каталог для папок интеграции рабочего стола." -#: lutris/runners/wine.py:552 +#: lutris/runners/wine.py:490 msgid "Run EXE inside Wine prefix" msgstr "Запустить EXE внутри префикса Wine" -#: lutris/runners/wine.py:554 +#: lutris/runners/wine.py:492 msgid "Wine configuration" msgstr "Настройки Wine" -#: lutris/runners/wine.py:556 +#: lutris/runners/wine.py:494 msgid "Open Bash terminal" msgstr "Открыть терминал Bash" -#: lutris/runners/wine.py:557 +#: lutris/runners/wine.py:495 msgid "Open Wine console" msgstr "Открыть консоль Wine" -#: lutris/runners/wine.py:558 +#: lutris/runners/wine.py:496 msgid "Wine registry" msgstr "Реестр Wine" -#: lutris/runners/wine.py:559 -msgid "Kill all Wine processes" -msgstr "Убить все процессы Wine" - -#: lutris/runners/wine.py:560 +#: lutris/runners/wine.py:497 msgid "Winetricks" msgstr "Winetricks" -#: lutris/runners/wine.py:561 +#: lutris/runners/wine.py:498 msgid "Wine Control Panel" msgstr "Панель управления Wine" -#: lutris/runners/wine.py:719 +#: lutris/runners/wine.py:661 msgid "Select an EXE or MSI file" msgstr "Выберите EXE или MSI файл" -#: lutris/runners/winesteam.py:38 -msgid "Runs Steam for Windows games" -msgstr "Запускает Steam для игр Windows" - -#: lutris/runners/winesteam.py:40 -msgid "Wine Steam" -msgstr "Wine Steam" - -#: lutris/runners/winesteam.py:72 -msgid "Prefix" -msgstr "Префикс" - -#: lutris/runners/winesteam.py:90 -msgid "" -"The architecture of the Windows environment.\n" -"32-bit is recommended unless running 64-bit only games." -msgstr "" -"Архитектура среды Windows.\n" -"Рекомендуется 32-битная версия, только если не планируется запускать только " -"64-битные игры." - -#: lutris/runners/winesteam.py:103 -msgid "Do not launch game, only open Steam" -msgstr "Не запускать игру, только открыть Steam" - -#: lutris/runners/winesteam.py:105 -msgid "" -"Opens Steam with the current settings without running the game, useful if a " -"game has several launch options." -msgstr "" -"Открывает Steam с текущими настройками без запуска игры, полезно, если у " -"игры есть несколько вариантов запуска." - -#: lutris/runners/winesteam.py:128 -msgid "Remove game data (through Wine Steam)" -msgstr "Удалить данные игры (через Wine Steam)" - -#: lutris/runners/winesteam.py:137 -msgid "Custom Steam location" -msgstr "Пользовательское расположение Steam" - -#: lutris/runners/winesteam.py:139 -msgid "" -"Choose a folder containing Steam.exe\n" -"By default, Lutris will look for a Windows Steam installation into ~/.wine " -"or will install it in its own custom Wine prefix." -msgstr "" -"Выберите каталог, содержащий Steam.exe\n" -"По умолчанию Lutris будет искать установку Windows Steam в ~/.wine или " -"установит его в своем собственном префиксе Wine." - -#: lutris/runners/winesteam.py:150 -msgid "Shut down Steam after the game has quit." -msgstr "Закрывать Steam после выхода из игры." - -#: lutris/runners/winesteam.py:163 -msgid "Default Wine prefix (32-bit)" -msgstr "Префикс Wine по умолчанию (32-битный)" - -#: lutris/runners/winesteam.py:165 -msgid "Default prefix location for Steam (32-bit)" -msgstr "Расположение префикса по умолчанию для Steam (32-битный)" - -#: lutris/runners/winesteam.py:171 -msgid "Default Wine prefix (64-bit)" -msgstr "Префикс Wine по умолчанию (64-битный)" - -#: lutris/runners/winesteam.py:173 -msgid "Default prefix location for Steam (64-bit)" -msgstr "Расположение префикса по умолчанию для Steam (64-битный)" - -#: lutris/runners/winesteam.py:181 -#, python-format -msgid "Winesteam runner (%s)" -msgstr "Winesteam раннер (%s)" - #: lutris/runners/yuzu.py:14 msgid "Yuzu" msgstr "Yuzu" -#: lutris/runners/yuzu.py:15 -msgid "Nintendo Switch" -msgstr "Nintendo Switch" - -#: lutris/runners/yuzu.py:16 -msgid "Nintendo Switch emulator" -msgstr "Эмулятор Nintendo Switch" - -#: lutris/runners/yuzu.py:30 -msgid "Ecryption keys" -msgstr "Ключи шифрования" - -#: lutris/runners/yuzu.py:32 -msgid "File containing the encryption keys." -msgstr "Файл с ключами шифрования." - -#: lutris/runners/yuzu.py:35 -msgid "Title keys" -msgstr "Заголовочные ключи" - -#: lutris/runners/yuzu.py:37 -msgid "File containing the title keys." -msgstr "Файл содержащий титульные ключи." - -#: lutris/runners/zdoom.py:14 +#. http://zdoom.org/wiki/Command_line_parameters +#: lutris/runners/zdoom.py:13 msgid "ZDoom DOOM Game Engine" msgstr "Игровой движок ZDoom DOOM" -#: lutris/runners/zdoom.py:15 +#: lutris/runners/zdoom.py:14 msgid "ZDoom" msgstr "ZDoom" -#: lutris/runners/zdoom.py:22 +#: lutris/runners/zdoom.py:21 msgid "WAD file" msgstr "Файл WAD" -#: lutris/runners/zdoom.py:23 +#: lutris/runners/zdoom.py:22 msgid "The game data, commonly called a WAD file." msgstr "Игровые данные обычно называемые файлом WAD." -#: lutris/runners/zdoom.py:29 +#: lutris/runners/zdoom.py:28 msgid "Command line arguments used when launching the game." msgstr "Аргументы командной строки, используемые при запуске игры." -#: lutris/runners/zdoom.py:34 +#: lutris/runners/zdoom.py:33 msgid "PWAD files" msgstr "Файлы PWAD" -#: lutris/runners/zdoom.py:35 +#: lutris/runners/zdoom.py:34 msgid "" "Used to load one or more PWAD files which generally contain user-created " "levels." @@ -4034,61 +4840,57 @@ msgstr "" "Используется для загрузки одного или нескольких файлов PWAD, которые обычно " "содержат уровни, созданные пользователем." -#: lutris/runners/zdoom.py:41 +#: lutris/runners/zdoom.py:40 msgid "Warp to map" msgstr "Варп на карту" -#: lutris/runners/zdoom.py:42 +#: lutris/runners/zdoom.py:41 msgid "Starts the game on the given map." msgstr "Начинает игру на данной карте." #: lutris/runners/zdoom.py:47 -msgid "Save path" -msgstr "Путь сохранения" - -#: lutris/runners/zdoom.py:48 msgid "User-specified path where save files should be located." msgstr "" "Указанный пользователем путь, по которому должны находиться файлы сохранения." -#: lutris/runners/zdoom.py:54 +#: lutris/runners/zdoom.py:53 msgid "Pixel Doubling" msgstr "Удвоение пикселей" -#: lutris/runners/zdoom.py:60 +#: lutris/runners/zdoom.py:59 msgid "Pixel Quadrupling" msgstr "Учетверение пикселей" -#: lutris/runners/zdoom.py:66 +#: lutris/runners/zdoom.py:65 msgid "Disable Startup Screens" msgstr "Отключить загрузочные экраны" -#: lutris/runners/zdoom.py:72 +#: lutris/runners/zdoom.py:71 msgid "Skill" msgstr "Уровень навыка" -#: lutris/runners/zdoom.py:77 +#: lutris/runners/zdoom.py:76 msgid "I'm Too Young To Die (1)" msgstr "Я слишком молод, чтобы умереть (1)" -#: lutris/runners/zdoom.py:78 +#: lutris/runners/zdoom.py:77 msgid "Hey, Not Too Rough (2)" msgstr "Эй, не так грубо (2)" -#: lutris/runners/zdoom.py:79 +#: lutris/runners/zdoom.py:78 msgid "Hurt Me Plenty (3)" msgstr "Сделай мне больно (3)" -#: lutris/runners/zdoom.py:80 +#: lutris/runners/zdoom.py:79 msgid "Ultra-Violence (4)" msgstr "Сверхнасилие (4)" -#: lutris/runners/zdoom.py:81 +#: lutris/runners/zdoom.py:80 msgid "Nightmare! (5)" msgstr "Кошмар! (5)" # должно ли wad писаться строчными буквами? -#: lutris/runners/zdoom.py:92 +#: lutris/runners/zdoom.py:91 msgid "" "Used to load a user-created configuration file. If specified, the file must " "contain the wad directory list or launch will fail." @@ -4096,50 +4898,97 @@ msgstr "" "Используется для загрузки файла конфигурации, созданного пользователем. Если " "указано, файл должен содержать список каталогов wad, иначе запуск не удастся." -#: lutris/services/gog.py:66 +#: lutris/services/battlenet.py:13 +msgid "Battle.net" +msgstr "" + +#: lutris/services/bethesda.py:13 +msgid "Bethesda" +msgstr "" + +#: lutris/services/egs.py:134 +msgid "Epic Games Store" +msgstr "" + +#: lutris/services/gog.py:68 msgid "GOG" msgstr "GOG" -#: lutris/services/humblebundle.py:59 +#: lutris/services/humblebundle.py:57 msgid "Humble Bundle" msgstr "Humble Bundle" -#: lutris/settings.py:12 -msgid "(c) 2010-2020 Lutris Gaming Platform" -msgstr "(c) 2010-2020 Lutris Gaming Platform" +#: lutris/services/itchio.py:13 +msgid "Itch.io (Not implemented)" +msgstr "" + +#: lutris/services/origin.py:87 +msgid "Origin" +msgstr "" + +#: lutris/services/steam.py:102 +msgid "" +"Failed to load games. Check that your profile is set to public during the " +"sync." +msgstr "" +"Не удалось загрузить игры. Убедитесь что во время синхронизации ваш профиль " +"открыт." + +#: lutris/services/steamwindows.py:25 +#, fuzzy +msgid "Steam for Windows" +msgstr "Запускает Steam для игр Windows" + +#: lutris/services/tosec.py:11 +msgid "TOSEC" +msgstr "" + +#: lutris/services/ubisoft.py:81 +#, fuzzy +msgid "Ubisoft Connect" +msgstr "Отключить" + +#: lutris/services/xdg.py:43 +msgid "Local" +msgstr "Локальный" #: lutris/settings.py:13 +#, fuzzy +msgid "(c) 2010-2022 Lutris Team" +msgstr "(c) 2010-2020 Lutris Gaming Platform" + +#: lutris/settings.py:14 msgid "The Lutris team" msgstr "Команда Lutris" -#: lutris/startup.py:90 +#: lutris/startup.py:87 msgid "Your NVIDIA driver is outdated." msgstr "Ваш драйвер NVIDIA устарел." -#: lutris/startup.py:91 -#, python-format +#: lutris/startup.py:89 +#, fuzzy, python-format msgid "" "You are currently running driver %s which does not fully support all " "features for Vulkan and DXVK games.\n" -"Please upgrade your driver as described in our installation guide" +"Please upgrade your driver as described in our installation " +"guide" msgstr "" "В настоящее время вы используете драйвер %s, который не полностью " "поддерживает все функции необходимые для игр работающих на Vulkan и DXVK.\n" "Пожалуйста, обновите драйвер, как описано в нашем руководстве по установке" -#: lutris/startup.py:119 +#: lutris/startup.py:120 msgid "Missing vulkan libraries" msgstr "Отсутствуют библиотеки vulkan" -#: lutris/startup.py:120 -#, python-format +#: lutris/startup.py:122 +#, fuzzy, python-format msgid "" "Lutris was unable to detect Vulkan support for the %s architecture.\n" "This will prevent many games and programs from working.\n" -"To install it, please use the following guide: Installing Graphics Drivers" +"To install it, please use the following guide: Installing " +"Graphics Drivers" msgstr "" "Lutris не смог обнаружить поддержку Vulkan для архитектуры %s.\n" "Это помешает работе большого количества игр и программ.\n" @@ -4147,36 +4996,52 @@ msgstr "" "href='https://github.com/lutris/lutris/wiki/Installing-drivers'>Установка " "графический драйверов" -#: lutris/startup.py:125 +#: lutris/startup.py:128 msgid " and " msgstr " и" -#: lutris/sysoptions.py:32 +#: lutris/sysoptions.py:29 msgid "Keep current" msgstr "Оставить текущий" -#: lutris/sysoptions.py:40 lutris/sysoptions.py:49 lutris/sysoptions.py:60 -#: lutris/sysoptions.py:478 +#: lutris/sysoptions.py:37 lutris/sysoptions.py:46 lutris/sysoptions.py:57 +#: lutris/sysoptions.py:501 msgid "Off" msgstr "Выкл." -#: lutris/sysoptions.py:41 +#: lutris/sysoptions.py:38 msgid "Primary" msgstr "Основной" -#: lutris/sysoptions.py:89 +#: lutris/sysoptions.py:85 +msgid "Auto: WARNING -- No Vulkan Loader detected!" +msgstr "" + +#: lutris/sysoptions.py:119 +msgid "Auto: Intel Open Source (MESA: ANV)" +msgstr "" + +#: lutris/sysoptions.py:121 +msgid "Auto: AMD RADV Open Source (MESA: RADV)" +msgstr "" + +#: lutris/sysoptions.py:123 +msgid "Auto: Nvidia Proprietary" +msgstr "" + +#: lutris/sysoptions.py:145 msgid "Default installation folder" msgstr "Каталог для установки по умолчанию" -#: lutris/sysoptions.py:92 +#: lutris/sysoptions.py:148 msgid "The default folder where you install your games." msgstr "Каталог по умолчанию, в который вы устанавливаете свои игры." -#: lutris/sysoptions.py:100 +#: lutris/sysoptions.py:156 msgid "Disable Lutris Runtime" msgstr "Отключить Lutris Runtime" -#: lutris/sysoptions.py:103 +#: lutris/sysoptions.py:159 msgid "" "The Lutris Runtime loads some libraries before running the game, which can " "cause some incompatibilities in some cases. Check this option to disable it." @@ -4185,22 +5050,22 @@ msgstr "" "некоторых случаях может вызвать несовместимость. Установите этот флажок, " "чтобы отключить его." -#: lutris/sysoptions.py:110 +#: lutris/sysoptions.py:166 msgid "Prefer system libraries" msgstr "Предпочитать системные библиотеки" -#: lutris/sysoptions.py:112 +#: lutris/sysoptions.py:168 msgid "" "When the runtime is enabled, prioritize the system libraries over the " "provided ones." msgstr "" "Когда среда выполнения включена, отдавать приоритет системным библиотекам." -#: lutris/sysoptions.py:121 +#: lutris/sysoptions.py:174 msgid "Restore resolution on game exit" msgstr "Восстанавливать разрешение при выходе из игры" -#: lutris/sysoptions.py:124 +#: lutris/sysoptions.py:176 msgid "" "Some games don't restore your screen resolution when \n" "closed or when they crash. This is when this option comes \n" @@ -4210,19 +5075,61 @@ msgstr "" "когда они закрываются или вылетают. Вот тогда-то и вам и\n" "поможет эта опция." -#: lutris/sysoptions.py:131 -msgid "Restrict to single core" +#: lutris/sysoptions.py:183 +#, fuzzy +msgid "Enable gamescope" +msgstr "Включить Feral GameMode" + +#: lutris/sysoptions.py:187 +msgid "" +"Use gamescope to draw the game window isolated from your desktop.\n" +"Use Ctrl+Super+F to toggle fullscreen" +msgstr "" + +#: lutris/sysoptions.py:193 +#, fuzzy +msgid "Gamescope output resolution" +msgstr "Разрешение рабочего стола" + +#: lutris/sysoptions.py:197 +msgid "Resolution of the window on your desktop" +msgstr "" + +#: lutris/sysoptions.py:202 +#, fuzzy +msgid "Gamescope game resolution" +msgstr "Разрешение рабочего стола" + +#: lutris/sysoptions.py:206 +msgid "Resolution of the screen visible to the game" +msgstr "" + +#: lutris/sysoptions.py:211 +#, fuzzy +msgid "Restrict number of cores used" msgstr "Ограничить одним ядром" -#: lutris/sysoptions.py:134 -msgid "Restrict the game to a single CPU core." +#: lutris/sysoptions.py:214 +#, fuzzy +msgid "Restrict the game to a maximum number of CPU cores." msgstr "Ограничить игру одним ядром процессора." -#: lutris/sysoptions.py:144 +#: lutris/sysoptions.py:219 +#, fuzzy +msgid "Restrict number of cores to" +msgstr "Ограничить одним ядром" + +#: lutris/sysoptions.py:222 +msgid "" +"Maximum number of CPU cores to be used, if 'Restrict number of cores used' " +"is turned on." +msgstr "" + +#: lutris/sysoptions.py:228 msgid "Restore gamma on game exit" msgstr "Восстановить гамму при выходе из игры" -#: lutris/sysoptions.py:147 +#: lutris/sysoptions.py:230 msgid "" "Some games don't correctly restores gamma on exit, making your display too " "bright. Select this option to correct it." @@ -4230,11 +5137,11 @@ msgstr "" "Некоторые игры некорректно восстанавливают гамму при выходе, из-за чего " "дисплей становится слишком ярким. Отметьте эту опцию, чтобы это исправить." -#: lutris/sysoptions.py:152 +#: lutris/sysoptions.py:235 msgid "Disable desktop effects" msgstr "Отключить эффекты рабочего стола" -#: lutris/sysoptions.py:156 +#: lutris/sysoptions.py:239 msgid "" "Disable desktop effects while game is running, reducing stuttering and " "increasing performance" @@ -4242,11 +5149,11 @@ msgstr "" "Отключить эффекты рабочего стола во время игры, для того чтобы уменьшить " "«дрожание» картинки и повысить производительность" -#: lutris/sysoptions.py:161 +#: lutris/sysoptions.py:244 msgid "Disable screen saver" msgstr "Отключить скринсейвер" -#: lutris/sysoptions.py:166 +#: lutris/sysoptions.py:249 msgid "" "Disable the screen saver while a game is running. Requires the screen " "saver's functionality to be exposed over DBus." @@ -4254,19 +5161,19 @@ msgstr "" "Отключает скринсейвер во время игры. Необходимо, чтобы функционал " "скринсейвера был доступен через DBus." -#: lutris/sysoptions.py:173 +#: lutris/sysoptions.py:256 msgid "Reset PulseAudio" msgstr "Перезапускать PulseAudio" -#: lutris/sysoptions.py:177 +#: lutris/sysoptions.py:260 msgid "Restart PulseAudio before launching the game." msgstr "Перезапускать PulseAudio перед запуском игры." -#: lutris/sysoptions.py:182 +#: lutris/sysoptions.py:265 msgid "Reduce PulseAudio latency" msgstr "Уменьшить задержку PulseAudio" -#: lutris/sysoptions.py:186 +#: lutris/sysoptions.py:269 msgid "" "Set the environment variable PULSE_LATENCY_MSEC=60 to improve audio quality " "on some games" @@ -4274,19 +5181,19 @@ msgstr "" "Установить переменную окружения PULSE_LATENCY_MSEC=60, чтобы улучшить " "качество звука в некоторых играх." -#: lutris/sysoptions.py:192 +#: lutris/sysoptions.py:275 msgid "Switch to US keyboard layout" msgstr "Переключать на Американскую раскладку" -#: lutris/sysoptions.py:195 +#: lutris/sysoptions.py:278 msgid "Switch to US keyboard QWERTY layout while game is running" msgstr "Переключать на Американскую раскладку QWERTY во время игры" -#: lutris/sysoptions.py:207 +#: lutris/sysoptions.py:285 msgid "Optimus launcher (NVIDIA Optimus laptops)" msgstr "Лаунчер Optimus (ноутбуки NVIDIA Optimus)" -#: lutris/sysoptions.py:210 +#: lutris/sysoptions.py:287 msgid "" "If you have installed the primus or bumblebee packages, select what launcher " "will run the game with the command, activating your NVIDIA graphic chip for " @@ -4300,11 +5207,11 @@ msgstr "" "производительность, butoptirun/virtualgl лучше работает в большем количестве " "игр. Primus VK обеспечивает поддержку vulkan при работе с bumblebee." -#: lutris/sysoptions.py:222 +#: lutris/sysoptions.py:299 msgid "Vulkan ICD loader" msgstr "Загрузчик Vulkan ICD" -#: lutris/sysoptions.py:224 +#: lutris/sysoptions.py:301 msgid "" "The ICD loader is a library that is placed between a Vulkan application and " "any number of Vulkan drivers, in order to support multiple drivers and the " @@ -4315,62 +5222,34 @@ msgstr "" "поддержку работы множества разных драйверов и их функциональности, между " "всеми этими драйверами." -#: lutris/sysoptions.py:232 +#: lutris/sysoptions.py:309 msgid "FPS counter (MangoHud)" msgstr "Счетчик FPS (MangoHud)" -#: lutris/sysoptions.py:235 -msgid "Enabled (Vulkan)" -msgstr "Включить (Vulkan)" - -#: lutris/sysoptions.py:236 -msgid "Enabled (OpenGL)" -msgstr "Включить (OpenGL)" - -#: lutris/sysoptions.py:237 -msgid "Enabled (OpenGL, 32bit)" -msgstr "Включить (OpenGL, 32-битный)" - -#: lutris/sysoptions.py:242 +#: lutris/sysoptions.py:312 msgid "" "Display the game's FPS + other information. Requires MangoHud to be " "installed." msgstr "" "Отображает FPS и другую информацию в игре. Требуется установленный MangoHud." -#: lutris/sysoptions.py:248 -msgid "FPS limit" -msgstr "Ограничение FPS" - -#: lutris/sysoptions.py:251 +#: lutris/sysoptions.py:321 msgid "Limit the game's FPS to desired number" msgstr "Ограничивает FPS до выбранного значения" -#: lutris/sysoptions.py:256 -msgid "Enable ACO shader compiler" -msgstr "Включить компилятор шейдеров ACO" - -#: lutris/sysoptions.py:258 -msgid "" -"Enable ACO shader compiler, improving performance in a lot of games. " -"Requires Mesa 19.3 or later." -msgstr "" -"Включает компилятор шейдеров ACO, улучшая производительность во многих " -"играх. Требуется Mesa 19.3 или новее." - -#: lutris/sysoptions.py:266 +#: lutris/sysoptions.py:328 msgid "Enable Feral GameMode" msgstr "Включить Feral GameMode" -#: lutris/sysoptions.py:267 +#: lutris/sysoptions.py:329 msgid "Request a set of optimisations be temporarily applied to the host OS" msgstr "Запросить временное применение набора оптимизаций к ОС хоста" -#: lutris/sysoptions.py:279 +#: lutris/sysoptions.py:336 msgid "Enable NVIDIA Prime Render Offload" msgstr "Включить NVIDIA Prime Render Offload" -#: lutris/sysoptions.py:280 +#: lutris/sysoptions.py:337 msgid "" "If you have the latest NVIDIA driver and the properly patched xorg-server " "(see https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/" @@ -4385,11 +5264,11 @@ msgstr "" "применяться переменные окружения __NV_PRIME_RENDER_OFFLOAD=1 и " "__GLX_VENDOR_LIBRARY_NAME=nvidia." -#: lutris/sysoptions.py:296 +#: lutris/sysoptions.py:348 msgid "Use discrete graphics" msgstr "Использовать дискретную графику" -#: lutris/sysoptions.py:299 +#: lutris/sysoptions.py:350 msgid "" "If you have open source graphic drivers (Mesa), selecting this option will " "run the game with the 'DRI_PRIME=1' environment variable, activating your " @@ -4400,11 +5279,11 @@ msgstr "" "окружения DRI_PRIME=1, задействуя дискретный графический чип для высокой " "производительности 3D." -#: lutris/sysoptions.py:310 +#: lutris/sysoptions.py:358 msgid "SDL 1.2 Fullscreen Monitor" msgstr "Монитор для SDL 1.2 в полноэкранном режиме" -#: lutris/sysoptions.py:317 +#: lutris/sysoptions.py:362 msgid "" "Hint SDL 1.2 games to use a specific monitor when going fullscreen by " "setting the SDL_VIDEO_FULLSCREEN environment variable" @@ -4413,11 +5292,11 @@ msgstr "" "использовать указанный монитор. Для этого используется переменная окружения " "SDL_VIDEO_FULLSCREEN." -#: lutris/sysoptions.py:327 +#: lutris/sysoptions.py:369 msgid "Turn off monitors except" msgstr "Выключить все мониторы кроме" -#: lutris/sysoptions.py:334 +#: lutris/sysoptions.py:374 msgid "" "Only keep the selected screen active while the game is running. \n" "This is useful if you have a dual-screen setup, and are \n" @@ -4427,92 +5306,103 @@ msgstr "" "Эта опция может быть полезна, если у вас система с двумя мониторами и " "возникают проблемы с отображением при запуске игр в полноэкранном режиме." -#: lutris/sysoptions.py:342 +#: lutris/sysoptions.py:382 msgid "Switch resolution to" msgstr "Переключить разрешение на" -#: lutris/sysoptions.py:345 +#: lutris/sysoptions.py:386 msgid "Switch to this screen resolution while the game is running." msgstr "Переключать на это разрешение экрана во время работы игры." -#: lutris/sysoptions.py:349 -msgid "Run in a terminal" -msgstr "Запускать в терминале" +#: lutris/sysoptions.py:390 +msgid "CLI mode" +msgstr "" -#: lutris/sysoptions.py:353 -msgid "Run the game in a new terminal window." -msgstr "Запустите игру в новом окне терминала." +#: lutris/sysoptions.py:394 +msgid "" +"Enable a terminal for text-based games. Only useful for ASCII based games. " +"May cause issues with graphical games." +msgstr "" -#: lutris/sysoptions.py:359 -msgid "Terminal application" -msgstr "Приложение терминала" +#: lutris/sysoptions.py:399 +#, fuzzy +msgid "Text based games emulator" +msgstr "Эмулятор аркадных игр" -#: lutris/sysoptions.py:368 +#: lutris/sysoptions.py:404 +#, fuzzy msgid "" -"The terminal emulator to be run with the previous option. Choose from the " -"list of detected terminal apps or enter the terminal's command or path. " -"Note: Not all terminal emulators are guaranteed to work." +"The terminal emulator used with the CLI mode. Choose from the list of " +"detected terminal apps or enter the terminal's command or path." msgstr "" "Эмулятор терминала для запуска с предыдущим параметром. Выберите из списка " "обнаруженных терминальных приложений или введите команду терминала, или путь " "к ней. Примечание: Нет гарантий что все эмуляторы терминала будут работать." -#: lutris/sysoptions.py:376 +#: lutris/sysoptions.py:411 msgid "Environment variables" msgstr "Переменные окружения" -#: lutris/sysoptions.py:377 +#: lutris/sysoptions.py:412 msgid "Environment variables loaded at run time" msgstr "Переменные окружения, загружаемые во время выполнения" -#: lutris/sysoptions.py:382 +#: lutris/sysoptions.py:417 +msgid "AntiMicroX Profile" +msgstr "" + +#: lutris/sysoptions.py:419 +msgid "Path to an AntiMicroX profile file" +msgstr "" + +#: lutris/sysoptions.py:424 msgid "Command prefix" msgstr "Префикс команды" -#: lutris/sysoptions.py:384 +#: lutris/sysoptions.py:426 msgid "" "Command line instructions to add in front of the game's execution command." msgstr "" "Инструкции командной строки, которые нужно добавить перед командой запуска " "игры." -#: lutris/sysoptions.py:390 +#: lutris/sysoptions.py:432 msgid "Manual script" msgstr "Пользовательский скрипт" -#: lutris/sysoptions.py:392 +#: lutris/sysoptions.py:434 msgid "Script to execute from the game's contextual menu" msgstr "Скрипт, выполняемый из контекстного меню игры" -#: lutris/sysoptions.py:397 +#: lutris/sysoptions.py:439 msgid "Pre-launch script" msgstr "Предстартовый скрипт" -#: lutris/sysoptions.py:399 +#: lutris/sysoptions.py:441 msgid "Script to execute before the game starts" msgstr "Скрипт, выполняемый перед запуском игры" -#: lutris/sysoptions.py:404 +#: lutris/sysoptions.py:446 msgid "Wait for pre-launch script completion" msgstr "Дожидаться выполнения предстартового скрипта" -#: lutris/sysoptions.py:407 +#: lutris/sysoptions.py:449 msgid "Run the game only once the pre-launch script has exited" msgstr "Запускать игру только после завершения работы предстартового скрипта" -#: lutris/sysoptions.py:412 +#: lutris/sysoptions.py:454 msgid "Post-exit script" msgstr "Послестартовый скрипт" -#: lutris/sysoptions.py:414 +#: lutris/sysoptions.py:456 msgid "Script to execute when the game exits" msgstr "Скрипт, выполняемый после закрытия игры" -#: lutris/sysoptions.py:422 +#: lutris/sysoptions.py:461 msgid "Include processes" msgstr "Добавить процессы" -#: lutris/sysoptions.py:425 +#: lutris/sysoptions.py:463 msgid "" "What processes to include in process monitoring. This is to override the " "built-in exclude list.\n" @@ -4524,11 +5414,11 @@ msgstr "" "Список, разделяемый пробелами. Процессы, включающие пробелы, можно заключать " "в кавычки." -#: lutris/sysoptions.py:436 +#: lutris/sysoptions.py:471 msgid "Exclude processes" msgstr "Исключить процессы" -#: lutris/sysoptions.py:439 +#: lutris/sysoptions.py:473 msgid "" "What processes to exclude in process monitoring. For example background " "processes that stick around after the game has been closed.\n" @@ -4540,11 +5430,11 @@ msgstr "" "Список, разделяемый пробелами. Процессы, включающие пробелы, можно заключать " "в кавычки." -#: lutris/sysoptions.py:451 +#: lutris/sysoptions.py:482 msgid "Killswitch file" msgstr "Файл-аварийная кнопка" -#: lutris/sysoptions.py:454 +#: lutris/sysoptions.py:484 msgid "" "Path to a file which will stop the game when deleted \n" "(usually /dev/input/js0 to stop the game on joystick unplugging)" @@ -4553,11 +5443,11 @@ msgstr "" "(обычно /dev/input/js0, для того чтобы останавливать игру при отключении " "джойстика)" -#: lutris/sysoptions.py:464 +#: lutris/sysoptions.py:491 msgid "SDL2 gamepad mapping" msgstr "Маппинги геймпада для SDL 2" -#: lutris/sysoptions.py:467 +#: lutris/sysoptions.py:493 msgid "" "SDL_GAMECONTROLLERCONFIG mapping string or path to a custom gamecontrollerdb." "txt file containing mappings." @@ -4565,122 +5455,119 @@ msgstr "" "Строка SDL_GAMECONTROLLERCONFIG с маппингами или путь к пользовательскому " "файлу gamecontrollerdb.txt содержащему маппинги." -#: lutris/sysoptions.py:474 +#: lutris/sysoptions.py:498 msgid "Use Xephyr" msgstr "Использовать Xephyr" -#: lutris/sysoptions.py:479 +#: lutris/sysoptions.py:502 msgid "8BPP (256 colors)" msgstr "8BPP (256 цветов)" -#: lutris/sysoptions.py:480 +#: lutris/sysoptions.py:503 msgid "16BPP (65536 colors)" msgstr "16BPP (65536 цветов)" -#: lutris/sysoptions.py:481 +#: lutris/sysoptions.py:504 msgid "24BPP (16M colors)" msgstr "24BPP (16M цветов)" -#: lutris/sysoptions.py:488 +#: lutris/sysoptions.py:508 msgid "Run program in Xephyr to support 8BPP and 16BPP color modes" msgstr "" "Для поддержки цветовых режимов 8BPP и 16BPP, запускайте программу через " "Xephyr." -#: lutris/sysoptions.py:493 +#: lutris/sysoptions.py:513 msgid "Xephyr resolution" msgstr "Разрешение Xephyr" -#: lutris/sysoptions.py:495 +#: lutris/sysoptions.py:515 msgid "Screen resolution of the Xephyr server" msgstr "Разрешение экрана сервера Xephyr" -#: lutris/sysoptions.py:500 +#: lutris/sysoptions.py:520 msgid "Xephyr Fullscreen" msgstr "Полноэкранный режим Xephyr" -#: lutris/sysoptions.py:503 +#: lutris/sysoptions.py:523 msgid "Open Xephyr in fullscreen (at the desktop resolution)" msgstr "Открывать Xephyr в полноэкранном режиме (с разрешением рабочего стола)" -#: lutris/sysoptions.py:511 -msgid "Discord Rich Presence" -msgstr "Discord Rich Presence" - -#: lutris/sysoptions.py:514 -msgid "Enable status to Discord of this game being played" -msgstr "Показывать для этой игры статус в Discord" - -#: lutris/sysoptions.py:519 -msgid "Discord Show Runner" -msgstr "Показывать раннер в Discord" +#: lutris/util/system.py:20 +#, fuzzy +msgid "Documents" +msgstr "Аргументы" -#: lutris/sysoptions.py:522 -msgid "Embed the runner name in the Discord status" -msgstr "Встроить название раннера в статус Discord" +#: lutris/util/system.py:21 +#, fuzzy +msgid "Downloads" +msgstr "Загрузить" -#: lutris/sysoptions.py:527 -msgid "Discord Custom Game Name" -msgstr "Своё название игры в Discord" +#: lutris/util/system.py:22 +msgid "Desktop" +msgstr "" -#: lutris/sysoptions.py:529 -msgid "Custom name to override with and pass to Discord" -msgstr "Пользовательское название игры для переопределения и показа в Discord" +#: lutris/util/system.py:23 lutris/util/system.py:25 +msgid "Pictures" +msgstr "" -#: lutris/sysoptions.py:534 -msgid "Discord Custom Runner Name" -msgstr "Своё название раннера в Discord" +#: lutris/util/system.py:24 +#, fuzzy +msgid "Videos" +msgstr "Видео" -#: lutris/sysoptions.py:536 -msgid "Custom runner name to override with and pass to Discord" +#: lutris/util/system.py:26 +msgid "Projects" msgstr "" -"Пользовательское название раннера для переопределения и показа в Discord" -#: lutris/sysoptions.py:541 -msgid "Discord Client ID" -msgstr "Клиентский ID Discord" +#: lutris/util/ubisoft/client.py:102 +#, python-format +msgid "Ubisoft authentication has been lost: %s" +msgstr "" -#: lutris/sysoptions.py:543 -msgid "Custom Discord Client ID for passing status" -msgstr "Свой Discord Client ID для передачи статуса" +#: lutris/util/wine/dll_manager.py:63 +msgid "Manual" +msgstr "Ручной" -#: lutris/util/wine/wine.py:352 lutris/util/wine/wine.py:390 -#: lutris/util/wine/wine.py:410 +#: lutris/util/wine/wine.py:346 lutris/util/wine/wine.py:384 +#: lutris/util/wine/wine.py:404 msgid "Launch anyway and do not show this message again." msgstr "Все равно запустить и больше не показывать это сообщение." -#: lutris/util/wine/wine.py:354 lutris/util/wine/wine.py:392 -#: lutris/util/wine/wine.py:412 +#: lutris/util/wine/wine.py:348 lutris/util/wine/wine.py:386 +#: lutris/util/wine/wine.py:406 msgid "Enable anyway and do not show this message again." msgstr "Все равно включить и больше не показывать это сообщение." -#: lutris/util/wine/wine.py:359 +#: lutris/util/wine/wine.py:353 msgid "Vulkan is not installed or is not supported by your system" msgstr "Vulkan не установлен или не поддерживается вашей системой" -#: lutris/util/wine/wine.py:361 +#: lutris/util/wine/wine.py:355 +#, fuzzy msgid "" "If you have compatible hardware, please follow the installation procedures " "as described in\n" -"How-to:-DXVK " -"(https://github.com/lutris/lutris/wiki/How-to:-DXVK)" +"How-to:-" +"DXVK (https://github.com/lutris/docs/blob/master/HowToDXVK.md)" msgstr "" "Если у вас есть совместимое оборудование, следуйте процедурам установки, " "описанным в\n" "Практическое " "руководство: DXVK (https://github.com/lutris/lutris/wiki/How-to:-DXVK)" -#: lutris/util/wine/wine.py:373 +#: lutris/util/wine/wine.py:367 +#, fuzzy msgid "" "Your limits are not set correctly. Please increase them as described here: " -"How-to:-Esync " -"(https://github.com/lutris/lutris/wiki/How-to:-Esync)" +"How-to:-" +"Esync (https://github.com/lutris/docs/blob/master/HowToEsync.md)" msgstr "" "Ваши лимиты установлены неправильно. Увеличьте их, как описано здесь: Практическое " "руководство: Esync (https://github.com/lutris/lutris/wiki/How-to:-Esync)" -#: lutris/util/wine/wine.py:382 +#: lutris/util/wine/wine.py:376 msgid "" "Your kernel is not patched for fsync. Please get a patched kernel to use " "fsync." @@ -4688,11 +5575,11 @@ msgstr "" "Ваше ядро не имеет патчей для fsync. Чтобы использовать fsync необходимо " "иметь пропатченное ядро." -#: lutris/util/wine/wine.py:396 lutris/util/wine/wine.py:416 +#: lutris/util/wine/wine.py:390 lutris/util/wine/wine.py:410 msgid "Incompatible Wine version detected" msgstr "Обнаружена несовместимая версия Wine" -#: lutris/util/wine/wine.py:398 +#: lutris/util/wine/wine.py:392 msgid "" "The Wine build you have selected does not support Esync.\n" "Please switch to an Esync-capable version." @@ -4700,7 +5587,7 @@ msgstr "" "Выбранная вами сборка Wine не поддерживает Esync.\n" "Пожалуйста, переключитесь на версию с поддержкой Esync." -#: lutris/util/wine/wine.py:418 +#: lutris/util/wine/wine.py:412 msgid "" "The Wine build you have selected does not support Fsync.\n" "Please switch to an Fsync-capable version." @@ -4708,6 +5595,376 @@ msgstr "" "Выбранная вами сборка Wine не поддерживает Fsync.\n" "Пожалуйста, переключитесь на версию с поддержкой Fsync." +#~ msgid "open source gaming platform" +#~ msgstr "открытая игровая платформа" + +#~ msgid "lutris" +#~ msgstr "lutris" + +#~ msgid "Play all your games by Lutris" +#~ msgstr "Играйте в ваши игры с помощью Lutris" + +#~ msgid "" +#~ "Lutris is an Open Source gaming platform. It installs and launches games " +#~ "so you can start playing without the hassle of setting up your games. Get " +#~ "your games from GOG, Steam, Battle.net, Origin, Uplay and many other " +#~ "sources running on any Linux powered gaming machine." +#~ msgstr "" +#~ "Lutris - это игровая платформа с открытым исходным кодом. Он сам " +#~ "устанавливает и запускает игры, благодаря чему вы можете сразу же начать " +#~ "играть без необходимости проходить через скучную процедуру по настройке и " +#~ "установке ваших игр. Вы можете играть в игры из GOG, Steam, Battle.net, " +#~ "Origin, Uplay и множества других источников которые работают на любых " +#~ "игровых машинах под управлением Linux." + +#~ msgid "Open Source Gaming Platform" +#~ msgstr "Открытая игровая платформа" + +#~ msgid "Appl_y" +#~ msgstr "_Применить" + +#~ msgid "Personal Game Archives sources" +#~ msgstr "Источники личных достижений" + +#~ msgid "_Remove" +#~ msgstr "_Удалить" + +#~ msgid "Use _Dark Theme" +#~ msgstr "Использовать темную тему" + +#~ msgid "Manage runners" +#~ msgstr "Менеджер раннеров" + +#~ msgid "View Options" +#~ msgstr "Параметры отображения" + +#~ msgid "Community Installers" +#~ msgstr "Пользовательские установщики" + +#~ msgid "Your Library" +#~ msgstr "Ваша библиотека" + +#~ msgid "name" +#~ msgstr "название" + +#~ msgid "description" +#~ msgstr "описание" + +#~ msgid "platforms" +#~ msgstr "платформы" + +#~ msgid "Configure Runner" +#~ msgstr "Настроить раннер" + +#~ msgid "Remove Runner" +#~ msgstr "Удалить раннер" + +#~ msgid "Remove ALL versions?" +#~ msgstr "Удалить ВСЕ версии?" + +#~ msgid "" +#~ "This will remove ALL versions of %s.\n" +#~ "\n" +#~ "Use the Manage Versions button if you want to remove just one version." +#~ msgstr "" +#~ "Это действие удалит ВСЕ версии %s.\n" +#~ "\n" +#~ "Используйте кнопку Менеджер версий если вы хотите удалить только одну из " +#~ "них." + +#~ msgid "Manage Runners" +#~ msgstr "Менеджер раннеров" + +#~ msgid "Refresh Runners" +#~ msgstr "Обновить раннеры" + +#~ msgid "Open Runners Folder" +#~ msgstr "Открыть каталог с раннерами " + +#~ msgid "An error prevented the game from running" +#~ msgstr "Из-за ошибки игра не запустилась" + +#~ msgid "Copy System Info" +#~ msgstr "Скопировать информацию о системе" + +#~ msgid "System preferences" +#~ msgstr "Настройки системы" + +#~ msgid "Select directory" +#~ msgstr "Выберите каталог" + +#~ msgid "Not in use" +#~ msgstr "Не используется" + +#~ msgid "Multiple platforms" +#~ msgstr "Множество платформ" + +#~ msgid "Use search to find games on lutris.net" +#~ msgstr "Используйте строку поиска чтобы искать игры на lutris.net" + +#~ msgid "Downloading {}" +#~ msgstr "Загружается {}" + +#~ msgid "" +#~ "Runs various 3D point-and-click adventure games, like Grim Fandango and " +#~ "Escape from Monkey Island." +#~ msgstr "" +#~ "Запускает различные трехмерные приключенческие игры в жанре point-and-" +#~ "click, такие как Grim Fandango и Escape from Monkey Island." + +#~ msgid "Stop Steam after game exits" +#~ msgstr "Закрывать Steam после выхода из игры" + +#~ msgid "" +#~ "Shut down Steam after the game has quit\n" +#~ "(only if Steam was started by Lutris)" +#~ msgstr "" +#~ "Закрывать Steam после выхода из игры\n" +#~ "(только если Steam был запущен Lutris'ом)" + +#~ msgid "Disable Steam Runtime (use native libraries)" +#~ msgstr "Отключить Steam Runtime (использовать системные библиотеки)" + +#~ msgid "" +#~ "Launches Steam with STEAM_RUNTIME=0. Make sure you disabled Lutris " +#~ "Runtime and have the required libraries installed." +#~ msgstr "" +#~ "Запускает Steam с переменной окружения STEAM_RUNTIME=0. Убедитесь, что вы " +#~ "отключили Lutris Runtime и у вас установлены необходимые библиотеки." + +#~ msgid "Enable Gallium Nine" +#~ msgstr "Включить Gallium Nine" + +#~ msgid "" +#~ "Gallium Nine allows to run Direct3D 9 applications faster.\n" +#~ "Make sure your active graphics card supports Gallium Nine state tracker " +#~ "before enabling this option.\n" +#~ "Note: This feature is not supported by proprietary Nvidia driver." +#~ msgstr "" +#~ "Gallium Nine позволяет приложениям на Direct3D 9 работать быстрее.\n" +#~ "Перед включением этой опции убедитесь, что ваша текущая видеокарта " +#~ "поддерживает отслеживание состояния Gallium Nine.\n" +#~ "Примечание: Эта функция не поддерживается проприетарным драйвером Nvidia." + +#~ msgid "Path to the game's executable, for x360ce support" +#~ msgstr "Путь к исполняемому файлу игры для работы x360ce" + +#~ msgid "Locate the path for the game's executable for x360 support" +#~ msgstr "Укажите путь к исполняемому файлу игры для работы x360" + +#~ msgid "x360ce DInput 8 mode" +#~ msgstr "Режим DInput 8 для x360ce" + +#~ msgid "Configure x360ce with dinput8.dll, required for some games" +#~ msgstr "" +#~ "Настроить x360ce с помощью dinput8.dll, необходимо для некоторых игр" + +#~ msgid "x360ce XInput 9.1.0 mode" +#~ msgstr "Режим XInput 9.1.0 для x360ce" + +#~ msgid "Configure x360ce with xinput9_1_0.dll, required for some newer games" +#~ msgstr "" +#~ "Настроить x360ce с помощью xinput9_1_0.dll, необходимо для некоторых " +#~ "новых игр" + +#~ msgid "Use Dumb XInput Emulator (experimental)" +#~ msgstr "Использовать глупый эмулятор XInput (экспериментальный)" + +#~ msgid "Use the dlls from kozec/dumbxinputemu" +#~ msgstr "Используйте библиотеки от kozec/dumbxinputemu" + +#~ msgid "XInput architecture" +#~ msgstr "Архитектура XInput" + +#~ msgid "Same as Wine prefix" +#~ msgstr "Такая же, что и префикс Wine" + +#~ msgid "Offscreen Rendering Mode" +#~ msgstr "Режим закадрового рендеринга" + +#~ msgid "" +#~ "Select the offscreen rendering implementation.\n" +#~ "FBO: (Wine default) Use framebuffer objects for offscreen " +#~ "rendering \n" +#~ "Backbuffer: Render offscreen render targets in the backbuffer." +#~ msgstr "" +#~ "Выберите реализацию закадрового рендеринга.\n" +#~ "FBO: (по умолчанию для Wine) использовать объекты фреймбуфера для " +#~ "закадрового рендеринга \n" +#~ "Backbuffer: рендеринг закадровых целей в бэк-буфер." + +#~ msgid "Strict Draw Ordering" +#~ msgstr "Строгий порядок отрисовки" + +#~ msgid "" +#~ "This option ensures any pending drawing operations are submitted to the " +#~ "driver, but at a significant performance cost. This setting is deprecated " +#~ "since Wine-2.6 and will likely be removed after Wine-3.0. Use \"csmt\" " +#~ "instead." +#~ msgstr "" +#~ "Этот параметр гарантирует, что все ожидающие операции отрисовки " +#~ "передаются драйверу, но со значительными потерями в производительности. " +#~ "Этот параметр устарел с версии Wine-2.6 и, вероятно, будет удален после " +#~ "Wine-3.0. Вместо этого используйте \"csmt\"." + +#~ msgid "Use GLSL" +#~ msgstr "Использовать GLSL" + +#~ msgid "" +#~ "When set to \"disabled\", this disables the use of GLSL for shaders. In " +#~ "general disabling GLSL is not recommended, only use this for debugging " +#~ "purposes." +#~ msgstr "" +#~ "Если установлено значение «Отключено», эта опция отключает использование " +#~ "GLSL для шейдеров. В большинстве случаев отключение GLSL не " +#~ "рекомендуется, используйте эту опцию только для устранения ошибок." + +#~ msgid "Anti-aliasing Sample Count" +#~ msgstr "Количество выборок сглаживания" + +#~ msgid "" +#~ "Override swapchain sample count. It can be used to force enable " +#~ "multisampling with applications that otherwise don't support it, like the " +#~ "similar control panel setting available with some GPU drivers. This one " +#~ "might work in more cases than the driver setting though. Not all " +#~ "applications are compatible with all sample counts. " +#~ msgstr "" +#~ "Переопределяет количество выборок свопчейна. Эту опцию можно использовать " +#~ "для принудительного включения мультисэмплинга в приложениях, которые его " +#~ "не поддерживают. Эта опция работает также как аналогичные настройки в " +#~ "панелях управления, доступных в некоторых драйверах графических карт. " +#~ "Однако этот метод может работать в большем количестве случаев, нежели " +#~ "аналогичные опции драйверов. Не все приложения совместимы со всеми " +#~ "возможными вариантами." + +#~ msgid "Use XVidMode to switch resolutions" +#~ msgstr "Используйте XVidMode для переключения разрешения" + +#~ msgid "" +#~ "Set this to \"Y\" to allow Wine switch the resolution using XVidMode " +#~ "extension." +#~ msgstr "" +#~ "Установите значение «Y», чтобы разрешить Wine переключать разрешение с " +#~ "помощью расширения XVidMode." + +#~ msgid "Kill all Wine processes" +#~ msgstr "Убить все процессы Wine" + +#~ msgid "Wine Steam" +#~ msgstr "Wine Steam" + +#~ msgid "Prefix" +#~ msgstr "Префикс" + +#~ msgid "" +#~ "The architecture of the Windows environment.\n" +#~ "32-bit is recommended unless running 64-bit only games." +#~ msgstr "" +#~ "Архитектура среды Windows.\n" +#~ "Рекомендуется 32-битная версия, только если не планируется запускать " +#~ "только 64-битные игры." + +#~ msgid "Do not launch game, only open Steam" +#~ msgstr "Не запускать игру, только открыть Steam" + +#~ msgid "" +#~ "Opens Steam with the current settings without running the game, useful if " +#~ "a game has several launch options." +#~ msgstr "" +#~ "Открывает Steam с текущими настройками без запуска игры, полезно, если у " +#~ "игры есть несколько вариантов запуска." + +#~ msgid "Remove game data (through Wine Steam)" +#~ msgstr "Удалить данные игры (через Wine Steam)" + +#~ msgid "Custom Steam location" +#~ msgstr "Пользовательское расположение Steam" + +#~ msgid "" +#~ "Choose a folder containing Steam.exe\n" +#~ "By default, Lutris will look for a Windows Steam installation into ~/." +#~ "wine or will install it in its own custom Wine prefix." +#~ msgstr "" +#~ "Выберите каталог, содержащий Steam.exe\n" +#~ "По умолчанию Lutris будет искать установку Windows Steam в ~/.wine или " +#~ "установит его в своем собственном префиксе Wine." + +#~ msgid "Shut down Steam after the game has quit." +#~ msgstr "Закрывать Steam после выхода из игры." + +#~ msgid "Default Wine prefix (32-bit)" +#~ msgstr "Префикс Wine по умолчанию (32-битный)" + +#~ msgid "Default prefix location for Steam (32-bit)" +#~ msgstr "Расположение префикса по умолчанию для Steam (32-битный)" + +#~ msgid "Default Wine prefix (64-bit)" +#~ msgstr "Префикс Wine по умолчанию (64-битный)" + +#~ msgid "Default prefix location for Steam (64-bit)" +#~ msgstr "Расположение префикса по умолчанию для Steam (64-битный)" + +#, python-format +#~ msgid "Winesteam runner (%s)" +#~ msgstr "Winesteam раннер (%s)" + +#~ msgid "Enabled (OpenGL)" +#~ msgstr "Включить (OpenGL)" + +#~ msgid "Enabled (OpenGL, 32bit)" +#~ msgstr "Включить (OpenGL, 32-битный)" + +#~ msgid "Enable ACO shader compiler" +#~ msgstr "Включить компилятор шейдеров ACO" + +#~ msgid "" +#~ "Enable ACO shader compiler, improving performance in a lot of games. " +#~ "Requires Mesa 19.3 or later." +#~ msgstr "" +#~ "Включает компилятор шейдеров ACO, улучшая производительность во многих " +#~ "играх. Требуется Mesa 19.3 или новее." + +#~ msgid "Run in a terminal" +#~ msgstr "Запускать в терминале" + +#~ msgid "Run the game in a new terminal window." +#~ msgstr "Запустите игру в новом окне терминала." + +#~ msgid "Terminal application" +#~ msgstr "Приложение терминала" + +#~ msgid "Discord Rich Presence" +#~ msgstr "Discord Rich Presence" + +#~ msgid "Enable status to Discord of this game being played" +#~ msgstr "Показывать для этой игры статус в Discord" + +#~ msgid "Discord Show Runner" +#~ msgstr "Показывать раннер в Discord" + +#~ msgid "Embed the runner name in the Discord status" +#~ msgstr "Встроить название раннера в статус Discord" + +#~ msgid "Discord Custom Game Name" +#~ msgstr "Своё название игры в Discord" + +#~ msgid "Custom name to override with and pass to Discord" +#~ msgstr "" +#~ "Пользовательское название игры для переопределения и показа в Discord" + +#~ msgid "Discord Custom Runner Name" +#~ msgstr "Своё название раннера в Discord" + +#~ msgid "Custom runner name to override with and pass to Discord" +#~ msgstr "" +#~ "Пользовательское название раннера для переопределения и показа в Discord" + +#~ msgid "Discord Client ID" +#~ msgstr "Клиентский ID Discord" + +#~ msgid "Custom Discord Client ID for passing status" +#~ msgstr "Свой Discord Client ID для передачи статуса" + # Заменить на привычное Gamepad? #~ msgid "Joypad 2" #~ msgstr "Геймпад 2" @@ -4729,9 +5986,6 @@ msgstr "" #~ msgid "Bios" #~ msgstr "BIOS" -#~ msgid "Fullscreen mode" -#~ msgstr "Полноэкранный режим" - #~ msgid "Keep aspect ratio" #~ msgstr "Сохранять соотношение сторон" diff --git a/po/tr.po b/po/tr.po index f24d6e6ab0417eeb666b5a376655c6912b0070a1..57ed9c409bdada18dc5c7f95d4b970aa7ed2bad5 100644 --- a/po/tr.po +++ b/po/tr.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-28 15:56+0200\n" +"POT-Creation-Date: 2022-06-20 16:54+0200\n" "PO-Revision-Date: 2020-05-28 1:40+0200\n" "Last-Translator: Mahmut Elmas \n" "Language-Team: Turkish\n" @@ -10,15 +10,43 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: share/lutris/ui/about-dialog.ui:8 -msgid "About Lutris" +#: share/applications/net.lutris.Lutris.desktop:3 +#: share/lutris/ui/lutris-window.ui:25 lutris/gui/application.py:76 +#: lutris/gui/widgets/status_icon.py:116 lutris/services/lutris.py:39 +#, fuzzy +msgid "Lutris" msgstr "Lutris Hakkında" -#: share/lutris/ui/about-dialog.ui:17 -msgid "Open Source Gaming Platform" -msgstr "Açık Kaynak Oyun Platformu" +#: share/applications/net.lutris.Lutris.desktop:4 +msgid "video game preservation platform" +msgstr "" + +#: share/applications/net.lutris.Lutris.desktop:6 +msgid "gaming;wine;emulator;" +msgstr "" + +#: share/metainfo/net.lutris.Lutris.metainfo.xml:11 +#: share/lutris/ui/about-dialog.ui:18 +msgid "Video game preservation platform" +msgstr "" + +#: share/metainfo/net.lutris.Lutris.metainfo.xml:14 +msgid "Main window" +msgstr "" + +#: share/metainfo/net.lutris.Lutris.metainfo.xml:18 +msgid "" +"Lutris helps you install and play video games from all eras and from most " +"gaming systems. By leveraging and combining existing emulators, engine re-" +"implementations and compatibility layers, it gives you a central interface " +"to launch all your games." +msgstr "" + +#: share/lutris/ui/about-dialog.ui:8 share/lutris/ui/lutris-window.ui:581 +msgid "About Lutris" +msgstr "Lutris Hakkında" -#: share/lutris/ui/about-dialog.ui:20 +#: share/lutris/ui/about-dialog.ui:21 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" @@ -42,7 +70,8 @@ msgstr "" "(SATILABİLİRLİK veya BELİRLİ BİR AMACA UYGUNLUK garantisi dahil)\n" "yayınlanmıştır. Daha fazla detay için GNU Genel Kamu Lisansını inceleyiniz.\n" "\n" -"Programla birlikte GNU Genel Kamu Lisansı’nın bir kopyasını almış olmalısınız. \n" +"Programla birlikte GNU Genel Kamu Lisansı’nın bir kopyasını almış " +"olmalısınız. \n" "Aksi takdirde sayfasını ziyaret ediniz.\n" #: share/lutris/ui/dialog-lutris-login.ui:8 @@ -53,6 +82,16 @@ msgstr "WineGame.net'e bağlan" msgid "Forgot password?" msgstr "Şifrenizi mi unuttunuz?" +#: share/lutris/ui/dialog-lutris-login.ui:43 lutris/gui/dialogs/issue.py:52 +#: lutris/gui/installerwindow.py:76 +#, fuzzy +msgid "C_ancel" +msgstr "Vazgeç" + +#: share/lutris/ui/dialog-lutris-login.ui:57 +msgid "_Connect" +msgstr "" + #: share/lutris/ui/dialog-lutris-login.ui:95 msgid "Password" msgstr "Şifre" @@ -61,94 +100,5113 @@ msgstr "Şifre" msgid "Username" msgstr "Kullanıcı adı" -#: share/lutris/ui/dialog-pga-sources.ui:79 -msgid "Personnal Game Archives sources" -msgstr "Kişisel Oyun Arşivi kaynakları" +#: share/lutris/ui/log-window.ui:37 +msgid "Search..." +msgstr "" -#: share/lutris/ui/dialog-uninstall-game.ui:22 -msgid "Uninstall game" -msgstr "Oyunu sil" +#: share/lutris/ui/lutris-window.ui:154 +msgid "Search games" +msgstr "" -#: share/lutris/ui/dialog-uninstall-game.ui:89 -msgid "Are you sure you want to uninstall {game}?" -msgstr "{game} adlı oyunu silmek istediğinizden emin misiniz?" +#: share/lutris/ui/lutris-window.ui:169 +msgid "Add Game" +msgstr "" -#: share/lutris/ui/dialog-uninstall-game.ui:102 -msgid "" -"Remove all data from game folder\n" -"( {path})" -msgstr "Oyuna ait all data dosyalarını tamamen sil\n" -"( {path})" +#: share/lutris/ui/lutris-window.ui:201 +msgid "Toggle View" +msgstr "" -#: share/lutris/ui/dialog-uninstall-game.ui:121 -msgid "Remove from my library" -msgstr "Kütüphanemden kaldır" +#: share/lutris/ui/lutris-window.ui:299 +msgid "Zoom:" +msgstr "" -#: share/lutris/ui/runner-entry.ui:33 -msgid "name" -msgstr "isim" +#: share/lutris/ui/lutris-window.ui:352 +msgid "Sort Ascending" +msgstr "" -#: share/lutris/ui/runner-entry.ui:52 -msgid "description" -msgstr "açıklama" +#: share/lutris/ui/lutris-window.ui:367 lutris/gui/config/common.py:113 +#: lutris/gui/views/list.py:45 lutris/gui/views/list.py:159 +msgid "Name" +msgstr "" -#: share/lutris/ui/runner-entry.ui:69 -msgid "platforms" -msgstr "platformlar" +#: share/lutris/ui/lutris-window.ui:382 lutris/gui/views/list.py:46 +msgid "Year" +msgstr "" -#: share/lutris/ui/runner-entry.ui:104 -msgid "Manage Versions" -msgstr "Sürümleri Yönet" +#: share/lutris/ui/lutris-window.ui:397 lutris/gui/views/list.py:49 +msgid "Last Played" +msgstr "" + +#: share/lutris/ui/lutris-window.ui:412 lutris/gui/views/list.py:51 +#, fuzzy +msgid "Installed At" +msgstr "Oynatıcı Yükle" + +#: share/lutris/ui/lutris-window.ui:427 lutris/gui/views/list.py:53 +msgid "Play Time" +msgstr "" + +#: share/lutris/ui/lutris-window.ui:456 +msgid "_Installed Games Only" +msgstr "" + +#: share/lutris/ui/lutris-window.ui:471 +msgid "Show _Hidden Games" +msgstr "" + +#: share/lutris/ui/lutris-window.ui:485 +msgid "Show Side _Panel" +msgstr "" + +#: share/lutris/ui/lutris-window.ui:500 +msgid "Add games" +msgstr "" + +#: share/lutris/ui/lutris-window.ui:514 +msgid "Preferences" +msgstr "" + +#: share/lutris/ui/lutris-window.ui:539 +msgid "Discord" +msgstr "" + +#: share/lutris/ui/lutris-window.ui:553 +msgid "Lutris forums" +msgstr "" + +#: share/lutris/ui/lutris-window.ui:567 +msgid "Make a donation" +msgstr "" + +#: lutris/exceptions.py:26 +#, python-brace-format +msgid "" +"The following {arch} libraries are required but are not installed on your " +"system:\n" +"{libs}" +msgstr "" + +#. Local services don't show an install dialog, they can be launched directly +#: lutris/game_actions.py:60 lutris/gui/widgets/game_bar.py:201 +#: lutris/gui/widgets/game_bar.py:215 +msgid "Play" +msgstr "" + +#: lutris/game_actions.py:61 lutris/gui/widgets/game_bar.py:207 +msgid "Stop" +msgstr "" + +#: lutris/game_actions.py:62 lutris/gui/dialogs/runner_install.py:193 +#: lutris/gui/installer/script_box.py:62 lutris/gui/widgets/game_bar.py:210 +#, fuzzy +msgid "Install" +msgstr "Oynatıcı Yükle" -#: share/lutris/ui/runner-entry.ui:127 -msgid "Install Runner" +#: lutris/game_actions.py:63 +#, fuzzy +msgid "Install updates" msgstr "Oynatıcı Yükle" -#: share/lutris/ui/runner-entry.ui:151 -msgid "Configure Runner" +#: lutris/game_actions.py:65 +msgid "Show logs" +msgstr "" + +#: lutris/game_actions.py:66 +#, fuzzy +msgid "Add installed game" +msgstr "Oyunu sil" + +#: lutris/game_actions.py:67 +msgid "Duplicate" +msgstr "" + +#: lutris/game_actions.py:68 lutris/gui/widgets/sidebar.py:205 +#, fuzzy +msgid "Configure" msgstr "Oynatıcıyı Düzenle" -#: share/lutris/ui/runner-entry.ui:174 -msgid "Remove Runner" -msgstr "Oynatıcıyı Sil" +#: lutris/game_actions.py:69 +msgid "Add to favorites" +msgstr "" -#: share/lutris/ui/runner-remove-all-versions-dialog.ui:19 -msgid "Remove ALL versions?" -msgstr "Tüm sürümler silinsin mi ?" +#: lutris/game_actions.py:70 +#, fuzzy +msgid "Remove from favorites" +msgstr "Kütüphanemden kaldır" -#: share/lutris/ui/runner-remove-all-versions-dialog.ui:23 -#: share/lutris/ui/runner-remove-confirm-dialog.ui:23 -msgid "Cancel" -msgstr "Vazgeç" +#: lutris/game_actions.py:71 +msgid "Execute script" +msgstr "" + +#: lutris/game_actions.py:72 +msgid "Browse files" +msgstr "" + +#: lutris/game_actions.py:75 lutris/gui/installerwindow.py:178 +msgid "Create desktop shortcut" +msgstr "" -#: share/lutris/ui/runner-remove-all-versions-dialog.ui:36 -#: share/lutris/ui/runner-remove-confirm-dialog.ui:19 -#: share/lutris/ui/runner-remove-confirm-dialog.ui:36 +#: lutris/game_actions.py:80 +msgid "Delete desktop shortcut" +msgstr "" + +#: lutris/game_actions.py:85 lutris/gui/installerwindow.py:182 +msgid "Create application menu shortcut" +msgstr "" + +#: lutris/game_actions.py:90 +msgid "Delete application menu shortcut" +msgstr "" + +#: lutris/game_actions.py:95 lutris/gui/installerwindow.py:187 +msgid "Create steam shortcut" +msgstr "" + +#: lutris/game_actions.py:100 +msgid "Delete steam shortcut" +msgstr "" + +#: lutris/game_actions.py:103 +msgid "Install another version" +msgstr "" + +#: lutris/game_actions.py:104 lutris/gui/dialogs/uninstall_game.py:139 msgid "Remove" msgstr "Sil" -#: share/lutris/ui/runner-remove-all-versions-dialog.ui:59 +#: lutris/game_actions.py:105 +#, fuzzy +msgid "View on Lutris.net" +msgstr "Lutris.net'e bağlan" + +#: lutris/game_actions.py:106 +#, fuzzy +msgid "Hide game from library" +msgstr "Kütüphanemden kaldır" + +#: lutris/game_actions.py:107 +#, fuzzy +msgid "Unhide game from library" +msgstr "Kütüphanemden kaldır" + +#: lutris/game_actions.py:185 +msgid "Log for {}" +msgstr "" + +#: lutris/game_actions.py:220 +#, python-format msgid "" -"This will remove ALL versions of %s.\n" -"\n" -"Use the Manage Versions button if you want to remove just one version." +"Do you wish to duplicate %s?\n" +"The configuration will be duplicated, but the games files will not be " +"duplicated." +msgstr "" + +#: lutris/game_actions.py:223 +msgid "Duplicate game?" +msgstr "" + +#: lutris/game_actions.py:284 +msgid "This game has no installation directory" +msgstr "" + +#: lutris/game_actions.py:288 +#, python-format +msgid "" +"Can't open %s \n" +"The folder doesn't exist." +msgstr "" + +#: lutris/game.py:178 +msgid "Error the runner is not installed" +msgstr "" + +#: lutris/game.py:180 +msgid "A bios file is required to run this game" +msgstr "" + +#: lutris/game.py:184 +msgid "The file {} could not be found" +msgstr "" + +#: lutris/game.py:186 +msgid "" +"This game has no executable set. The install process didn't finish properly." +msgstr "" + +#: lutris/game.py:189 +#, python-format +msgid "The file %s is not executable" +msgstr "" + +#: lutris/game.py:191 +#, python-format +msgid "The path '%s' is not set. please set it in the options." +msgstr "" + +#: lutris/game.py:193 +#, python-format +msgid "Unhandled error: %s" +msgstr "" + +#: lutris/game.py:298 +msgid "Tried to launch a game that isn't installed." +msgstr "" + +#: lutris/game.py:300 lutris/game.py:417 +msgid "Invalid game configuration: Missing runner" +msgstr "" + +#: lutris/game.py:309 +msgid "Runtime currently updating" msgstr "" -"Bu tüm ALL %s sürümlerini silecektir.\n" + +#: lutris/game.py:309 +msgid "Game might not work as expected" +msgstr "" + +#: lutris/game.py:342 +msgid "Unable to find Xephyr, install it or disable the Xephyr option" +msgstr "" + +#: lutris/game.py:398 +#, python-format +msgid "" +"The selected terminal application could not be launched:\n" +"%s" +msgstr "" + +#. The 'file' sort of gameplay_info cannot be made to use a configuration +#: lutris/game.py:434 +msgid "The runner could not find a command to apply the configuration to." +msgstr "" + +#: lutris/game.py:635 +msgid "Error lauching the game:\n" +msgstr "" + +#: lutris/game.py:727 +#, python-format +msgid "" +"Error: Missing shared library.\n" "\n" -"Sürümleri Yönet tuşuna basarak sadece bir sürümü silebilirsiniz" +"%s" +msgstr "" -#: share/lutris/ui/runner-remove-confirm-dialog.ui:59 -msgid "This will remove %s and all associated data." -msgstr "Bu tüm %s ve dosyalarını tamamen kaldıracaktır." +#: lutris/game.py:733 +msgid "" +"Error: A different Wine version is already using the same Wine prefix." +msgstr "" -#: share/lutris/ui/runners-dialog.ui:16 -msgid "Manage Runners" -msgstr "Oynatıcıları Yönet" +#: lutris/gui/addgameswindow.py:21 +msgid "Search the Lutris website for installers" +msgstr "" -#: share/lutris/ui/runners-dialog.ui:24 -msgid "Refresh Runners" -msgstr "Oynatıcıları Yenile" +#: lutris/gui/addgameswindow.py:22 +msgid "Query our website for community installers" +msgstr "" -#: share/lutris/ui/runners-dialog.ui:40 -msgid "Open Runners Folder" -msgstr "Oynatıcı Dizinini Aç" +#: lutris/gui/addgameswindow.py:27 +msgid "Scan a folder for games" +msgstr "" + +#: lutris/gui/addgameswindow.py:28 +msgid "Mass-import a folder of games" +msgstr "" + +#: lutris/gui/addgameswindow.py:33 +msgid "Install a Windows game from media" +msgstr "" + +#: lutris/gui/addgameswindow.py:34 +msgid "Launch a setup file from an optical drive or download" +msgstr "" + +#: lutris/gui/addgameswindow.py:39 +msgid "Install from a local install script" +msgstr "" + +#: lutris/gui/addgameswindow.py:40 +msgid "Run a YAML install script" +msgstr "" + +#: lutris/gui/addgameswindow.py:45 +#, fuzzy +msgid "Add locally installed game" +msgstr "Oyunu sil" + +#: lutris/gui/addgameswindow.py:46 +msgid "Manually configure a game available locally" +msgstr "" + +#: lutris/gui/addgameswindow.py:51 +msgid "Add games to Lutris" +msgstr "" + +#: lutris/gui/addgameswindow.py:126 +msgid "Search Lutris.net" +msgstr "" + +#: lutris/gui/addgameswindow.py:149 +msgid "Select folder to scan" +msgstr "" + +#: lutris/gui/addgameswindow.py:223 +msgid "No results" +msgstr "" + +#: lutris/gui/addgameswindow.py:225 +#, python-brace-format +msgid "Showing {count} results" +msgstr "" + +#: lutris/gui/addgameswindow.py:227 +#, python-brace-format +msgid "{total_count} results, only displaying first {count}" +msgstr "" + +#: lutris/gui/addgameswindow.py:243 +msgid "Select setup file" +msgstr "" + +#: lutris/gui/addgameswindow.py:245 +#, fuzzy +msgid "Game name" +msgstr "isim" + +#: lutris/gui/addgameswindow.py:249 +msgid "Continue" +msgstr "" + +#: lutris/gui/addgameswindow.py:257 +msgid "Setup file" +msgstr "" + +#: lutris/gui/addgameswindow.py:266 +msgid "Select the setup file" +msgstr "" + +#: lutris/gui/addgameswindow.py:279 +msgid "Select a Lutris installer" +msgstr "" + +#: lutris/gui/application.py:87 +msgid "" +"Running Lutris as root is not recommended and may cause unexpected issues" +msgstr "" + +#: lutris/gui/application.py:97 +msgid "Your Linux distribution is too old. Lutris won't function properly." +msgstr "" + +#: lutris/gui/application.py:102 +msgid "" +"Run a game directly by adding the parameter lutris:rungame/game-identifier.\n" +"If several games share the same identifier you can use the numerical ID " +"(displayed when running lutris --list-games) and add lutris:rungameid/" +"numerical-id.\n" +"To install a game, add lutris:install/game-identifier." +msgstr "" + +#: lutris/gui/application.py:115 +msgid "Print the version of Lutris and exit" +msgstr "" + +#: lutris/gui/application.py:123 +msgid "Show debug messages" +msgstr "" + +#: lutris/gui/application.py:131 +msgid "Install a game from a yml file" +msgstr "" + +#: lutris/gui/application.py:139 +msgid "Generate a bash script to run a game without the client" +msgstr "" + +#: lutris/gui/application.py:147 +msgid "Execute a program with the Lutris Runtime" +msgstr "" + +#: lutris/gui/application.py:155 +msgid "List all games in database" +msgstr "" + +#: lutris/gui/application.py:163 +#, fuzzy +msgid "Only list installed games" +msgstr "Oyunu sil" + +#: lutris/gui/application.py:171 +msgid "List available Steam games" +msgstr "" + +#: lutris/gui/application.py:179 +msgid "List all known Steam library folders" +msgstr "" + +#: lutris/gui/application.py:187 +#, fuzzy +msgid "List all known runners" +msgstr "Oynatıcı Yükle" + +#: lutris/gui/application.py:195 +msgid "List all known Wine versions" +msgstr "" + +#: lutris/gui/application.py:203 +#, fuzzy +msgid "Install a Runner" +msgstr "Oynatıcı Yükle" + +#: lutris/gui/application.py:211 +#, fuzzy +msgid "Uninstall a Runner" +msgstr "Oynatıcı Yükle" + +#: lutris/gui/application.py:219 +msgid "Export a game" +msgstr "" + +#: lutris/gui/application.py:227 +msgid "Import a game" +msgstr "" + +#: lutris/gui/application.py:235 +msgid "Destination path for export" +msgstr "" + +#: lutris/gui/application.py:243 +msgid "Display the list of games in JSON format" +msgstr "" + +#: lutris/gui/application.py:251 +#, fuzzy +msgid "Reinstall game" +msgstr "Oyunu sil" + +#: lutris/gui/application.py:254 +msgid "Submit an issue" +msgstr "" + +#: lutris/gui/application.py:260 +msgid "URI to open" +msgstr "" + +#: lutris/gui/application.py:489 +#, python-format +msgid "%s is not a valid URI" +msgstr "" + +#: lutris/gui/application.py:509 +#, python-format +msgid "Failed to download %s" +msgstr "" + +#: lutris/gui/application.py:517 +#, python-brace-format +msgid "download {url} to {file} started" +msgstr "" + +#: lutris/gui/application.py:528 +#, python-format +msgid "No such file: %s" +msgstr "" + +#: lutris/gui/application.py:645 +#, python-format +msgid "There is no installer available for %s." +msgstr "" + +#: lutris/gui/application.py:655 +msgid "No updates found" +msgstr "" + +#: lutris/gui/application.py:665 +msgid "No DLC found" +msgstr "" + +#: lutris/gui/config/add_game.py:11 +msgid "Add a new game" +msgstr "" + +#: lutris/gui/config/boxes.py:59 +msgid "No options available" +msgstr "" + +#: lutris/gui/config/boxes.py:105 +msgid "Reset option to global or default config" +msgstr "" + +#: lutris/gui/config/boxes.py:126 +msgid "Default: " +msgstr "" + +#: lutris/gui/config/boxes.py:130 +msgid "" +"(Italic indicates that this option is modified in a lower configuration " +"level.)" +msgstr "" + +#: lutris/gui/config/boxes.py:307 +#, python-format +msgid "%s (default)" +msgstr "" + +#: lutris/gui/config/boxes.py:391 lutris/gui/widgets/common.py:45 +msgid "Select file" +msgstr "" + +#: lutris/gui/config/boxes.py:433 +msgid "Select folder" +msgstr "" + +#: lutris/gui/config/boxes.py:473 +msgid "Add files" +msgstr "" + +#: lutris/gui/config/boxes.py:491 +msgid "Files" +msgstr "" + +#: lutris/gui/config/boxes.py:508 +msgid "Select files" +msgstr "" + +#: lutris/gui/config/boxes.py:511 +msgid "_Add" +msgstr "" + +#: lutris/gui/config/boxes.py:512 lutris/gui/dialogs/__init__.py:134 +#: lutris/gui/dialogs/__init__.py:161 lutris/gui/dialogs/issue.py:75 +#: lutris/gui/widgets/common.py:98 +#: lutris/gui/widgets/download_progress_box.py:47 +#, fuzzy +msgid "_Cancel" +msgstr "Vazgeç" + +#: lutris/gui/config/boxes.py:640 +msgid "" +"If modified, these options supersede the same options from the base runner " +"configuration." +msgstr "" + +#: lutris/gui/config/boxes.py:661 +msgid "" +"If modified, these options supersede the same options from the base runner " +"configuration, which themselves supersede the global preferences." +msgstr "" + +#: lutris/gui/config/boxes.py:667 +msgid "" +"If modified, these options supersede the same options from the global " +"preferences." +msgstr "" + +#: lutris/gui/config/common.py:28 +msgid "Select a runner in the Game Info tab" +msgstr "" + +#: lutris/gui/config/common.py:109 +msgid "Game info" +msgstr "" + +#: lutris/gui/config/common.py:124 +msgid "Identifier" +msgstr "" + +#: lutris/gui/config/common.py:133 lutris/gui/config/common.py:259 +msgid "Change" +msgstr "" + +#: lutris/gui/config/common.py:142 +msgid "Directory" +msgstr "" + +#: lutris/gui/config/common.py:148 +msgid "Move" +msgstr "" + +#: lutris/gui/config/common.py:156 lutris/gui/views/list.py:47 +#, fuzzy +msgid "Runner" +msgstr "Oynatıcıyı Sil" + +#: lutris/gui/config/common.py:177 +#, fuzzy +msgid "Remove custom banner" +msgstr "Oynatıcıyı Sil" + +#: lutris/gui/config/common.py:188 +msgid "Remove custom icon" +msgstr "" + +#: lutris/gui/config/common.py:197 +msgid "Release year" +msgstr "" + +#: lutris/gui/config/common.py:240 +msgid "Select a runner from the list" +msgstr "" + +#: lutris/gui/config/common.py:248 +msgid "Apply" +msgstr "" + +#: lutris/gui/config/common.py:296 +msgid "Game options" +msgstr "" + +#: lutris/gui/config/common.py:304 +msgid "Runner options" +msgstr "" + +#: lutris/gui/config/common.py:312 +msgid "System options" +msgstr "" + +#. Advanced settings checkbox +#: lutris/gui/config/common.py:322 +msgid "Show advanced options" +msgstr "" + +#: lutris/gui/config/common.py:330 lutris/gui/dialogs/__init__.py:268 +#: lutris/gui/dialogs/runner_install.py:186 +#: lutris/gui/dialogs/uninstall_game.py:60 +#: lutris/gui/dialogs/uninstall_game.py:135 +#: lutris/gui/widgets/download_progress_box.py:95 +msgid "Cancel" +msgstr "Vazgeç" + +#: lutris/gui/config/common.py:334 +msgid "Save" +msgstr "" + +#: lutris/gui/config/common.py:368 +msgid "" +"Are you sure you want to change the runner for this game ? This will reset " +"the full configuration for this game and is not reversible." +msgstr "" + +#: lutris/gui/config/common.py:372 +#, fuzzy +msgid "Confirm runner change" +msgstr "Oynatıcıyı Düzenle" + +#: lutris/gui/config/common.py:420 +msgid "Runner not provided" +msgstr "" + +#: lutris/gui/config/common.py:423 +msgid "Please fill in the name" +msgstr "" + +#: lutris/gui/config/common.py:426 +msgid "Steam AppID not provided" +msgstr "" + +#: lutris/gui/config/common.py:444 +msgid "The following fields have invalid values: " +msgstr "" + +#: lutris/gui/config/common.py:451 +msgid "Current configuration is not valid, ignoring save request" +msgstr "" + +#: lutris/gui/config/common.py:486 +msgid "Please choose a custom image" +msgstr "" + +#: lutris/gui/config/common.py:494 +msgid "Images" +msgstr "" + +#: lutris/gui/config/edit_game.py:10 lutris/gui/config/runner.py:11 +#, fuzzy, python-format +msgid "Configure %s" +msgstr "Oynatıcıyı Düzenle" + +#: lutris/gui/config/preferences_box.py:11 lutris/gui/config/sysinfo_box.py:11 +msgid "Minimize client when a game is launched" +msgstr "" + +#: lutris/gui/config/preferences_box.py:12 +msgid "Hide text under icons (requires restart)" +msgstr "" + +#: lutris/gui/config/preferences_box.py:13 +msgid "Show Tray Icon (requires restart)" +msgstr "" + +#: lutris/gui/config/preferences_box.py:14 +msgid "Use dark theme (requires dark theme variant for Gtk)" +msgstr "" + +#: lutris/gui/config/preferences_box.py:29 +msgid "Interface options" +msgstr "" + +#: lutris/gui/config/preferences_dialog.py:18 +msgid "Lutris settings" +msgstr "" + +#: lutris/gui/config/preferences_dialog.py:26 +msgid "Interface" +msgstr "" + +#: lutris/gui/config/preferences_dialog.py:27 lutris/gui/widgets/sidebar.py:271 +#, fuzzy +msgid "Runners" +msgstr "Oynatıcıları Yönet" + +#: lutris/gui/config/preferences_dialog.py:28 lutris/gui/widgets/sidebar.py:270 +msgid "Sources" +msgstr "" + +#: lutris/gui/config/preferences_dialog.py:29 +msgid "Hardware information" +msgstr "" + +#: lutris/gui/config/preferences_dialog.py:30 +msgid "Global options" +msgstr "" + +#: lutris/gui/config/runner_box.py:90 lutris/gui/widgets/sidebar.py:214 +#, fuzzy, python-format +msgid "Manage %s versions" +msgstr "Sürümleri Yönet" + +#: lutris/gui/config/runner_box.py:121 +#, fuzzy, python-format +msgid "Do you want to uninstall %s?" +msgstr "{game} adlı oyunu silmek istediğinizden emin misiniz?" + +#: lutris/gui/config/runner_box.py:122 +#, python-format +msgid "This will remove %s and all associated data." +msgstr "Bu tüm %s ve dosyalarını tamamen kaldıracaktır." + +#: lutris/gui/config/runners_box.py:17 +msgid "Add, remove or configure runners" +msgstr "" + +#: lutris/gui/config/runners_box.py:19 +msgid "" +"Runners are programs such as emulators, engines or translation layers " +"capable of running games." +msgstr "" + +#: lutris/gui/config/services_box.py:18 +msgid "Enable integrations with game sources" +msgstr "" + +#: lutris/gui/config/services_box.py:20 +msgid "" +"Access your game libraries from various sources. Changes require a restart " +"to take effect." +msgstr "" + +#: lutris/gui/config/sysinfo_box.py:12 +msgid "Hide text under icons" +msgstr "" + +#: lutris/gui/config/sysinfo_box.py:13 +msgid "Show Tray Icon" +msgstr "" + +#: lutris/gui/config/sysinfo_box.py:38 +msgid "Copy to clipboard" +msgstr "" + +#: lutris/gui/config/sysinfo_box.py:41 +msgid "System information" +msgstr "" + +#: lutris/gui/dialogs/cache.py:11 +msgid "Cache configuration" +msgstr "" + +#: lutris/gui/dialogs/cache.py:24 +msgid "Cache path" +msgstr "" + +#: lutris/gui/dialogs/cache.py:28 +msgid "Set the folder for the cache path" +msgstr "" + +#: lutris/gui/dialogs/cache.py:37 +msgid "" +"If provided, this location will be used by installers to cache downloaded " +"files locally for future re-use. \n" +"If left empty, the installer files are discarded after the install " +"completion." +msgstr "" + +#: lutris/gui/dialogs/download.py:12 +msgid "Downloading file" +msgstr "" + +#: lutris/gui/dialogs/download.py:15 +#, python-format +msgid "Downloading %s" +msgstr "" + +#: lutris/gui/dialogs/__init__.py:133 lutris/gui/dialogs/__init__.py:160 +#: lutris/gui/dialogs/issue.py:74 lutris/gui/dialogs/runner_install.py:63 +#: lutris/gui/widgets/common.py:98 +msgid "_OK" +msgstr "" + +#: lutris/gui/dialogs/__init__.py:151 +msgid "Please choose a file" +msgstr "" + +#: lutris/gui/dialogs/__init__.py:181 +msgid "Checking for runtime updates, please wait…" +msgstr "" + +#: lutris/gui/dialogs/__init__.py:212 +#, python-format +msgid "%s is already installed" +msgstr "" + +#: lutris/gui/dialogs/__init__.py:221 +msgid "Launch game" +msgstr "" + +#: lutris/gui/dialogs/__init__.py:225 +#, fuzzy +msgid "Install the game again" +msgstr "Oyunu sil" + +#: lutris/gui/dialogs/__init__.py:229 lutris/gui/dialogs/__init__.py:272 +#: lutris/gui/dialogs/__init__.py:360 +msgid "OK" +msgstr "" + +#: lutris/gui/dialogs/__init__.py:248 +msgid "Select game to launch" +msgstr "" + +#: lutris/gui/dialogs/__init__.py:333 +msgid "Login failed" +msgstr "" + +#: lutris/gui/dialogs/__init__.py:344 +msgid "Install script for {}" +msgstr "" + +#: lutris/gui/dialogs/__init__.py:396 +msgid "Do not display this message again." +msgstr "" + +#: lutris/gui/dialogs/__init__.py:417 +msgid "Wine is not installed on your system." +msgstr "" + +#: lutris/gui/dialogs/__init__.py:419 +msgid "" +"Having Wine installed on your system guarantees that Wine builds from Lutris " +"will have all required dependencies.\n" +"\n" +"Please follow the instructions given in the Lutris Wiki to install Wine." +msgstr "" + +#: lutris/gui/dialogs/__init__.py:445 +#, python-format +msgid "Moving %s to %s..." +msgstr "" + +#: lutris/gui/dialogs/issue.py:27 +msgid "Submit an issue" +msgstr "" + +#: lutris/gui/dialogs/issue.py:32 +msgid "" +"Describe the problem you're having in the text box below. This information " +"will be sent the Lutris team along with your system information. You can " +"also save this information locally if you are offline." +msgstr "" + +#: lutris/gui/dialogs/issue.py:55 +msgid "_Save" +msgstr "" + +#: lutris/gui/dialogs/issue.py:71 +msgid "Select a location to save the issue" +msgstr "" + +#: lutris/gui/dialogs/issue.py:91 +#, python-format +msgid "Issue saved in %s" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:29 +#, python-format +msgid "Showing games using %s" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:71 +#, python-format +msgid "Waiting for response from %s" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:87 +#, python-format +msgid "Unable to get runner versions: %s" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:101 +msgid "Unable to get runner versions from lutris.net" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:108 +#, python-format +msgid "%s version management" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:158 +#, python-format +msgid "_View %d game" +msgid_plural "_View %d games" +msgstr[0] "" +msgstr[1] "" + +#: lutris/gui/dialogs/runner_install.py:190 +#: lutris/gui/dialogs/uninstall_game.py:34 +#, fuzzy +msgid "Uninstall" +msgstr "Oyunu sil" + +#: lutris/gui/dialogs/runner_install.py:214 +#, fuzzy +msgid "Wine version usage" +msgstr "Sürümleri Yönet" + +#: lutris/gui/dialogs/runner_install.py:256 +msgid "Do you want to cancel the download?" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:257 +msgid "Download starting" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:307 +#, python-format +msgid "Version %s is not longer available" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:332 +msgid "Downloading…" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:335 +msgid "Extracting…" +msgstr "" + +#: lutris/gui/dialogs/runner_install.py:377 +msgid "Failed to retrieve the runner archive" +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:27 +#, python-format +msgid "Uninstall %s" +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:38 +msgid "No file will be deleted" +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:41 +#, python-format +msgid "The folder %s is used by other games and will be kept." +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:44 +msgid "Calculating size…" +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:48 +#, python-format +msgid "Content of %s are protected and will not be deleted." +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:76 +#, python-format +msgid "Delete %s (%s)" +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:93 +#, python-format +msgid "" +"Please confirm.\n" +"Everything under %s\n" +"will be deleted." +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:96 +msgid "Permanently delete files?" +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:103 +msgid "Uninstalling game and deleting files..." +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:105 +#, fuzzy +msgid "Uninstalling game..." +msgstr "Oyunu sil" + +#: lutris/gui/dialogs/uninstall_game.py:122 +#, python-format +msgid "Remove %s" +msgstr "" + +#: lutris/gui/dialogs/uninstall_game.py:128 +#, python-format +msgid "" +"Completely remove %s from the library?\n" +"All play time will be lost." +msgstr "" + +#: lutris/gui/dialogs/webconnect_dialog.py:106 +msgid "Loading..." +msgstr "" + +#: lutris/gui/installer/file_box.py:95 +#, python-brace-format +msgid "Steam game {appid}" +msgstr "" + +#: lutris/gui/installer/file_box.py:110 +#, python-brace-format +msgid "{file} on {host}" +msgstr "" + +#: lutris/gui/installer/file_box.py:121 +msgid "Download" +msgstr "" + +#: lutris/gui/installer/file_box.py:123 +msgid "Use Cache" +msgstr "" + +#: lutris/gui/installer/file_box.py:125 lutris/runners/steam.py:29 +#: lutris/services/steam.py:73 +msgid "Steam" +msgstr "" + +#: lutris/gui/installer/file_box.py:126 +msgid "Select File" +msgstr "" + +#: lutris/gui/installer/file_box.py:187 +msgid "Cache file for future installations" +msgstr "" + +#: lutris/gui/installer/file_box.py:206 +msgid "Source:" +msgstr "" + +#: lutris/gui/installerwindow.py:65 +msgid "Cache" +msgstr "" + +#: lutris/gui/installerwindow.py:76 +msgid "Abort and revert the installation" +msgstr "" + +#: lutris/gui/installerwindow.py:78 +msgid "_Eject" +msgstr "" + +#: lutris/gui/installerwindow.py:79 +msgid "_View source" +msgstr "" + +#: lutris/gui/installerwindow.py:80 +#, fuzzy +msgid "_Install" +msgstr "Oynatıcı Yükle" + +#: lutris/gui/installerwindow.py:81 +msgid "_Continue" +msgstr "" + +#: lutris/gui/installerwindow.py:82 +msgid "_Launch" +msgstr "" + +#: lutris/gui/installerwindow.py:83 +msgid "_Close" +msgstr "" + +#: lutris/gui/installerwindow.py:122 +#, python-format +msgid "Missing field \"%s\" in install script" +msgstr "" + +#: lutris/gui/installerwindow.py:128 +#, python-format +msgid "Install %s" +msgstr "" + +#: lutris/gui/installerwindow.py:162 +#, python-format +msgid "This game requires %s. Do you want to install it?" +msgstr "" + +#: lutris/gui/installerwindow.py:163 +msgid "Missing dependency" +msgstr "" + +#: lutris/gui/installerwindow.py:175 +msgid "Installing {}" +msgstr "" + +#: lutris/gui/installerwindow.py:196 +msgid "Select installation directory" +msgstr "" + +#: lutris/gui/installerwindow.py:246 +msgid "Autodetect" +msgstr "" + +#: lutris/gui/installerwindow.py:252 +msgid "Browse…" +msgstr "" + +#: lutris/gui/installerwindow.py:259 +msgid "Select the folder where the disc is mounted" +msgstr "" + +#: lutris/gui/installerwindow.py:320 +msgid "" +"Please review the files needed for the installation then click 'Continue'" +msgstr "" + +#: lutris/gui/installerwindow.py:358 +msgid "" +"This game has extra content. \n" +"Select which one you want and they will be available in the 'extras' folder " +"where the game is installed." +msgstr "" + +#: lutris/gui/installerwindow.py:459 +#, python-format +msgid "Unable to get files: %s" +msgstr "" + +#: lutris/gui/installerwindow.py:554 +msgid "Remove game files" +msgstr "" + +#: lutris/gui/installerwindow.py:560 +#, fuzzy +msgid "Are you sure you want to cancel the installation?" +msgstr "{game} adlı oyunu silmek istediğinizden emin misiniz?" + +#: lutris/gui/installerwindow.py:561 +msgid "Cancel installation?" +msgstr "" + +#: lutris/gui/lutriswindow.py:345 +#, python-format +msgid "Connect your %s account to access your games" +msgstr "" + +#: lutris/gui/lutriswindow.py:416 +#, python-format +msgid "No games matching '%s' found " +msgstr "" + +#: lutris/gui/lutriswindow.py:419 +msgid "Add games to your favorites to see them here." +msgstr "" + +#: lutris/gui/lutriswindow.py:421 +msgid "No installed games found. Press Ctrl+H to show all games." +msgstr "" + +#: lutris/gui/lutriswindow.py:430 +msgid "No games found" +msgstr "" + +#: lutris/gui/views/list.py:48 lutris/runners/dolphin.py:26 +#: lutris/runners/scummvm.py:178 +#, fuzzy +msgid "Platform" +msgstr "platformlar" + +#: lutris/gui/widgets/common.py:72 +msgid "Browse..." +msgstr "" + +#: lutris/gui/widgets/common.py:136 +msgid "" +"Warning! The selected path is located on a drive formatted by " +"Windows.\n" +"Games and programs installed on Windows drives usually don't work." +msgstr "" + +#: lutris/gui/widgets/common.py:144 +msgid "" +"Warning! The selected path contains files. Installation might not " +"work properly." +msgstr "" + +#: lutris/gui/widgets/common.py:152 +msgid "" +"Warning The destination folder is not writable by the current user." +msgstr "" + +#: lutris/gui/widgets/common.py:254 +msgid "Add" +msgstr "" + +#: lutris/gui/widgets/common.py:258 +msgid "Delete" +msgstr "" + +#: lutris/gui/widgets/download_progress_box.py:88 +msgid "Retry" +msgstr "" + +#: lutris/gui/widgets/download_progress_box.py:115 +msgid "Download interrupted" +msgstr "" + +#: lutris/gui/widgets/download_progress_box.py:123 +#, python-brace-format +msgid "{downloaded:0.2f} / {size:0.2f}MB ({speed:0.2f}MB/s), {time} remaining" +msgstr "" + +#: lutris/gui/widgets/game_bar.py:150 +#, python-format +msgid "" +"Platform:\n" +"%s" +msgstr "" + +#: lutris/gui/widgets/game_bar.py:159 +#, python-format +msgid "" +"Time played:\n" +"%s" +msgstr "" + +#: lutris/gui/widgets/game_bar.py:168 +#, python-format +msgid "" +"Last played:\n" +"%s" +msgstr "" + +#: lutris/gui/widgets/game_bar.py:204 +msgid "Launching" +msgstr "" + +#: lutris/gui/widgets/sidebar.py:128 lutris/gui/widgets/sidebar.py:161 +msgid "Reload" +msgstr "" + +#: lutris/gui/widgets/sidebar.py:160 lutris/gui/widgets/sidebar.py:204 +msgid "Run" +msgstr "" + +#: lutris/gui/widgets/sidebar.py:162 +msgid "Disconnect" +msgstr "" + +#: lutris/gui/widgets/sidebar.py:163 +msgid "Connect" +msgstr "" + +#: lutris/gui/widgets/sidebar.py:199 +msgid "Manage Versions" +msgstr "Sürümleri Yönet" + +#: lutris/gui/widgets/sidebar.py:269 +msgid "Library" +msgstr "" + +#: lutris/gui/widgets/sidebar.py:272 +#, fuzzy +msgid "Platforms" +msgstr "platformlar" + +#: lutris/gui/widgets/sidebar.py:316 lutris/util/system.py:27 +msgid "Games" +msgstr "" + +#: lutris/gui/widgets/sidebar.py:325 +msgid "Recent" +msgstr "" + +#: lutris/gui/widgets/sidebar.py:334 +msgid "Favorites" +msgstr "" + +#: lutris/gui/widgets/sidebar.py:342 +msgid "Running" +msgstr "" + +#: lutris/gui/widgets/status_icon.py:67 +#, fuzzy +msgid "Show Lutris" +msgstr "Lutris Hakkında" + +#: lutris/gui/widgets/status_icon.py:72 +msgid "Quit" +msgstr "" + +#: lutris/installer/commands.py:66 +#, python-brace-format +msgid "One of {params} parameter is mandatory for the {cmd} command" +msgstr "" + +#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:123 +#: lutris/installer/interpreter.py:146 +msgid " or " +msgstr "" + +#: lutris/installer/commands.py:73 +#, python-brace-format +msgid "The {param} parameter is mandatory for the {cmd} command" +msgstr "" + +#: lutris/installer/commands.py:90 +#, python-format +msgid "Invalid file '%s'. Can't make it executable" +msgstr "" + +#: lutris/installer/commands.py:103 +msgid "" +"Parameters file and command can't be used at the same time for the execute " +"command" +msgstr "" + +#: lutris/installer/commands.py:138 +msgid "No parameters supplied to execute command." +msgstr "" + +#: lutris/installer/commands.py:152 +#, python-format +msgid "Unable to find executable %s" +msgstr "" + +#: lutris/installer/commands.py:186 +#, python-format +msgid "%s does not exist" +msgstr "" + +#: lutris/installer/commands.py:192 +#, python-format +msgid "Extracting %s" +msgstr "" + +#: lutris/installer/commands.py:234 +msgid "" +"Insert or mount game disc and click Autodetect or\n" +"use Browse if the disc is mounted on a non standard location." +msgstr "" + +#: lutris/installer/commands.py:238 +#, python-format +msgid "" +"\n" +"\n" +"Lutris is looking for a mounted disk drive or image \n" +"containing the following file or folder:\n" +"%s" +msgstr "" + +#: lutris/installer/commands.py:280 +#, python-format +msgid "Source does not exist: %s" +msgstr "" + +#: lutris/installer/commands.py:306 +#, python-format +msgid "Invalid source for 'move' operation: %s" +msgstr "" + +#: lutris/installer/commands.py:325 +#, python-brace-format +msgid "" +"Can't move {src} \n" +"to destination {dst}" +msgstr "" + +#: lutris/installer/commands.py:332 +#, python-format +msgid "Rename error, source path does not exist: %s" +msgstr "" + +#: lutris/installer/commands.py:339 +#, python-format +msgid "Rename error, destination already exists: %s" +msgstr "" + +#: lutris/installer/commands.py:355 +msgid "Missing parameter src" +msgstr "" + +#: lutris/installer/commands.py:358 +msgid "Wrong value for 'src' param" +msgstr "" + +#: lutris/installer/commands.py:362 +msgid "Wrong value for 'dst' param" +msgstr "" + +#: lutris/installer/commands.py:451 +#, python-format +msgid "Command exited with code %s" +msgstr "" + +#: lutris/installer/commands.py:469 +#, python-format +msgid "Wrong value for write_file mode: '%s'" +msgstr "" + +#: lutris/installer/installer_file.py:26 +#, python-format +msgid "missing field `url` for file `%s`" +msgstr "" + +#: lutris/installer/installer_file.py:38 +#, python-format +msgid "missing field `filename` in file `%s`" +msgstr "" + +#: lutris/installer/installer_file.py:176 +msgid "Invalid checksum, expected format (type:hash) " +msgstr "" + +#: lutris/installer/installer_file.py:179 +msgid " checksum mismatch " +msgstr "" + +#: lutris/installer/installer.py:179 +msgid "Game config key must be a string" +msgstr "" + +#: lutris/installer/installer.py:228 +msgid "Invalid 'game' section" +msgstr "" + +#: lutris/installer/interpreter.py:53 +msgid "This installer doesn't have a 'script' section" +msgstr "" + +#: lutris/installer/interpreter.py:57 +msgid "" +"Invalid script: \n" +"{}" +msgstr "" + +#: lutris/installer/interpreter.py:123 lutris/installer/interpreter.py:126 +#, python-format +msgid "This installer requires %s on your system" +msgstr "" + +#: lutris/installer/interpreter.py:139 +msgid "You need to install {} before" +msgstr "" + +#: lutris/installer/interpreter.py:187 +msgid "Lutris does not have the necessary permissions to install to path:" +msgstr "" + +#: lutris/installer/interpreter.py:271 +#, python-format +msgid "Invalid runner provided %s" +msgstr "" + +#: lutris/installer/interpreter.py:297 +#, fuzzy +msgid "Installing game data" +msgstr "Oyunu sil" + +#: lutris/installer/interpreter.py:309 +msgid "Installer commands are not formatted correctly" +msgstr "" + +#: lutris/installer/interpreter.py:342 +#, python-format +msgid "The command \"%s\" does not exist." +msgstr "" + +#: lutris/installer/interpreter.py:363 +#, python-format +msgid "" +"The executable at path %s can't be found, please check the destination " +"folder.\n" +"Some parts of the installation process may have not completed successfully." +msgstr "" + +#: lutris/installer/interpreter.py:369 +msgid "Installation completed!" +msgstr "" + +#: lutris/installer/steam_installer.py:47 +#, python-format +msgid "Malformed steam path: %s" +msgstr "" + +#: lutris/runners/atari800.py:19 +msgid "Desktop resolution" +msgstr "" + +#: lutris/runners/atari800.py:25 +msgid "Atari800" +msgstr "" + +#: lutris/runners/atari800.py:26 +msgid "Atari 8bit computers" +msgstr "" + +#: lutris/runners/atari800.py:29 +msgid "Atari 400, 800 and XL emulator" +msgstr "" + +#: lutris/runners/atari800.py:41 lutris/runners/jzintv.py:19 +#: lutris/runners/libretro.py:74 lutris/runners/mame.py:78 +#: lutris/runners/mednafen.py:57 lutris/runners/mupen64plus.py:20 +#: lutris/runners/o2em.py:45 lutris/runners/openmsx.py:17 +#: lutris/runners/osmose.py:21 lutris/runners/snes9x.py:27 +#: lutris/runners/vice.py:38 lutris/runners/yuzu.py:23 +msgid "ROM file" +msgstr "" + +#: lutris/runners/atari800.py:43 +msgid "" +"The game data, commonly called a ROM image. \n" +"Supported formats: ATR, XFD, DCM, ATR.GZ, XFD.GZ and PRO." +msgstr "" + +#: lutris/runners/atari800.py:57 +msgid "BIOS location" +msgstr "" + +#: lutris/runners/atari800.py:59 +msgid "" +"A folder containing the Atari 800 BIOS files.\n" +"They are provided by Lutris so you shouldn't have to change this." +msgstr "" + +#: lutris/runners/atari800.py:70 +msgid "Emulate Atari 800" +msgstr "" + +#: lutris/runners/atari800.py:71 +msgid "Emulate Atari 800 XL" +msgstr "" + +#: lutris/runners/atari800.py:72 +msgid "Emulate Atari 320 XE (Compy Shop)" +msgstr "" + +#: lutris/runners/atari800.py:73 +msgid "Emulate Atari 320 XE (Rambo)" +msgstr "" + +#: lutris/runners/atari800.py:74 +msgid "Emulate Atari 5200" +msgstr "" + +#: lutris/runners/atari800.py:79 lutris/runners/mame.py:83 +#: lutris/runners/vice.py:88 +msgid "Machine" +msgstr "" + +#: lutris/runners/atari800.py:85 lutris/runners/easyrpg.py:144 +#: lutris/runners/hatari.py:72 lutris/runners/jzintv.py:43 +#: lutris/runners/libretro.py:94 lutris/runners/mame.py:157 +#: lutris/runners/mednafen.py:74 lutris/runners/mupen64plus.py:28 +#: lutris/runners/o2em.py:75 lutris/runners/osmose.py:34 +#: lutris/runners/pcsx2.py:26 lutris/runners/pico8.py:38 +#: lutris/runners/redream.py:25 lutris/runners/reicast.py:42 +#: lutris/runners/residualvm.py:39 lutris/runners/scummvm.py:76 +#: lutris/runners/snes9x.py:36 lutris/runners/vice.py:57 +msgid "Fullscreen" +msgstr "" + +#: lutris/runners/atari800.py:92 +msgid "Fullscreen resolution" +msgstr "" + +#: lutris/runners/atari800.py:104 +msgid "Could not download Atari 800 BIOS archive" +msgstr "" + +#: lutris/runners/dolphin.py:10 +msgid "GameCube and Wii emulator" +msgstr "" + +#: lutris/runners/dolphin.py:11 lutris/services/dolphin.py:27 +msgid "Dolphin" +msgstr "" + +#: lutris/runners/dolphin.py:12 lutris/runners/dolphin.py:27 +msgid "Nintendo GameCube" +msgstr "" + +#: lutris/runners/dolphin.py:12 lutris/runners/dolphin.py:27 +msgid "Nintendo Wii" +msgstr "" + +#: lutris/runners/dolphin.py:21 lutris/runners/pcsx2.py:18 +msgid "ISO file" +msgstr "" + +#: lutris/runners/dolphin.py:34 lutris/runners/pcsx2.py:38 +#: lutris/runners/rpcs3.py:23 +msgid "No GUI" +msgstr "" + +#: lutris/runners/dolphin.py:36 +msgid "Disable the graphical user interface." +msgstr "" + +#: lutris/runners/dolphin.py:41 +msgid "Batch" +msgstr "" + +#: lutris/runners/dolphin.py:44 +msgid "Exit Dolphin with emulator." +msgstr "" + +#: lutris/runners/dolphin.py:50 +msgid "Custom Global User Directory" +msgstr "" + +#: lutris/runners/dosbox.py:13 +msgid "DOSBox" +msgstr "" + +#: lutris/runners/dosbox.py:14 +msgid "MS-DOS emulator" +msgstr "" + +#: lutris/runners/dosbox.py:15 +msgid "MS-DOS" +msgstr "" + +#: lutris/runners/dosbox.py:23 +msgid "Main file" +msgstr "" + +#: lutris/runners/dosbox.py:25 +msgid "" +"The CONF, EXE, COM or BAT file to launch.\n" +"It can be left blank if the launch of the executable is managed in the " +"config file." +msgstr "" + +#: lutris/runners/dosbox.py:33 +msgid "Configuration file" +msgstr "" + +#: lutris/runners/dosbox.py:35 +msgid "" +"Start DOSBox with the options specified in this file. \n" +"It can have a section in which you can put commands to execute on startup. " +"Read DOSBox's documentation for more information." +msgstr "" + +#: lutris/runners/dosbox.py:44 +msgid "Command line arguments" +msgstr "" + +#: lutris/runners/dosbox.py:45 +msgid "Command line arguments used when launching DOSBox" +msgstr "" + +#: lutris/runners/dosbox.py:51 lutris/runners/linux.py:39 +#: lutris/runners/wine.py:61 +msgid "Working directory" +msgstr "" + +#: lutris/runners/dosbox.py:53 lutris/runners/linux.py:41 +#: lutris/runners/wine.py:63 +msgid "" +"The location where the game is run from.\n" +"By default, Lutris uses the directory of the executable." +msgstr "" + +#: lutris/runners/dosbox.py:61 +msgid "none" +msgstr "" + +#: lutris/runners/dosbox.py:85 lutris/runners/scummvm.py:101 +msgid "Graphic scaler" +msgstr "" + +#: lutris/runners/dosbox.py:93 lutris/runners/scummvm.py:119 +msgid "" +"The algorithm used to scale up the game's base resolution, resulting in " +"different visual styles. " +msgstr "" + +#: lutris/runners/dosbox.py:98 +msgid "Exit DOSBox with the game" +msgstr "" + +#: lutris/runners/dosbox.py:101 +msgid "Shut down DOSBox when the game is quit." +msgstr "" + +#: lutris/runners/dosbox.py:105 +msgid "Open game in fullscreen" +msgstr "" + +#: lutris/runners/dosbox.py:108 +msgid "Tells DOSBox to launch the game in fullscreen." +msgstr "" + +#: lutris/runners/easyrpg.py:10 +msgid "EasyRPG Player" +msgstr "" + +#: lutris/runners/easyrpg.py:11 +msgid "Runs RPG Maker 2000/2003 games" +msgstr "" + +#: lutris/runners/easyrpg.py:12 lutris/runners/linux.py:14 +#: lutris/runners/linux.py:16 lutris/runners/residualvm.py:15 +#: lutris/runners/scummvm.py:14 lutris/runners/steam.py:30 +#: lutris/runners/zdoom.py:15 +msgid "Linux" +msgstr "" + +#: lutris/runners/easyrpg.py:22 +msgid "Game directory" +msgstr "" + +#: lutris/runners/easyrpg.py:23 +msgid "Select the directory of the game. (required)" +msgstr "" + +#: lutris/runners/easyrpg.py:28 +msgid "Encoding" +msgstr "" + +#: lutris/runners/easyrpg.py:30 +msgid "" +"Instead of auto detecting the encoding or using the one in RPG_RT.ini, the " +"specified encoding is used. Use 'auto' for automatic detection." +msgstr "" + +#: lutris/runners/easyrpg.py:38 +msgid "Engine" +msgstr "" + +#: lutris/runners/easyrpg.py:39 +msgid "Disable auto detection of the simulated engine." +msgstr "" + +#: lutris/runners/easyrpg.py:41 lutris/runners/fsuae.py:50 +#: lutris/runners/mame.py:173 lutris/runners/wine.py:82 +#: lutris/runners/wine.py:416 +msgid "Auto" +msgstr "" + +#: lutris/runners/easyrpg.py:42 +msgid "RPG Maker 2000 engine (v1.00 - v1.10)" +msgstr "" + +#: lutris/runners/easyrpg.py:43 +msgid "RPG Maker 2000 engine (v1.50 - v1.51)" +msgstr "" + +#: lutris/runners/easyrpg.py:44 +msgid "RPG Maker 2000 (English release) engine" +msgstr "" + +#: lutris/runners/easyrpg.py:45 +msgid "RPG Maker 2003 engine (v1.00 - v1.04)" +msgstr "" + +#: lutris/runners/easyrpg.py:46 +msgid "RPG Maker 2003 engine (v1.05 - v1.09a)" +msgstr "" + +#: lutris/runners/easyrpg.py:47 +msgid "RPG Maker 2003 (English release) engine" +msgstr "" + +#: lutris/runners/easyrpg.py:54 lutris/runners/zdoom.py:46 +msgid "Save path" +msgstr "" + +#: lutris/runners/easyrpg.py:56 +msgid "" +"Instead of storing save files in the game directory they are stored in the " +"specified path. The directory must exist." +msgstr "" + +#: lutris/runners/easyrpg.py:63 +msgid "New game" +msgstr "" + +#: lutris/runners/easyrpg.py:64 +msgid "Skip the title scene and start a new game directly." +msgstr "" + +#: lutris/runners/easyrpg.py:70 +msgid "Load game ID" +msgstr "" + +#: lutris/runners/easyrpg.py:72 +msgid "Skip the title scene and load SaveXX.lsd. Set to '0' to disable." +msgstr "" + +#: lutris/runners/easyrpg.py:82 +msgid "Start map ID" +msgstr "" + +#: lutris/runners/easyrpg.py:84 +msgid "" +"Overwrite the map used for new games and use MapXXXX.lmu instead. Set to '0' " +"to disable. \n" +"\n" +"Incompatible with 'Load game ID'." +msgstr "" + +#: lutris/runners/easyrpg.py:95 +msgid "Start position" +msgstr "" + +#: lutris/runners/easyrpg.py:97 +msgid "" +"Overwrite the party start position and move the party to the specified " +"position. Provide two numbers separated by a space. \n" +"\n" +"Incompatible with 'Load game ID'." +msgstr "" + +#: lutris/runners/easyrpg.py:106 +msgid "Start party" +msgstr "" + +#: lutris/runners/easyrpg.py:108 +msgid "" +"Overwrite the starting party members with the actors with the specified IDs. " +"Provide one to four numbers separated by spaces. \n" +"\n" +"Incompatible with 'Load game ID'." +msgstr "" + +#: lutris/runners/easyrpg.py:117 +msgid "Monster party" +msgstr "" + +#: lutris/runners/easyrpg.py:118 +msgid "Start a battle test with the specified monster party." +msgstr "" + +#: lutris/runners/easyrpg.py:123 +msgid "Record input" +msgstr "" + +#: lutris/runners/easyrpg.py:124 +msgid "Records all button input to the specified log file." +msgstr "" + +#: lutris/runners/easyrpg.py:129 +msgid "Replay input" +msgstr "" + +#: lutris/runners/easyrpg.py:131 +msgid "" +"Replays button input from the specified log file, as generated by 'Record " +"input'. If the RNG seed and the state of the save file directory is also the " +"same as it was when the log was recorded, this should reproduce an identical " +"run to the one recorded." +msgstr "" + +#: lutris/runners/easyrpg.py:145 +msgid "Start in fullscreen mode." +msgstr "" + +#: lutris/runners/easyrpg.py:151 +msgid "Enable audio" +msgstr "" + +#: lutris/runners/easyrpg.py:153 +msgid "Switch off to disable audio (in case you prefer your own music)." +msgstr "" + +#: lutris/runners/easyrpg.py:161 +msgid "Enable mouse" +msgstr "" + +#: lutris/runners/easyrpg.py:163 +msgid "Use mouse click for decision and scroll wheel for lists." +msgstr "" + +#: lutris/runners/easyrpg.py:170 +msgid "Enable touch" +msgstr "" + +#: lutris/runners/easyrpg.py:171 +msgid "Use one/two finger tap for decision/cancel." +msgstr "" + +#: lutris/runners/easyrpg.py:177 +msgid "Hide title" +msgstr "" + +#: lutris/runners/easyrpg.py:179 +msgid "Hide the title background image and center the command menu." +msgstr "" + +#: lutris/runners/easyrpg.py:186 +msgid "Enable VSync" +msgstr "" + +#: lutris/runners/easyrpg.py:188 +msgid "" +"Switch off to disable VSync and use the FPS limit. VSync may or may not be " +"supported on all platforms." +msgstr "" + +#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:318 +msgid "FPS limit" +msgstr "" + +#: lutris/runners/easyrpg.py:198 +msgid "" +"Set a custom frames per second limit. If unspecified, the default is 60 FPS. " +"Set to '0' to disable the frame limiter. This option may not be supported on " +"all platforms." +msgstr "" + +#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:442 +msgid "Show FPS" +msgstr "" + +#: lutris/runners/easyrpg.py:207 +msgid "Enable frames per second counter." +msgstr "" + +#: lutris/runners/easyrpg.py:209 lutris/runners/mednafen.py:85 +#: lutris/runners/wine.py:439 +msgid "Disabled" +msgstr "" + +#: lutris/runners/easyrpg.py:210 +msgid "Fullscreen & title bar" +msgstr "" + +#: lutris/runners/easyrpg.py:211 +msgid "Fullscreen, title bar & window" +msgstr "" + +#: lutris/runners/easyrpg.py:218 +msgid "RNG seed" +msgstr "" + +#: lutris/runners/easyrpg.py:219 +msgid "Seeds the random number generator" +msgstr "" + +#: lutris/runners/easyrpg.py:224 +msgid "Test play" +msgstr "" + +#: lutris/runners/easyrpg.py:225 +msgid "Enable TestPlay mode." +msgstr "" + +#: lutris/runners/easyrpg.py:231 +msgid "Enable RTP" +msgstr "" + +#: lutris/runners/easyrpg.py:233 +msgid "Switch off to disable support for the Runtime Package (RTP)." +msgstr "" + +#: lutris/runners/easyrpg.py:240 +msgid "RPG2000 RTP location" +msgstr "" + +#: lutris/runners/easyrpg.py:242 +msgid "" +"Full path to a directory containing an extracted RPG Maker 2000 Run-Time-" +"Package (RTP)." +msgstr "" + +#: lutris/runners/easyrpg.py:249 +msgid "RPG2003 RTP location" +msgstr "" + +#: lutris/runners/easyrpg.py:251 +msgid "" +"Full path to a directory containing an extracted RPG Maker 2003 Run-Time-" +"Package (RTP)." +msgstr "" + +#: lutris/runners/easyrpg.py:258 +msgid "Fallback RTP location" +msgstr "" + +#: lutris/runners/easyrpg.py:259 +msgid "Full path to a directory containing a combined RTP." +msgstr "" + +#: lutris/runners/easyrpg.py:349 +msgid "No game directory provided" +msgstr "" + +#: lutris/runners/easyrpg.py:409 +msgid "The directory {} could not be found" +msgstr "" + +#: lutris/runners/fsuae.py:11 +msgid "FS-UAE" +msgstr "" + +#: lutris/runners/fsuae.py:12 +msgid "Amiga emulator" +msgstr "" + +#: lutris/runners/fsuae.py:14 lutris/runners/fsuae.py:25 +msgid "Amiga 500" +msgstr "" + +#: lutris/runners/fsuae.py:15 +msgid "Amiga 500+" +msgstr "" + +#: lutris/runners/fsuae.py:16 +msgid "Amiga 600" +msgstr "" + +#: lutris/runners/fsuae.py:17 +msgid "Amiga 1000" +msgstr "" + +#: lutris/runners/fsuae.py:18 lutris/runners/fsuae.py:19 +msgid "Amiga 1200" +msgstr "" + +#: lutris/runners/fsuae.py:20 +msgid "Amiga 4000" +msgstr "" + +#: lutris/runners/fsuae.py:21 lutris/runners/fsuae.py:32 +msgid "Amiga CD32" +msgstr "" + +#: lutris/runners/fsuae.py:22 lutris/runners/fsuae.py:33 +msgid "Commodore CDTV" +msgstr "" + +#: lutris/runners/fsuae.py:26 +msgid "Amiga 500+ with 1 MB chip RAM" +msgstr "" + +#: lutris/runners/fsuae.py:27 +msgid "Amiga 600 with 1 MB chip RAM" +msgstr "" + +#: lutris/runners/fsuae.py:28 +msgid "Amiga 1000 with 512 KB chip RAM" +msgstr "" + +#: lutris/runners/fsuae.py:29 +msgid "Amiga 1200 with 2 MB chip RAM" +msgstr "" + +#: lutris/runners/fsuae.py:30 +msgid "Amiga 1200 but with 68020 processor" +msgstr "" + +#: lutris/runners/fsuae.py:31 +msgid "Amiga 4000 with 2 MB chip RAM and a 68040" +msgstr "" + +#: lutris/runners/fsuae.py:36 +msgid "68000" +msgstr "" + +#: lutris/runners/fsuae.py:37 +msgid "68010" +msgstr "" + +#: lutris/runners/fsuae.py:38 +msgid "68020 with 24-bit addressing" +msgstr "" + +#: lutris/runners/fsuae.py:39 +msgid "68020" +msgstr "" + +#: lutris/runners/fsuae.py:40 +msgid "68030 without internal MMU" +msgstr "" + +#: lutris/runners/fsuae.py:41 +msgid "68030" +msgstr "" + +#: lutris/runners/fsuae.py:42 +msgid "68040 without internal FPU and MMU" +msgstr "" + +#: lutris/runners/fsuae.py:43 +msgid "68040 without internal FPU" +msgstr "" + +#: lutris/runners/fsuae.py:44 +msgid "68040 without internal MMU" +msgstr "" + +#: lutris/runners/fsuae.py:45 +msgid "68040" +msgstr "" + +#: lutris/runners/fsuae.py:46 +msgid "68060 without internal FPU and MMU" +msgstr "" + +#: lutris/runners/fsuae.py:47 +msgid "68060 without internal FPU" +msgstr "" + +#: lutris/runners/fsuae.py:48 +msgid "68060 without internal MMU" +msgstr "" + +#: lutris/runners/fsuae.py:49 +msgid "68060" +msgstr "" + +#: lutris/runners/fsuae.py:53 lutris/runners/fsuae.py:60 +#: lutris/runners/fsuae.py:94 +msgid "0" +msgstr "" + +#: lutris/runners/fsuae.py:54 lutris/runners/fsuae.py:61 +#: lutris/runners/fsuae.py:95 +msgid "1 MB" +msgstr "" + +#: lutris/runners/fsuae.py:55 lutris/runners/fsuae.py:62 +#: lutris/runners/fsuae.py:96 +msgid "2 MB" +msgstr "" + +#: lutris/runners/fsuae.py:56 lutris/runners/fsuae.py:63 +#: lutris/runners/fsuae.py:97 +msgid "4 MB" +msgstr "" + +#: lutris/runners/fsuae.py:57 lutris/runners/fsuae.py:64 +#: lutris/runners/fsuae.py:98 +msgid "8 MB" +msgstr "" + +#: lutris/runners/fsuae.py:65 lutris/runners/fsuae.py:99 +msgid "16 MB" +msgstr "" + +#: lutris/runners/fsuae.py:66 lutris/runners/fsuae.py:100 +msgid "32 MB" +msgstr "" + +#: lutris/runners/fsuae.py:67 lutris/runners/fsuae.py:101 +msgid "64 MB" +msgstr "" + +#: lutris/runners/fsuae.py:68 lutris/runners/fsuae.py:102 +msgid "128 MB" +msgstr "" + +#: lutris/runners/fsuae.py:69 lutris/runners/fsuae.py:103 +msgid "256 MB" +msgstr "" + +#: lutris/runners/fsuae.py:70 +msgid "384 MB" +msgstr "" + +#: lutris/runners/fsuae.py:71 +msgid "512 MB" +msgstr "" + +#: lutris/runners/fsuae.py:72 +msgid "768 MB" +msgstr "" + +#: lutris/runners/fsuae.py:73 +msgid "1 GB" +msgstr "" + +#: lutris/runners/fsuae.py:106 +msgid "Turbo" +msgstr "" + +#: lutris/runners/fsuae.py:117 +msgid "Boot disk" +msgstr "" + +#: lutris/runners/fsuae.py:120 +msgid "" +"The main floppy disk file with the game data. \n" +"FS-UAE supports floppy images in multiple file formats: ADF, IPF, DMS are " +"the most common. ADZ (compressed ADF) and ADFs in zip files are a also " +"supported.\n" +"Files ending in .hdf will be mounted as hard drives and ISOs can be used for " +"Amiga CD32 and CDTV models." +msgstr "" + +#: lutris/runners/fsuae.py:130 +msgid "Additionnal floppies" +msgstr "" + +#: lutris/runners/fsuae.py:132 +msgid "The additional floppy disk image(s)." +msgstr "" + +#: lutris/runners/fsuae.py:135 +msgid "CD-ROM image" +msgstr "" + +#: lutris/runners/fsuae.py:137 +msgid "CD-ROM image to use on non CD32/CDTV models" +msgstr "" + +#: lutris/runners/fsuae.py:144 +msgid "Amiga model" +msgstr "" + +#: lutris/runners/fsuae.py:148 +msgid "Specify the Amiga model you want to emulate." +msgstr "" + +#: lutris/runners/fsuae.py:152 +msgid "Kickstart ROMs location" +msgstr "" + +#: lutris/runners/fsuae.py:155 +msgid "" +"Choose the folder containing original Amiga Kickstart ROMs. Refer to FS-UAE " +"documentation to find how to acquire them. Without these, FS-UAE uses a " +"bundled replacement ROM which is less compatible with Amiga software." +msgstr "" + +#: lutris/runners/fsuae.py:164 +msgid "Extended Kickstart location" +msgstr "" + +#: lutris/runners/fsuae.py:167 +msgid "Location of extended Kickstart used for CD32" +msgstr "" + +#: lutris/runners/fsuae.py:171 +msgid "Fullscreen (F12 + S to switch)" +msgstr "" + +#: lutris/runners/fsuae.py:177 lutris/runners/o2em.py:81 +msgid "Scanlines display style" +msgstr "" + +#: lutris/runners/fsuae.py:180 lutris/runners/o2em.py:83 +msgid "" +"Activates a display filter adding scanlines to imitate the displays of " +"yesteryear." +msgstr "" + +#: lutris/runners/fsuae.py:185 +msgid "CPU" +msgstr "" + +#: lutris/runners/fsuae.py:190 +msgid "" +"Use this option to override the CPU model in the emulated Amiga. All Amiga " +"models imply a default CPU model, so you only need to use this option if you " +"want to use another CPU." +msgstr "" + +#: lutris/runners/fsuae.py:196 +msgid "Fast Memory" +msgstr "" + +#: lutris/runners/fsuae.py:201 +msgid "Specify how much Fast Memory the Amiga model should have." +msgstr "" + +#: lutris/runners/fsuae.py:205 +msgid "Zorro III RAM" +msgstr "" + +#: lutris/runners/fsuae.py:210 +msgid "" +"Override the amount of Zorro III Fast memory, specified in KB. Must be a " +"multiple of 1024. The default value depends on [amiga_model]. Requires a " +"processor with 32-bit address bus, (use for example the A1200/020 model)." +msgstr "" + +#: lutris/runners/fsuae.py:216 +msgid "Floppy Drive Volume" +msgstr "" + +#: lutris/runners/fsuae.py:221 +msgid "" +"Set volume to 0 to disable floppy drive clicks when the drive is empty. Max " +"volume is 100." +msgstr "" + +#: lutris/runners/fsuae.py:226 +msgid "Floppy Drive Speed" +msgstr "" + +#: lutris/runners/fsuae.py:232 +msgid "" +"Set the speed of the emulated floppy drives, in percent. For example, you " +"can specify 800 to get an 8x increase in speed. Use 0 to specify turbo mode. " +"Turbo mode means that all floppy operations complete immediately. The " +"default is 100 for most models." +msgstr "" + +#: lutris/runners/fsuae.py:240 +msgid "Graphics Card" +msgstr "" + +#: lutris/runners/fsuae.py:246 +msgid "" +"Use this option to enable a graphics card. This option is none by default, " +"in which case only chipset graphics (OCS/ECS/AGA) support is available." +msgstr "" + +#: lutris/runners/fsuae.py:252 +msgid "Graphics Card RAM" +msgstr "" + +#: lutris/runners/fsuae.py:258 +msgid "" +"Override the amount of graphics memory on the graphics card. The 0 MB option " +"is not really valid, but exists for user interface reasons." +msgstr "" + +#: lutris/runners/fsuae.py:264 +msgid "JIT Compiler" +msgstr "" + +#: lutris/runners/fsuae.py:271 +msgid "Feral GameMode" +msgstr "" + +#: lutris/runners/fsuae.py:275 +msgid "" +"Automatically uses Feral GameMode daemon if available. Set to true to " +"disable the feature." +msgstr "" + +#: lutris/runners/fsuae.py:280 +msgid "CPU governor warning" +msgstr "" + +#: lutris/runners/fsuae.py:285 +msgid "" +"Warn if running with a CPU governor other than performance. Set to true to " +"disable the warning." +msgstr "" + +#: lutris/runners/fsuae.py:290 +msgid "UAE bsdsocket.library" +msgstr "" + +#: lutris/runners/hatari.py:14 +msgid "Hatari" +msgstr "" + +#: lutris/runners/hatari.py:15 +msgid "Atari ST computers emulator" +msgstr "" + +#: lutris/runners/hatari.py:16 +msgid "Atari ST" +msgstr "" + +#: lutris/runners/hatari.py:28 +msgid "Floppy Disk A" +msgstr "" + +#: lutris/runners/hatari.py:30 lutris/runners/hatari.py:44 +msgid "" +"Hatari supports floppy disk images in the following formats: ST, DIM, MSA, " +"STX, IPF, RAW and CRT. The last three require the caps library (capslib). " +"ZIP is supported, you don't need to uncompress the file." +msgstr "" + +#: lutris/runners/hatari.py:42 +msgid "Floppy Disk B" +msgstr "" + +#: lutris/runners/hatari.py:52 lutris/runners/redream.py:74 +#: lutris/runners/zdoom.py:75 +msgid "None" +msgstr "" + +#: lutris/runners/hatari.py:52 +msgid "Keyboard" +msgstr "" + +#: lutris/runners/hatari.py:52 lutris/runners/o2em.py:39 +#: lutris/runners/scummvm.py:186 +msgid "Joystick" +msgstr "" + +#: lutris/runners/hatari.py:61 +msgid "Bios file (TOS)" +msgstr "" + +#: lutris/runners/hatari.py:63 +msgid "" +"TOS is the operating system of the Atari ST and is necessary to run " +"applications with the best fidelity, minimizing risks of issues.\n" +"TOS 1.02 is recommended for games." +msgstr "" + +#: lutris/runners/hatari.py:78 +msgid "Scale up display by 2 (Atari ST/STE)" +msgstr "" + +#: lutris/runners/hatari.py:80 +msgid "Double the screen size in windowed mode." +msgstr "" + +#: lutris/runners/hatari.py:88 +msgid "Add borders to display" +msgstr "" + +#: lutris/runners/hatari.py:92 +msgid "" +"Useful for some games and demos using the overscan technique. The Atari ST " +"displayed borders around the screen because it was not powerful enough to " +"display graphics in fullscreen. But people from the demo scene were able to " +"remove them and some games made use of this technique." +msgstr "" + +#: lutris/runners/hatari.py:106 +msgid "Display status bar" +msgstr "" + +#: lutris/runners/hatari.py:110 +msgid "" +"Displays a status bar with some useful information, like green leds lighting " +"up when the floppy disks are read." +msgstr "" + +#: lutris/runners/hatari.py:118 +msgid "Joystick 1" +msgstr "" + +#: lutris/runners/hatari.py:125 +msgid "Joystick 2" +msgstr "" + +#: lutris/runners/hatari.py:137 +msgid "Do you want to select an Atari ST BIOS file?" +msgstr "" + +#: lutris/runners/hatari.py:138 +msgid "Use BIOS file?" +msgstr "" + +#: lutris/runners/hatari.py:142 +msgid "Select a BIOS file" +msgstr "" + +#: lutris/runners/jzintv.py:11 +msgid "jzIntv" +msgstr "" + +#: lutris/runners/jzintv.py:12 +msgid "Intellivision Emulator" +msgstr "" + +#: lutris/runners/jzintv.py:13 +msgid "Intellivision" +msgstr "" + +#: lutris/runners/jzintv.py:22 +msgid "" +"The game data, commonly called a ROM image. \n" +"Supported formats: ROM, BIN+CFG, INT, ITV \n" +"The file extension must be lower-case." +msgstr "" + +#: lutris/runners/jzintv.py:32 +msgid "Bios location" +msgstr "" + +#: lutris/runners/jzintv.py:34 +msgid "" +"Choose the folder containing the Intellivision BIOS files (exec.bin and grom." +"bin).\n" +"These files contain code from the original hardware necessary to the " +"emulation." +msgstr "" + +#: lutris/runners/jzintv.py:48 +msgid "Resolution" +msgstr "" + +#: lutris/runners/libretro.py:65 +msgid "Libretro" +msgstr "" + +#: lutris/runners/libretro.py:66 +msgid "Multi-system emulator" +msgstr "" + +#: lutris/runners/libretro.py:79 +msgid "Core" +msgstr "" + +#: lutris/runners/libretro.py:88 lutris/runners/zdoom.py:87 +msgid "Config file" +msgstr "" + +#: lutris/runners/libretro.py:100 +msgid "Verbose logging" +msgstr "" + +#: lutris/runners/libretro.py:271 +msgid "No core has been selected for this game" +msgstr "" + +#: lutris/runners/libretro.py:282 +msgid "No game file specified" +msgstr "" + +#: lutris/runners/linux.py:15 +msgid "Runs native games" +msgstr "" + +#: lutris/runners/linux.py:24 lutris/runners/wine.py:48 +msgid "Executable" +msgstr "" + +#: lutris/runners/linux.py:25 +msgid "The game's main executable file" +msgstr "" + +#: lutris/runners/linux.py:30 lutris/runners/mame.py:124 +#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:47 +#: lutris/runners/steam.py:99 lutris/runners/wine.py:54 +#: lutris/runners/zdoom.py:27 +msgid "Arguments" +msgstr "" + +#: lutris/runners/linux.py:31 lutris/runners/mame.py:125 +#: lutris/runners/scummvm.py:32 +msgid "Command line arguments used when launching the game" +msgstr "" + +#: lutris/runners/linux.py:49 +msgid "Preload library" +msgstr "" + +#: lutris/runners/linux.py:51 +msgid "A library to load before running the game's executable." +msgstr "" + +#: lutris/runners/linux.py:59 +msgid "Add directory to LD_LIBRARY_PATH" +msgstr "" + +#: lutris/runners/linux.py:63 +msgid "" +"A directory where libraries should be searched for first, before the " +"standard set of directories; this is useful when debugging a new library or " +"using a nonstandard library for special purposes." +msgstr "" + +#: lutris/runners/mame.py:65 lutris/services/mame.py:11 +msgid "MAME" +msgstr "" + +#: lutris/runners/mame.py:66 +msgid "Arcade game emulator" +msgstr "" + +#: lutris/runners/mame.py:85 lutris/runners/mednafen.py:67 +msgid "The emulated machine." +msgstr "" + +#: lutris/runners/mame.py:90 +msgid "Storage type" +msgstr "" + +#: lutris/runners/mame.py:92 +msgid "Floppy disk" +msgstr "" + +#: lutris/runners/mame.py:93 +msgid "Floppy drive 1" +msgstr "" + +#: lutris/runners/mame.py:94 +msgid "Floppy drive 2" +msgstr "" + +#: lutris/runners/mame.py:95 +msgid "Floppy drive 3" +msgstr "" + +#: lutris/runners/mame.py:96 +msgid "Floppy drive 4" +msgstr "" + +#: lutris/runners/mame.py:97 +msgid "Cassette (tape)" +msgstr "" + +#: lutris/runners/mame.py:98 +msgid "Cassette 1 (tape)" +msgstr "" + +#: lutris/runners/mame.py:99 +msgid "Cassette 2 (tape)" +msgstr "" + +#: lutris/runners/mame.py:100 +msgid "Cartridge" +msgstr "" + +#: lutris/runners/mame.py:101 +msgid "Cartridge 1" +msgstr "" + +#: lutris/runners/mame.py:102 +msgid "Cartridge 2" +msgstr "" + +#: lutris/runners/mame.py:103 +msgid "Cartridge 3" +msgstr "" + +#: lutris/runners/mame.py:104 +msgid "Cartridge 4" +msgstr "" + +#: lutris/runners/mame.py:105 lutris/runners/mame.py:112 +msgid "Snapshot" +msgstr "" + +#: lutris/runners/mame.py:106 +msgid "Hard Disk" +msgstr "" + +#: lutris/runners/mame.py:107 +msgid "Hard Disk 1" +msgstr "" + +#: lutris/runners/mame.py:108 +msgid "Hard Disk 2" +msgstr "" + +#: lutris/runners/mame.py:109 +msgid "CD-ROM" +msgstr "" + +#: lutris/runners/mame.py:110 +msgid "CD-ROM 1" +msgstr "" + +#: lutris/runners/mame.py:111 +msgid "CD-ROM 2" +msgstr "" + +#: lutris/runners/mame.py:113 +msgid "Quickload" +msgstr "" + +#: lutris/runners/mame.py:114 +msgid "Memory Card" +msgstr "" + +#: lutris/runners/mame.py:115 +msgid "Cylinder" +msgstr "" + +#: lutris/runners/mame.py:116 +msgid "Punch Tape 1" +msgstr "" + +#: lutris/runners/mame.py:117 +msgid "Punch Tape 2" +msgstr "" + +#: lutris/runners/mame.py:118 +msgid "Print Out" +msgstr "" + +#: lutris/runners/mame.py:130 +msgid "Autoboot command" +msgstr "" + +#: lutris/runners/mame.py:131 +msgid "" +"Autotype this command when the system has started, an enter keypress is " +"automatically added." +msgstr "" + +#: lutris/runners/mame.py:137 +msgid "Delay before entering autoboot command" +msgstr "" + +#: lutris/runners/mame.py:147 +msgid "ROM/BIOS path" +msgstr "" + +#: lutris/runners/mame.py:149 +msgid "" +"Choose the folder containing ROMs and BIOS files.\n" +"These files contain code from the original hardware necessary to the " +"emulation." +msgstr "" + +#: lutris/runners/mame.py:163 +msgid "CRT effect ()" +msgstr "" + +#: lutris/runners/mame.py:164 +msgid "Applies a CRT effect to the screen.Requires OpenGL renderer." +msgstr "" + +#: lutris/runners/mame.py:171 +msgid "Video backend" +msgstr "" + +#: lutris/runners/mame.py:177 lutris/runners/residualvm.py:50 +#: lutris/runners/vice.py:82 +msgid "Software" +msgstr "" + +#: lutris/runners/mame.py:184 +msgid "Wait for VSync" +msgstr "" + +#: lutris/runners/mame.py:186 +msgid "" +"Enable waiting for the start of vblank before flipping screens; " +"reduces tearing effects." +msgstr "" + +#: lutris/runners/mame.py:194 +msgid "Menu mode key" +msgstr "" + +#: lutris/runners/mame.py:196 +msgid "Scroll Lock" +msgstr "" + +#: lutris/runners/mame.py:197 +msgid "Num Lock" +msgstr "" + +#: lutris/runners/mame.py:198 +msgid "Caps Lock" +msgstr "" + +#: lutris/runners/mame.py:199 +msgid "Menu" +msgstr "" + +#: lutris/runners/mame.py:200 +msgid "Right Control" +msgstr "" + +#: lutris/runners/mame.py:201 +msgid "Left Control" +msgstr "" + +#: lutris/runners/mame.py:202 +msgid "Right Alt" +msgstr "" + +#: lutris/runners/mame.py:203 +msgid "Left Alt" +msgstr "" + +#: lutris/runners/mame.py:204 +msgid "Right Super" +msgstr "" + +#: lutris/runners/mame.py:205 +msgid "Left Super" +msgstr "" + +#: lutris/runners/mame.py:209 +msgid "" +"Key to switch between Full Keyboard Mode and Partial Keyboard Mode (default: " +"Scroll Lock)" +msgstr "" + +#: lutris/runners/mame.py:223 lutris/runners/mame.py:265 +msgid "Arcade" +msgstr "" + +#: lutris/runners/mame.py:223 lutris/runners/mame.py:264 +msgid "Nintendo Game & Watch" +msgstr "" + +#: lutris/runners/mednafen.py:16 +msgid "Mednafen" +msgstr "" + +#: lutris/runners/mednafen.py:17 +msgid "Multi-system emulator: NES, PC Engine, PSX…" +msgstr "" + +#: lutris/runners/mednafen.py:19 +msgid "Nintendo Game Boy (Color)" +msgstr "" + +#: lutris/runners/mednafen.py:20 +msgid "Nintendo Game Boy Advance" +msgstr "" + +#: lutris/runners/mednafen.py:21 +msgid "Sega Game Gear" +msgstr "" + +#: lutris/runners/mednafen.py:22 +msgid "Sega Genesis/Mega Drive" +msgstr "" + +#: lutris/runners/mednafen.py:23 +msgid "Atari Lynx" +msgstr "" + +#: lutris/runners/mednafen.py:24 lutris/runners/osmose.py:12 +msgid "Sega Master System" +msgstr "" + +#: lutris/runners/mednafen.py:25 +msgid "SNK Neo Geo Pocket (Color)" +msgstr "" + +#: lutris/runners/mednafen.py:26 +msgid "Nintendo NES" +msgstr "" + +#: lutris/runners/mednafen.py:27 +msgid "NEC PC Engine TurboGrafx-16" +msgstr "" + +#: lutris/runners/mednafen.py:28 +msgid "NEC PC-FX" +msgstr "" + +#: lutris/runners/mednafen.py:29 +msgid "Sony PlayStation" +msgstr "" + +#: lutris/runners/mednafen.py:30 +msgid "Sega Saturn" +msgstr "" + +#: lutris/runners/mednafen.py:31 lutris/runners/snes9x.py:19 +msgid "Nintendo SNES" +msgstr "" + +#: lutris/runners/mednafen.py:32 +msgid "Bandai WonderSwan" +msgstr "" + +#: lutris/runners/mednafen.py:33 +msgid "Nintendo Virtual Boy" +msgstr "" + +#: lutris/runners/mednafen.py:36 +msgid "Game Boy (Color)" +msgstr "" + +#: lutris/runners/mednafen.py:37 +msgid "Game Boy Advance" +msgstr "" + +#: lutris/runners/mednafen.py:38 +msgid "Game Gear" +msgstr "" + +#: lutris/runners/mednafen.py:39 +msgid "Genesis/Mega Drive" +msgstr "" + +#: lutris/runners/mednafen.py:40 +msgid "Lynx" +msgstr "" + +#: lutris/runners/mednafen.py:41 +msgid "Master System" +msgstr "" + +#: lutris/runners/mednafen.py:42 +msgid "Neo Geo Pocket (Color)" +msgstr "" + +#: lutris/runners/mednafen.py:43 +msgid "NES" +msgstr "" + +#: lutris/runners/mednafen.py:44 +msgid "PC Engine" +msgstr "" + +#: lutris/runners/mednafen.py:45 +msgid "PC-FX" +msgstr "" + +#: lutris/runners/mednafen.py:46 +msgid "PlayStation" +msgstr "" + +#: lutris/runners/mednafen.py:47 +msgid "Saturn" +msgstr "" + +#: lutris/runners/mednafen.py:48 +msgid "SNES" +msgstr "" + +#: lutris/runners/mednafen.py:49 +msgid "WonderSwan" +msgstr "" + +#: lutris/runners/mednafen.py:50 +msgid "Virtual Boy" +msgstr "" + +#: lutris/runners/mednafen.py:59 +msgid "" +"The game data, commonly called a ROM image. \n" +"Mednafen supports GZIP and ZIP compressed ROMs." +msgstr "" + +#: lutris/runners/mednafen.py:65 +msgid "Machine type" +msgstr "" + +#: lutris/runners/mednafen.py:83 +msgid "Aspect ratio" +msgstr "" + +#: lutris/runners/mednafen.py:86 +msgid "Stretched" +msgstr "" + +#: lutris/runners/mednafen.py:87 lutris/runners/vice.py:69 +msgid "Preserve aspect ratio" +msgstr "" + +#: lutris/runners/mednafen.py:88 +msgid "Integer scale" +msgstr "" + +#: lutris/runners/mednafen.py:89 +msgid "Multiple of 2 scale" +msgstr "" + +#: lutris/runners/mednafen.py:100 +msgid "Video scaler" +msgstr "" + +#: lutris/runners/mednafen.py:128 +msgid "Sound device" +msgstr "" + +#: lutris/runners/mednafen.py:130 +msgid "Mednafen default" +msgstr "" + +#: lutris/runners/mednafen.py:131 +msgid "ALSA default" +msgstr "" + +#: lutris/runners/mednafen.py:142 +msgid "Use default Mednafen controller configuration" +msgstr "" + +#: lutris/runners/mupen64plus.py:12 +msgid "Mupen64Plus" +msgstr "" + +#: lutris/runners/mupen64plus.py:13 +msgid "Nintendo 64 emulator" +msgstr "" + +#: lutris/runners/mupen64plus.py:14 +msgid "Nintendo 64" +msgstr "" + +#: lutris/runners/mupen64plus.py:21 lutris/runners/o2em.py:47 +#: lutris/runners/openmsx.py:18 lutris/runners/ryujinx.py:26 +#: lutris/runners/snes9x.py:28 lutris/runners/yuzu.py:24 +msgid "The game data, commonly called a ROM image." +msgstr "" + +#: lutris/runners/mupen64plus.py:34 +msgid "Hide OSD" +msgstr "" + +#: lutris/runners/o2em.py:11 +msgid "O2EM" +msgstr "" + +#: lutris/runners/o2em.py:12 +msgid "Magnavox Odyssey² Emulator" +msgstr "" + +#: lutris/runners/o2em.py:14 lutris/runners/o2em.py:30 +msgid "Magnavox Odyssey²" +msgstr "" + +#: lutris/runners/o2em.py:15 lutris/runners/o2em.py:31 +msgid "Phillips C52" +msgstr "" + +#: lutris/runners/o2em.py:16 lutris/runners/o2em.py:32 +msgid "Phillips Videopac+" +msgstr "" + +#: lutris/runners/o2em.py:17 lutris/runners/o2em.py:33 +msgid "Brandt Jopac" +msgstr "" + +#: lutris/runners/o2em.py:36 lutris/runners/wine.py:397 +msgid "Disable" +msgstr "" + +#: lutris/runners/o2em.py:37 +msgid "Arrow Keys and Right Shift" +msgstr "" + +#: lutris/runners/o2em.py:38 +msgid "W,S,A,D,SPACE" +msgstr "" + +#: lutris/runners/o2em.py:55 +msgid "BIOS" +msgstr "" + +#: lutris/runners/o2em.py:62 +msgid "First controller" +msgstr "" + +#: lutris/runners/o2em.py:69 +msgid "Second controller" +msgstr "" + +#: lutris/runners/openmsx.py:10 +msgid "openMSX" +msgstr "" + +#: lutris/runners/openmsx.py:11 +msgid "MSX computer emulator" +msgstr "" + +#: lutris/runners/openmsx.py:12 +msgid "MSX, MSX2, MSX2+, MSX turboR" +msgstr "" + +#: lutris/runners/osmose.py:10 +msgid "Osmose" +msgstr "" + +#: lutris/runners/osmose.py:11 +msgid "Sega Master System Emulator" +msgstr "" + +#: lutris/runners/osmose.py:25 +msgid "" +"The game data, commonly called a ROM image.\n" +"Supported formats: SMS and GG files. ZIP compressed ROMs are supported." +msgstr "" + +#: lutris/runners/pcsx2.py:8 +msgid "PCSX2" +msgstr "" + +#: lutris/runners/pcsx2.py:9 +msgid "PlayStation 2 emulator" +msgstr "" + +#: lutris/runners/pcsx2.py:10 +msgid "Sony PlayStation 2" +msgstr "" + +#: lutris/runners/pcsx2.py:32 +msgid "Fullboot" +msgstr "" + +#: lutris/runners/pcsx2.py:44 +msgid "Custom config file" +msgstr "" + +#: lutris/runners/pcsx2.py:50 +msgid "Custom config path" +msgstr "" + +#: lutris/runners/pico8.py:21 +msgid "Runs PICO-8 fantasy console cartridges" +msgstr "" + +#: lutris/runners/pico8.py:23 lutris/runners/pico8.py:24 +msgid "PICO-8" +msgstr "" + +#: lutris/runners/pico8.py:29 +msgid "Cartridge file/URL/ID" +msgstr "" + +#: lutris/runners/pico8.py:30 +msgid "You can put a .p8.png file path, URL, or BBS cartridge ID here." +msgstr "" + +#: lutris/runners/pico8.py:40 +msgid "Launch in fullscreen." +msgstr "" + +#: lutris/runners/pico8.py:44 lutris/runners/web.py:45 +msgid "Window size" +msgstr "" + +#: lutris/runners/pico8.py:47 +msgid "The initial size of the game window." +msgstr "" + +#: lutris/runners/pico8.py:52 +msgid "Start in splore mode" +msgstr "" + +#: lutris/runners/pico8.py:58 +msgid "Extra arguments" +msgstr "" + +#: lutris/runners/pico8.py:60 +msgid "Extra arguments to the executable" +msgstr "" + +#: lutris/runners/pico8.py:66 +msgid "Engine (web only)" +msgstr "" + +#: lutris/runners/pico8.py:68 +msgid "Name of engine (will be downloaded) or local file path" +msgstr "" + +#: lutris/runners/pico8.py:82 +#, python-format +msgid "PICO-8 runner (%s)" +msgstr "" + +#: lutris/runners/redream.py:11 +msgid "Redream" +msgstr "" + +#: lutris/runners/redream.py:12 lutris/runners/reicast.py:18 +msgid "Sega Dreamcast emulator" +msgstr "" + +#: lutris/runners/redream.py:13 lutris/runners/reicast.py:19 +msgid "Sega Dreamcast" +msgstr "" + +#: lutris/runners/redream.py:20 lutris/runners/reicast.py:29 +msgid "Disc image file" +msgstr "" + +#: lutris/runners/redream.py:21 +msgid "" +"Game data file\n" +"Supported formats: GDI, CDI, CHD" +msgstr "" + +#: lutris/runners/redream.py:29 +msgid "Aspect Ratio" +msgstr "" + +#: lutris/runners/redream.py:30 +msgid "4:3" +msgstr "" + +#: lutris/runners/redream.py:30 +msgid "Stretch" +msgstr "" + +#: lutris/runners/redream.py:36 +msgid "Region" +msgstr "" + +#: lutris/runners/redream.py:37 +msgid "USA" +msgstr "" + +#: lutris/runners/redream.py:37 +msgid "Europe" +msgstr "" + +#: lutris/runners/redream.py:37 +msgid "Japan" +msgstr "" + +#: lutris/runners/redream.py:43 +msgid "System Language" +msgstr "" + +#: lutris/runners/redream.py:45 +msgid "English" +msgstr "" + +#: lutris/runners/redream.py:46 +msgid "German" +msgstr "" + +#: lutris/runners/redream.py:47 +msgid "French" +msgstr "" + +#: lutris/runners/redream.py:48 +msgid "Spanish" +msgstr "" + +#: lutris/runners/redream.py:49 +msgid "Italian" +msgstr "" + +#: lutris/runners/redream.py:50 +msgid "Japanese" +msgstr "" + +#: lutris/runners/redream.py:59 +msgid "NTSC" +msgstr "" + +#: lutris/runners/redream.py:60 +msgid "PAL" +msgstr "" + +#: lutris/runners/redream.py:61 +msgid "PAL-M (Brazil)" +msgstr "" + +#: lutris/runners/redream.py:62 +msgid "PAL-N (Argentina, Paraguay, Uruguay)" +msgstr "" + +#: lutris/runners/redream.py:69 +msgid "Time Sync" +msgstr "" + +#: lutris/runners/redream.py:71 +msgid "Audio and video" +msgstr "" + +#: lutris/runners/redream.py:72 +msgid "Audio" +msgstr "" + +#: lutris/runners/redream.py:73 +msgid "Video" +msgstr "" + +#: lutris/runners/redream.py:82 +msgid "Internal Video Resolution Scale" +msgstr "" + +#: lutris/runners/redream.py:95 +msgid "Only available in premium version." +msgstr "" + +#: lutris/runners/redream.py:103 +msgid "Do you want to select a premium license file?" +msgstr "" + +#: lutris/runners/redream.py:104 +msgid "Use premium version?" +msgstr "" + +#: lutris/runners/redream.py:108 +msgid "Select a license file" +msgstr "" + +#: lutris/runners/reicast.py:17 +msgid "Reicast" +msgstr "" + +#: lutris/runners/reicast.py:30 +msgid "" +"The game data.\n" +"Supported formats: ISO, CDI" +msgstr "" + +#: lutris/runners/reicast.py:48 +msgid "Gamepad 1" +msgstr "" + +#: lutris/runners/reicast.py:55 +msgid "Gamepad 2" +msgstr "" + +#: lutris/runners/reicast.py:62 +msgid "Gamepad 3" +msgstr "" + +#: lutris/runners/reicast.py:69 +msgid "Gamepad 4" +msgstr "" + +#: lutris/runners/reicast.py:84 +msgid "You have to copy valid BIOS files to ~/.reicast/data before playing" +msgstr "" + +#: lutris/runners/residualvm.py:14 +msgid "ResidualVM" +msgstr "" + +#. TODO +#: lutris/runners/residualvm.py:16 +msgid "3D point-and-click adventure games engine" +msgstr "" + +#: lutris/runners/residualvm.py:22 lutris/runners/scummvm.py:21 +msgid "Game identifier" +msgstr "" + +#: lutris/runners/residualvm.py:27 lutris/runners/scummvm.py:26 +msgid "Game files location" +msgstr "" + +#: lutris/runners/residualvm.py:31 +msgid "Enable subtitles (if the game has voice)" +msgstr "" + +#: lutris/runners/residualvm.py:45 +msgid "Renderer" +msgstr "" + +#: lutris/runners/residualvm.py:49 +msgid "OpenGL shaders" +msgstr "" + +#: lutris/runners/residualvm.py:56 +msgid "Display FPS information" +msgstr "" + +#: lutris/runners/rpcs3.py:10 +msgid "RPCS3" +msgstr "" + +#: lutris/runners/rpcs3.py:11 +msgid "PlayStation 3 emulator" +msgstr "" + +#: lutris/runners/rpcs3.py:12 +msgid "Sony PlayStation 3" +msgstr "" + +#: lutris/runners/rpcs3.py:20 +msgid "Path to EBOOT.BIN" +msgstr "" + +#: lutris/runners/runner.py:148 +msgid "Custom executable for the runner" +msgstr "" + +#: lutris/runners/runner.py:293 +msgid "" +"The required runner is not installed.\n" +"Do you wish to install it now?" +msgstr "" + +#: lutris/runners/runner.py:295 +msgid "Required runner unavailable" +msgstr "" + +#: lutris/runners/ryujinx.py:14 +msgid "Ryujinx" +msgstr "" + +#: lutris/runners/ryujinx.py:15 lutris/runners/yuzu.py:15 +msgid "Nintendo Switch" +msgstr "" + +#: lutris/runners/ryujinx.py:16 lutris/runners/yuzu.py:16 +msgid "Nintendo Switch emulator" +msgstr "" + +#: lutris/runners/ryujinx.py:25 +msgid "NSP file" +msgstr "" + +#: lutris/runners/ryujinx.py:32 lutris/runners/yuzu.py:30 +msgid "Encryption keys" +msgstr "" + +#: lutris/runners/ryujinx.py:34 lutris/runners/yuzu.py:32 +msgid "File containing the encryption keys." +msgstr "" + +#: lutris/runners/ryujinx.py:37 lutris/runners/yuzu.py:35 +msgid "Title keys" +msgstr "" + +#: lutris/runners/ryujinx.py:39 lutris/runners/yuzu.py:37 +msgid "File containing the title keys." +msgstr "" + +#: lutris/runners/scummvm.py:12 +msgid "Engine for point-and-click games." +msgstr "" + +#: lutris/runners/scummvm.py:13 lutris/services/scummvm.py:10 +msgid "ScummVM" +msgstr "" + +#: lutris/runners/scummvm.py:82 +msgid "Enable subtitles" +msgstr "" + +#: lutris/runners/scummvm.py:89 +msgid "Aspect ratio correction" +msgstr "" + +#: lutris/runners/scummvm.py:93 +msgid "" +"Most games supported by ScummVM were made for VGA display modes using " +"rectangular pixels. Activating this option for these games will preserve the " +"4:3 aspect ratio they were made for." +msgstr "" + +#: lutris/runners/scummvm.py:140 +msgid "Render mode" +msgstr "" + +#: lutris/runners/scummvm.py:157 +msgid "Changes how the game is rendered." +msgstr "" + +#: lutris/runners/scummvm.py:161 +msgid "Filtering" +msgstr "" + +#: lutris/runners/scummvm.py:163 +msgid "" +"Uses bilinear interpolation instead of nearest neighbor resampling for the " +"aspect ratio correction and stretch mode." +msgstr "" + +#: lutris/runners/scummvm.py:170 +msgid "Data directory" +msgstr "" + +#: lutris/runners/scummvm.py:172 +msgid "Defaults to share/scummvm if unspecified." +msgstr "" + +#: lutris/runners/scummvm.py:179 +msgid "" +"Specifes platform of game. Allowed values: 2gs, 3do, acorn, amiga, atari, " +"c64, fmtowns, nes, mac, pc pc98, pce, segacd, wii, windows" +msgstr "" + +#: lutris/runners/scummvm.py:187 +msgid "Enables joystick input (default: 0 = first joystick)" +msgstr "" + +#: lutris/runners/scummvm.py:193 +msgid "Language" +msgstr "" + +#: lutris/runners/scummvm.py:194 +msgid "" +"Selects language (en, de, fr, it, pt, es, jp, zh, kr, se, gb, hb, ru, cz)" +msgstr "" + +#: lutris/runners/scummvm.py:200 +msgid "Engine speed" +msgstr "" + +#: lutris/runners/scummvm.py:201 +msgid "" +"Sets frames per second limit (0 - 100) for Grim Fandango or Escape from " +"Monkey Island (default: 60)." +msgstr "" + +#: lutris/runners/scummvm.py:208 +msgid "Talk speed" +msgstr "" + +#: lutris/runners/scummvm.py:209 +msgid "Sets talk speed for games (default: 60)" +msgstr "" + +#: lutris/runners/scummvm.py:215 +msgid "Music tempo" +msgstr "" + +#: lutris/runners/scummvm.py:216 +msgid "Sets music tempo (in percent, 50-200) for SCUMM games (default: 100)" +msgstr "" + +#: lutris/runners/scummvm.py:222 +msgid "Digital iMuse tempo" +msgstr "" + +#: lutris/runners/scummvm.py:223 +msgid "Sets internal Digital iMuse tempo (10 - 100) per second (default: 10)" +msgstr "" + +#: lutris/runners/scummvm.py:228 +msgid "Music driver" +msgstr "" + +#: lutris/runners/scummvm.py:244 +msgid "Specifies the device ScummVM uses to output audio." +msgstr "" + +#: lutris/runners/scummvm.py:249 +msgid "Output rate" +msgstr "" + +#: lutris/runners/scummvm.py:256 +msgid "Selects output sample rate in Hz." +msgstr "" + +#: lutris/runners/scummvm.py:261 +msgid "OPL driver" +msgstr "" + +#: lutris/runners/scummvm.py:273 +msgid "" +"Chooses which emulator is used by ScummVM when the AdLib emulator is chosen " +"as the Preferred device." +msgstr "" + +#: lutris/runners/scummvm.py:280 +msgid "Music volume" +msgstr "" + +#: lutris/runners/scummvm.py:281 +msgid "Sets the music volume, 0-255 (default: 192)" +msgstr "" + +#: lutris/runners/scummvm.py:287 +msgid "SFX volume" +msgstr "" + +#: lutris/runners/scummvm.py:288 +msgid "Sets the sfx volume, 0-255 (default: 192)" +msgstr "" + +#: lutris/runners/scummvm.py:294 +msgid "Speech volume" +msgstr "" + +#: lutris/runners/scummvm.py:295 +msgid "Sets the speech volume, 0-255 (default: 192)" +msgstr "" + +#: lutris/runners/scummvm.py:301 +msgid "MIDI gain" +msgstr "" + +#: lutris/runners/scummvm.py:302 +msgid "Sets the gain for MIDI playback. 0-1000 (default: 100)" +msgstr "" + +#: lutris/runners/scummvm.py:308 +msgid "Soundfont" +msgstr "" + +#: lutris/runners/scummvm.py:309 +msgid "Specifies the path to a soundfont file." +msgstr "" + +#: lutris/runners/scummvm.py:314 +msgid "Mixed AdLib/MIDI mode" +msgstr "" + +#: lutris/runners/scummvm.py:317 +msgid "Combines MIDI music with AdLib sound effects." +msgstr "" + +#: lutris/runners/scummvm.py:322 +msgid "True Roland MT-32" +msgstr "" + +#: lutris/runners/scummvm.py:325 +msgid "" +"Tells ScummVM that the MIDI device is an actual Roland MT-32, LAPC-I, CM-64, " +"CM-32L, CM-500 or other MT-32 device." +msgstr "" + +#: lutris/runners/scummvm.py:331 +msgid "Enable Roland GS" +msgstr "" + +#: lutris/runners/scummvm.py:334 +msgid "" +"Tells ScummVM that the MIDI device is a GS device that has an MT-32 map, " +"such as an SC-55, SC-88 or SC-8820." +msgstr "" + +#: lutris/runners/scummvm.py:341 +msgid "Use alternate intro" +msgstr "" + +#: lutris/runners/scummvm.py:342 +msgid "Uses alternative intro for CD versions" +msgstr "" + +#: lutris/runners/scummvm.py:348 +msgid "Copy protection" +msgstr "" + +#: lutris/runners/scummvm.py:349 +msgid "Enables copy protection" +msgstr "" + +#: lutris/runners/scummvm.py:355 +msgid "Demo mode" +msgstr "" + +#: lutris/runners/scummvm.py:356 +msgid "Starts demo mode of Maniac Mansion or The 7th Guest" +msgstr "" + +#: lutris/runners/scummvm.py:362 +msgid "Debug level" +msgstr "" + +#: lutris/runners/scummvm.py:363 +msgid "Sets debug verbosity level" +msgstr "" + +#: lutris/runners/scummvm.py:369 +msgid "Debug flags" +msgstr "" + +#: lutris/runners/scummvm.py:370 +msgid "Enables engine specific debug flags" +msgstr "" + +#: lutris/runners/snes9x.py:17 +msgid "Super Nintendo emulator" +msgstr "" + +#: lutris/runners/snes9x.py:18 +msgid "Snes9x" +msgstr "" + +#: lutris/runners/snes9x.py:45 +msgid "Maintain aspect ratio (4:3)" +msgstr "" + +#: lutris/runners/snes9x.py:49 +msgid "" +"Super Nintendo games were made for 4:3 screens with rectangular pixels, but " +"modern screens have square pixels, which results in a vertically squeezed " +"image. This option corrects this by displaying rectangular pixels." +msgstr "" + +#: lutris/runners/snes9x.py:59 +msgid "Sound driver" +msgstr "" + +#: lutris/runners/steam.py:28 +msgid "Runs Steam for Linux games" +msgstr "" + +#: lutris/runners/steam.py:35 +msgid "Application ID" +msgstr "" + +#: lutris/runners/steam.py:38 +msgid "" +"The application ID can be retrieved from the game's page at steampowered." +"com. Example: 235320 is the app ID for Original War in: \n" +"http://store.steampowered.com/app/235320/" +msgstr "" + +#: lutris/runners/steam.py:49 +msgid "" +"Command line arguments used when launching the game.\n" +"Ignored when Steam Big Picture mode is enabled." +msgstr "" + +#: lutris/runners/steam.py:55 +msgid "DRM free mode (Do not launch Steam)" +msgstr "" + +#: lutris/runners/steam.py:60 +msgid "" +"Run the game directly without Steam, requires the game binary path to be set" +msgstr "" + +#: lutris/runners/steam.py:66 +msgid "Game binary path" +msgstr "" + +#: lutris/runners/steam.py:68 +msgid "Path to the game executable (Required by DRM free mode)" +msgstr "" + +#: lutris/runners/steam.py:74 +msgid "Start Steam in Big Picture mode" +msgstr "" + +#: lutris/runners/steam.py:78 +msgid "" +"Launches Steam in Big Picture mode.\n" +"Only works if Steam is not running or already running in Big Picture mode.\n" +"Useful when playing with a Steam Controller." +msgstr "" + +#: lutris/runners/steam.py:86 +msgid "Start Steam with LSI" +msgstr "" + +#: lutris/runners/steam.py:90 +msgid "" +"Launches steam with LSI patches enabled. Make sure Lutris Runtime is " +"disabled and you have LSI installed. https://github.com/solus-project/linux-" +"steam-integration" +msgstr "" + +#: lutris/runners/steam.py:101 +msgid "Extra command line arguments used when launching Steam" +msgstr "" + +#: lutris/runners/steam.py:108 +msgid "Remove game data (through Steam)" +msgstr "" + +#: lutris/runners/vice.py:13 +msgid "Commodore Emulator" +msgstr "" + +#: lutris/runners/vice.py:14 +msgid "Vice" +msgstr "" + +#: lutris/runners/vice.py:16 +msgid "Commodore 64" +msgstr "" + +#: lutris/runners/vice.py:17 +msgid "Commodore 128" +msgstr "" + +#: lutris/runners/vice.py:18 +msgid "Commodore VIC20" +msgstr "" + +#: lutris/runners/vice.py:19 +msgid "Commodore PET" +msgstr "" + +#: lutris/runners/vice.py:20 +msgid "Commodore Plus/4" +msgstr "" + +#: lutris/runners/vice.py:21 +msgid "Commodore CBM II" +msgstr "" + +#: lutris/runners/vice.py:40 +msgid "" +"The game data, commonly called a ROM image.\n" +"Supported formats: X64, D64, G64, P64, D67, D71, D81, D80, D82, D1M, D2M, " +"D4M, T46, P00 and CRT." +msgstr "" + +#: lutris/runners/vice.py:51 +msgid "Use joysticks" +msgstr "" + +#: lutris/runners/vice.py:63 +msgid "Scale up display by 2" +msgstr "" + +#: lutris/runners/vice.py:75 +msgid "Enable sound emulation of disk drives" +msgstr "" + +#: lutris/runners/vice.py:81 +msgid "Graphics renderer" +msgstr "" + +#: lutris/runners/web.py:17 lutris/runners/web.py:19 +msgid "Web" +msgstr "" + +#: lutris/runners/web.py:18 +msgid "Runs web based games" +msgstr "" + +#: lutris/runners/web.py:24 +msgid "Full URL or HTML file path" +msgstr "" + +#: lutris/runners/web.py:25 +msgid "The full address of the game's web page or path to a HTML file." +msgstr "" + +#: lutris/runners/web.py:31 +msgid "Open in fullscreen" +msgstr "" + +#: lutris/runners/web.py:34 +msgid "Launch the game in fullscreen." +msgstr "" + +#: lutris/runners/web.py:38 +msgid "Open window maximized" +msgstr "" + +#: lutris/runners/web.py:41 +msgid "Maximizes the window when game starts." +msgstr "" + +#: lutris/runners/web.py:56 +msgid "The initial size of the game window when not opened." +msgstr "" + +#: lutris/runners/web.py:60 +msgid "Disable window resizing (disables fullscreen and maximize)" +msgstr "" + +#: lutris/runners/web.py:63 +msgid "You can't resize this window." +msgstr "" + +#: lutris/runners/web.py:67 +msgid "Borderless window" +msgstr "" + +#: lutris/runners/web.py:70 +msgid "The window has no borders/frame." +msgstr "" + +#: lutris/runners/web.py:74 +msgid "Disable menu bar and default shortcuts" +msgstr "" + +#: lutris/runners/web.py:77 +msgid "" +"This also disables default keyboard shortcuts, like copy/paste and " +"fullscreen toggling." +msgstr "" + +#: lutris/runners/web.py:82 +msgid "Disable page scrolling and hide scrollbars" +msgstr "" + +#: lutris/runners/web.py:85 +msgid "Disables scrolling on the page." +msgstr "" + +#: lutris/runners/web.py:89 +msgid "Hide mouse cursor" +msgstr "" + +#: lutris/runners/web.py:92 +msgid "Prevents the mouse cursor from showing when hovering above the window." +msgstr "" + +#: lutris/runners/web.py:99 +msgid "Open links in game window" +msgstr "" + +#: lutris/runners/web.py:105 +msgid "" +"Enable this option if you want clicked links to open inside the game window. " +"By default all links open in your default web browser." +msgstr "" + +#: lutris/runners/web.py:111 +msgid "Remove default margin & padding" +msgstr "" + +#: lutris/runners/web.py:114 +msgid "" +"Sets margin and padding to zero on <html> and <body> elements." +msgstr "" + +#: lutris/runners/web.py:119 +msgid "Enable Adobe Flash Player" +msgstr "" + +#: lutris/runners/web.py:122 +msgid "Enable Adobe Flash Player." +msgstr "" + +#: lutris/runners/web.py:126 +msgid "Custom User-Agent" +msgstr "" + +#: lutris/runners/web.py:129 +msgid "Overrides the default User-Agent header used by the runner." +msgstr "" + +#: lutris/runners/web.py:134 +msgid "Debug with Developer Tools" +msgstr "" + +#: lutris/runners/web.py:137 +msgid "Let's you debug the page." +msgstr "" + +#: lutris/runners/web.py:142 +msgid "Open in web browser (old behavior)" +msgstr "" + +#: lutris/runners/web.py:145 +msgid "Launch the game in a web browser." +msgstr "" + +#: lutris/runners/web.py:151 +msgid "Custom web browser executable" +msgstr "" + +#: lutris/runners/web.py:155 +msgid "" +"Select the executable of a browser on your system.\n" +"If left blank, Lutris will launch your default browser (xdg-open)." +msgstr "" + +#: lutris/runners/web.py:163 +msgid "Web browser arguments" +msgstr "" + +#: lutris/runners/web.py:169 +msgid "" +"Command line arguments to pass to the executable.\n" +"$GAME or $URL inserts the game url.\n" +"\n" +"For Chrome/Chromium app mode use: --app=\"$GAME\"" +msgstr "" + +#: lutris/runners/web.py:191 +msgid "" +"The web address is empty, \n" +"verify the game's configuration." +msgstr "" + +#: lutris/runners/web.py:202 +#, python-format +msgid "" +"The file %s does not exist, \n" +"verify the game's configuration." +msgstr "" + +#: lutris/runners/wine.py:38 +msgid "Runs Windows games" +msgstr "" + +#: lutris/runners/wine.py:39 +msgid "Wine" +msgstr "" + +#: lutris/runners/wine.py:40 +msgid "Windows" +msgstr "" + +#: lutris/runners/wine.py:49 +msgid "The game's main EXE file" +msgstr "" + +#: lutris/runners/wine.py:55 +msgid "Windows command line arguments used when launching the game" +msgstr "" + +#: lutris/runners/wine.py:71 +msgid "Wine prefix" +msgstr "" + +#: lutris/runners/wine.py:73 +msgid "" +"The prefix used by Wine.\n" +"It's a directory containing a set of files and folders making up a confined " +"Windows environment." +msgstr "" + +#: lutris/runners/wine.py:81 +msgid "Prefix architecture" +msgstr "" + +#: lutris/runners/wine.py:82 +msgid "32-bit" +msgstr "" + +#: lutris/runners/wine.py:82 +msgid "64-bit" +msgstr "" + +#: lutris/runners/wine.py:84 +msgid "The architecture of the Windows environment" +msgstr "" + +#: lutris/runners/wine.py:112 +msgid "Custom (select executable below)" +msgstr "" + +#: lutris/runners/wine.py:114 +msgid "WineHQ Devel ({})" +msgstr "" + +#: lutris/runners/wine.py:115 +msgid "WineHQ Staging ({})" +msgstr "" + +#: lutris/runners/wine.py:116 +msgid "Wine Development ({})" +msgstr "" + +#: lutris/runners/wine.py:117 +msgid "System ({})" +msgstr "" + +#: lutris/runners/wine.py:169 +#, fuzzy +msgid "Wine version" +msgstr "Sürümleri Yönet" + +#: lutris/runners/wine.py:174 +msgid "" +"The version of Wine used to launch the game.\n" +"Using the last version is generally recommended, but some games work better " +"on older versions." +msgstr "" + +#: lutris/runners/wine.py:181 +msgid "Custom Wine executable" +msgstr "" + +#: lutris/runners/wine.py:184 +msgid "" +"The Wine executable to be used if you have selected \"Custom\" as the Wine " +"version." +msgstr "" + +#: lutris/runners/wine.py:189 +msgid "Use system winetricks" +msgstr "" + +#: lutris/runners/wine.py:193 +msgid "Switch on to use /usr/bin/winetricks for winetricks." +msgstr "" + +#: lutris/runners/wine.py:197 +msgid "Enable DXVK" +msgstr "" + +#: lutris/runners/wine.py:204 +msgid "" +"Use DXVK to increase compatibility and performance in Direct3D 11, 10 and 9 " +"applications by translating their calls to Vulkan." +msgstr "" + +#: lutris/runners/wine.py:210 +msgid "DXVK version" +msgstr "" + +#: lutris/runners/wine.py:219 +msgid "Enable VKD3D" +msgstr "" + +#: lutris/runners/wine.py:226 +msgid "" +"Use VKD3D to enable support for Direct3D 12 applications by translating " +"their calls to Vulkan." +msgstr "" + +#: lutris/runners/wine.py:231 +msgid "VKD3D version" +msgstr "" + +#: lutris/runners/wine.py:239 +msgid "Enable D3D Extras" +msgstr "" + +#: lutris/runners/wine.py:244 +msgid "" +"Replace Wine's D3DX and D3DCOMPILER libraries with alternative ones. Needed " +"for proper functionality of DXVK with some games." +msgstr "" + +#: lutris/runners/wine.py:250 +msgid "D3D Extras version" +msgstr "" + +#: lutris/runners/wine.py:258 +msgid "Enable DXVK-NVAPI / DLSS" +msgstr "" + +#: lutris/runners/wine.py:263 +msgid "Enable emulation of Nvidia's NVAPI and add DLSS support, if available." +msgstr "" + +#: lutris/runners/wine.py:268 +msgid "DXVK NVAPI version" +msgstr "" + +#: lutris/runners/wine.py:276 +msgid "Enable dgvoodoo2" +msgstr "" + +#: lutris/runners/wine.py:281 +msgid "" +"dgvoodoo2 is an alternative translation layer for rendering old games that " +"utilize D3D1-7 and Glide APIs. As it translates to D3D11, it's recommended " +"to use it in combination with DXVK. Only 32-bit apps are supported." +msgstr "" + +#: lutris/runners/wine.py:288 +msgid "dgvoodoo2 version" +msgstr "" + +#: lutris/runners/wine.py:296 +msgid "Enable Esync" +msgstr "" + +#: lutris/runners/wine.py:303 +msgid "" +"Enable eventfd-based synchronization (esync). This will increase performance " +"in applications that take advantage of multi-core processors." +msgstr "" + +#: lutris/runners/wine.py:310 +msgid "Enable Fsync" +msgstr "" + +#: lutris/runners/wine.py:317 +msgid "" +"Enable futex-based synchronization (fsync). This will increase performance " +"in applications that take advantage of multi-core processors. Requires " +"kernel 5.16 or above." +msgstr "" + +#: lutris/runners/wine.py:325 +msgid "Enable AMD FidelityFX Super Resolution (FSR)" +msgstr "" + +#: lutris/runners/wine.py:329 +msgid "" +"Use FSR to upscale the game window to native resolution.\n" +"Requires Lutris Wine FShack >= 6.13 and setting the game to a lower " +"resolution.\n" +"Does not work with games running in borderless window mode or that perform " +"their own upscaling." +msgstr "" + +#: lutris/runners/wine.py:336 +msgid "Enable BattlEye Anti-Cheat" +msgstr "" + +#: lutris/runners/wine.py:340 +msgid "" +"Enable support for BattlEye Anti-Cheat in supported games\n" +"Requires Lutris Wine 6.21-2 and newer or any other compatible Wine build.\n" +msgstr "" + +#: lutris/runners/wine.py:346 +msgid "Enable Easy Anti-Cheat" +msgstr "" + +#: lutris/runners/wine.py:350 +msgid "" +"Enable support for Easy Anti-Cheat in supported games\n" +"Requires Lutris Wine 7.2 and newer or any other compatible Wine build.\n" +msgstr "" + +#: lutris/runners/wine.py:356 +msgid "Windowed (virtual desktop)" +msgstr "" + +#: lutris/runners/wine.py:360 +msgid "" +"Run the whole Windows desktop in a window.\n" +"Otherwise, run it fullscreen.\n" +"This corresponds to Wine's Virtual Desktop option." +msgstr "" + +#: lutris/runners/wine.py:367 +msgid "Virtual desktop resolution" +msgstr "" + +#: lutris/runners/wine.py:370 +msgid "The size of the virtual desktop in pixels." +msgstr "" + +#: lutris/runners/wine.py:374 +msgid "Enable DPI Scaling" +msgstr "" + +#: lutris/runners/wine.py:378 +msgid "" +"Enables the Windows application's DPI scaling.\n" +"Otherwise, the Screen Resolution option in 'Wine configuration' controls " +"this." +msgstr "" + +#: lutris/runners/wine.py:384 +msgid "DPI" +msgstr "" + +#: lutris/runners/wine.py:387 +msgid "" +"The DPI to be used if 'Enable DPI Scaling' is turned on.\n" +"If blank or 'auto', Lutris will auto-detect this." +msgstr "" + +#: lutris/runners/wine.py:393 +msgid "Mouse Warp Override" +msgstr "" + +#: lutris/runners/wine.py:396 +msgid "Enable" +msgstr "" + +#: lutris/runners/wine.py:398 +msgid "Force" +msgstr "" + +#: lutris/runners/wine.py:403 +msgid "" +"Override the default mouse pointer warping behavior\n" +"Enable: (Wine default) warp the pointer when the mouse is exclusively " +"acquired \n" +"Disable: never warp the mouse pointer \n" +"Force: always warp the pointer" +msgstr "" + +#: lutris/runners/wine.py:412 +msgid "Audio driver" +msgstr "" + +#: lutris/runners/wine.py:423 +msgid "" +"Which audio backend to use.\n" +"By default, Wine automatically picks the right one for your system." +msgstr "" + +#: lutris/runners/wine.py:431 +msgid "DLL overrides" +msgstr "" + +#: lutris/runners/wine.py:432 +msgid "Sets WINEDLLOVERRIDES when launching the game." +msgstr "" + +#: lutris/runners/wine.py:436 +msgid "Output debugging info" +msgstr "" + +#: lutris/runners/wine.py:440 +msgid "Enabled" +msgstr "" + +#: lutris/runners/wine.py:441 +msgid "Inherit from environment" +msgstr "" + +#: lutris/runners/wine.py:443 +msgid "Full (CAUTION: Will cause MASSIVE slowdown)" +msgstr "" + +#: lutris/runners/wine.py:446 +msgid "Output debugging information in the game log (might affect performance)" +msgstr "" + +#: lutris/runners/wine.py:451 +msgid "Show crash dialogs" +msgstr "" + +#: lutris/runners/wine.py:459 +msgid "Autoconfigure joypads" +msgstr "" + +#: lutris/runners/wine.py:463 +msgid "" +"Automatically disables one of Wine's detected joypad to avoid having 2 " +"controllers detected" +msgstr "" + +#: lutris/runners/wine.py:469 +msgid "Create a sandbox for Wine folders" +msgstr "" + +#: lutris/runners/wine.py:473 +msgid "" +"Do not use $HOME for desktop integration folders.\n" +"By default, it use the directories in the confined Windows environment." +msgstr "" + +#: lutris/runners/wine.py:481 +msgid "Sandbox directory" +msgstr "" + +#: lutris/runners/wine.py:482 +msgid "Custom directory for desktop integration folders." +msgstr "" + +#: lutris/runners/wine.py:490 +msgid "Run EXE inside Wine prefix" +msgstr "" + +#: lutris/runners/wine.py:492 +msgid "Wine configuration" +msgstr "" + +#: lutris/runners/wine.py:494 +msgid "Open Bash terminal" +msgstr "" + +#: lutris/runners/wine.py:495 +#, fuzzy +msgid "Open Wine console" +msgstr "Oynatıcı Dizinini Aç" + +#: lutris/runners/wine.py:496 +msgid "Wine registry" +msgstr "" + +#: lutris/runners/wine.py:497 +msgid "Winetricks" +msgstr "" + +#: lutris/runners/wine.py:498 +msgid "Wine Control Panel" +msgstr "" + +#: lutris/runners/wine.py:661 +msgid "Select an EXE or MSI file" +msgstr "" + +#: lutris/runners/yuzu.py:14 +msgid "Yuzu" +msgstr "" + +#. http://zdoom.org/wiki/Command_line_parameters +#: lutris/runners/zdoom.py:13 +msgid "ZDoom DOOM Game Engine" +msgstr "" + +#: lutris/runners/zdoom.py:14 +msgid "ZDoom" +msgstr "" + +#: lutris/runners/zdoom.py:21 +msgid "WAD file" +msgstr "" + +#: lutris/runners/zdoom.py:22 +msgid "The game data, commonly called a WAD file." +msgstr "" + +#: lutris/runners/zdoom.py:28 +msgid "Command line arguments used when launching the game." +msgstr "" + +#: lutris/runners/zdoom.py:33 +msgid "PWAD files" +msgstr "" + +#: lutris/runners/zdoom.py:34 +msgid "" +"Used to load one or more PWAD files which generally contain user-created " +"levels." +msgstr "" + +#: lutris/runners/zdoom.py:40 +msgid "Warp to map" +msgstr "" + +#: lutris/runners/zdoom.py:41 +msgid "Starts the game on the given map." +msgstr "" + +#: lutris/runners/zdoom.py:47 +msgid "User-specified path where save files should be located." +msgstr "" + +#: lutris/runners/zdoom.py:53 +msgid "Pixel Doubling" +msgstr "" + +#: lutris/runners/zdoom.py:59 +msgid "Pixel Quadrupling" +msgstr "" + +#: lutris/runners/zdoom.py:65 +msgid "Disable Startup Screens" +msgstr "" + +#: lutris/runners/zdoom.py:71 +msgid "Skill" +msgstr "" + +#: lutris/runners/zdoom.py:76 +msgid "I'm Too Young To Die (1)" +msgstr "" + +#: lutris/runners/zdoom.py:77 +msgid "Hey, Not Too Rough (2)" +msgstr "" + +#: lutris/runners/zdoom.py:78 +msgid "Hurt Me Plenty (3)" +msgstr "" + +#: lutris/runners/zdoom.py:79 +msgid "Ultra-Violence (4)" +msgstr "" + +#: lutris/runners/zdoom.py:80 +msgid "Nightmare! (5)" +msgstr "" + +#: lutris/runners/zdoom.py:91 +msgid "" +"Used to load a user-created configuration file. If specified, the file must " +"contain the wad directory list or launch will fail." +msgstr "" + +#: lutris/services/battlenet.py:13 +msgid "Battle.net" +msgstr "" + +#: lutris/services/bethesda.py:13 +msgid "Bethesda" +msgstr "" + +#: lutris/services/egs.py:134 +msgid "Epic Games Store" +msgstr "" + +#: lutris/services/gog.py:68 +msgid "GOG" +msgstr "" + +#: lutris/services/humblebundle.py:57 +msgid "Humble Bundle" +msgstr "" + +#: lutris/services/itchio.py:13 +msgid "Itch.io (Not implemented)" +msgstr "" + +#: lutris/services/origin.py:87 +msgid "Origin" +msgstr "" + +#: lutris/services/steam.py:102 +msgid "" +"Failed to load games. Check that your profile is set to public during the " +"sync." +msgstr "" + +#: lutris/services/steamwindows.py:25 +msgid "Steam for Windows" +msgstr "" + +#: lutris/services/tosec.py:11 +msgid "TOSEC" +msgstr "" + +#: lutris/services/ubisoft.py:81 +msgid "Ubisoft Connect" +msgstr "" + +#: lutris/services/xdg.py:43 +msgid "Local" +msgstr "" + +#: lutris/settings.py:13 +msgid "(c) 2010-2022 Lutris Team" +msgstr "" + +#: lutris/settings.py:14 +msgid "The Lutris team" +msgstr "" + +#: lutris/startup.py:87 +msgid "Your NVIDIA driver is outdated." +msgstr "" + +#: lutris/startup.py:89 +#, python-format +msgid "" +"You are currently running driver %s which does not fully support all " +"features for Vulkan and DXVK games.\n" +"Please upgrade your driver as described in our installation " +"guide" +msgstr "" + +#: lutris/startup.py:120 +msgid "Missing vulkan libraries" +msgstr "" + +#: lutris/startup.py:122 +#, python-format +msgid "" +"Lutris was unable to detect Vulkan support for the %s architecture.\n" +"This will prevent many games and programs from working.\n" +"To install it, please use the following guide: Installing " +"Graphics Drivers" +msgstr "" + +#: lutris/startup.py:128 +msgid " and " +msgstr "" + +#: lutris/sysoptions.py:29 +msgid "Keep current" +msgstr "" + +#: lutris/sysoptions.py:37 lutris/sysoptions.py:46 lutris/sysoptions.py:57 +#: lutris/sysoptions.py:501 +msgid "Off" +msgstr "" + +#: lutris/sysoptions.py:38 +msgid "Primary" +msgstr "" + +#: lutris/sysoptions.py:85 +msgid "Auto: WARNING -- No Vulkan Loader detected!" +msgstr "" + +#: lutris/sysoptions.py:119 +msgid "Auto: Intel Open Source (MESA: ANV)" +msgstr "" + +#: lutris/sysoptions.py:121 +msgid "Auto: AMD RADV Open Source (MESA: RADV)" +msgstr "" + +#: lutris/sysoptions.py:123 +msgid "Auto: Nvidia Proprietary" +msgstr "" + +#: lutris/sysoptions.py:145 +msgid "Default installation folder" +msgstr "" + +#: lutris/sysoptions.py:148 +msgid "The default folder where you install your games." +msgstr "" + +#: lutris/sysoptions.py:156 +msgid "Disable Lutris Runtime" +msgstr "" + +#: lutris/sysoptions.py:159 +msgid "" +"The Lutris Runtime loads some libraries before running the game, which can " +"cause some incompatibilities in some cases. Check this option to disable it." +msgstr "" + +#: lutris/sysoptions.py:166 +msgid "Prefer system libraries" +msgstr "" + +#: lutris/sysoptions.py:168 +msgid "" +"When the runtime is enabled, prioritize the system libraries over the " +"provided ones." +msgstr "" + +#: lutris/sysoptions.py:174 +msgid "Restore resolution on game exit" +msgstr "" + +#: lutris/sysoptions.py:176 +msgid "" +"Some games don't restore your screen resolution when \n" +"closed or when they crash. This is when this option comes \n" +"into play to save your bacon." +msgstr "" + +#: lutris/sysoptions.py:183 +msgid "Enable gamescope" +msgstr "" + +#: lutris/sysoptions.py:187 +msgid "" +"Use gamescope to draw the game window isolated from your desktop.\n" +"Use Ctrl+Super+F to toggle fullscreen" +msgstr "" + +#: lutris/sysoptions.py:193 +msgid "Gamescope output resolution" +msgstr "" + +#: lutris/sysoptions.py:197 +msgid "Resolution of the window on your desktop" +msgstr "" + +#: lutris/sysoptions.py:202 +msgid "Gamescope game resolution" +msgstr "" + +#: lutris/sysoptions.py:206 +msgid "Resolution of the screen visible to the game" +msgstr "" + +#: lutris/sysoptions.py:211 +msgid "Restrict number of cores used" +msgstr "" + +#: lutris/sysoptions.py:214 +msgid "Restrict the game to a maximum number of CPU cores." +msgstr "" + +#: lutris/sysoptions.py:219 +msgid "Restrict number of cores to" +msgstr "" + +#: lutris/sysoptions.py:222 +msgid "" +"Maximum number of CPU cores to be used, if 'Restrict number of cores used' " +"is turned on." +msgstr "" + +#: lutris/sysoptions.py:228 +msgid "Restore gamma on game exit" +msgstr "" + +#: lutris/sysoptions.py:230 +msgid "" +"Some games don't correctly restores gamma on exit, making your display too " +"bright. Select this option to correct it." +msgstr "" + +#: lutris/sysoptions.py:235 +msgid "Disable desktop effects" +msgstr "" + +#: lutris/sysoptions.py:239 +msgid "" +"Disable desktop effects while game is running, reducing stuttering and " +"increasing performance" +msgstr "" + +#: lutris/sysoptions.py:244 +msgid "Disable screen saver" +msgstr "" + +#: lutris/sysoptions.py:249 +msgid "" +"Disable the screen saver while a game is running. Requires the screen " +"saver's functionality to be exposed over DBus." +msgstr "" + +#: lutris/sysoptions.py:256 +msgid "Reset PulseAudio" +msgstr "" + +#: lutris/sysoptions.py:260 +msgid "Restart PulseAudio before launching the game." +msgstr "" + +#: lutris/sysoptions.py:265 +msgid "Reduce PulseAudio latency" +msgstr "" + +#: lutris/sysoptions.py:269 +msgid "" +"Set the environment variable PULSE_LATENCY_MSEC=60 to improve audio quality " +"on some games" +msgstr "" + +#: lutris/sysoptions.py:275 +msgid "Switch to US keyboard layout" +msgstr "" + +#: lutris/sysoptions.py:278 +msgid "Switch to US keyboard QWERTY layout while game is running" +msgstr "" + +#: lutris/sysoptions.py:285 +msgid "Optimus launcher (NVIDIA Optimus laptops)" +msgstr "" + +#: lutris/sysoptions.py:287 +msgid "" +"If you have installed the primus or bumblebee packages, select what launcher " +"will run the game with the command, activating your NVIDIA graphic chip for " +"high 3D performance. primusrun normally has better performance, butoptirun/" +"virtualgl works better for more games.Primus VK provide vulkan support under " +"bumblebee." +msgstr "" + +#: lutris/sysoptions.py:299 +msgid "Vulkan ICD loader" +msgstr "" + +#: lutris/sysoptions.py:301 +msgid "" +"The ICD loader is a library that is placed between a Vulkan application and " +"any number of Vulkan drivers, in order to support multiple drivers and the " +"instance-level functionality that works across these drivers." +msgstr "" + +#: lutris/sysoptions.py:309 +msgid "FPS counter (MangoHud)" +msgstr "" + +#: lutris/sysoptions.py:312 +msgid "" +"Display the game's FPS + other information. Requires MangoHud to be " +"installed." +msgstr "" + +#: lutris/sysoptions.py:321 +msgid "Limit the game's FPS to desired number" +msgstr "" + +#: lutris/sysoptions.py:328 +msgid "Enable Feral GameMode" +msgstr "" + +#: lutris/sysoptions.py:329 +msgid "Request a set of optimisations be temporarily applied to the host OS" +msgstr "" + +#: lutris/sysoptions.py:336 +msgid "Enable NVIDIA Prime Render Offload" +msgstr "" + +#: lutris/sysoptions.py:337 +msgid "" +"If you have the latest NVIDIA driver and the properly patched xorg-server " +"(see https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/" +"primerenderoffload.html), you can launch a game on your NVIDIA GPU by " +"toggling this switch. This will apply __NV_PRIME_RENDER_OFFLOAD=1 and " +"__GLX_VENDOR_LIBRARY_NAME=nvidia environment variables." +msgstr "" + +#: lutris/sysoptions.py:348 +msgid "Use discrete graphics" +msgstr "" + +#: lutris/sysoptions.py:350 +msgid "" +"If you have open source graphic drivers (Mesa), selecting this option will " +"run the game with the 'DRI_PRIME=1' environment variable, activating your " +"discrete graphic chip for high 3D performance." +msgstr "" + +#: lutris/sysoptions.py:358 +msgid "SDL 1.2 Fullscreen Monitor" +msgstr "" + +#: lutris/sysoptions.py:362 +msgid "" +"Hint SDL 1.2 games to use a specific monitor when going fullscreen by " +"setting the SDL_VIDEO_FULLSCREEN environment variable" +msgstr "" + +#: lutris/sysoptions.py:369 +msgid "Turn off monitors except" +msgstr "" + +#: lutris/sysoptions.py:374 +msgid "" +"Only keep the selected screen active while the game is running. \n" +"This is useful if you have a dual-screen setup, and are \n" +"having display issues when running a game in fullscreen." +msgstr "" + +#: lutris/sysoptions.py:382 +msgid "Switch resolution to" +msgstr "" + +#: lutris/sysoptions.py:386 +msgid "Switch to this screen resolution while the game is running." +msgstr "" + +#: lutris/sysoptions.py:390 +msgid "CLI mode" +msgstr "" + +#: lutris/sysoptions.py:394 +msgid "" +"Enable a terminal for text-based games. Only useful for ASCII based games. " +"May cause issues with graphical games." +msgstr "" + +#: lutris/sysoptions.py:399 +msgid "Text based games emulator" +msgstr "" + +#: lutris/sysoptions.py:404 +msgid "" +"The terminal emulator used with the CLI mode. Choose from the list of " +"detected terminal apps or enter the terminal's command or path." +msgstr "" + +#: lutris/sysoptions.py:411 +msgid "Environment variables" +msgstr "" + +#: lutris/sysoptions.py:412 +msgid "Environment variables loaded at run time" +msgstr "" + +#: lutris/sysoptions.py:417 +msgid "AntiMicroX Profile" +msgstr "" + +#: lutris/sysoptions.py:419 +msgid "Path to an AntiMicroX profile file" +msgstr "" + +#: lutris/sysoptions.py:424 +msgid "Command prefix" +msgstr "" + +#: lutris/sysoptions.py:426 +msgid "" +"Command line instructions to add in front of the game's execution command." +msgstr "" + +#: lutris/sysoptions.py:432 +msgid "Manual script" +msgstr "" + +#: lutris/sysoptions.py:434 +msgid "Script to execute from the game's contextual menu" +msgstr "" + +#: lutris/sysoptions.py:439 +msgid "Pre-launch script" +msgstr "" + +#: lutris/sysoptions.py:441 +msgid "Script to execute before the game starts" +msgstr "" + +#: lutris/sysoptions.py:446 +msgid "Wait for pre-launch script completion" +msgstr "" + +#: lutris/sysoptions.py:449 +msgid "Run the game only once the pre-launch script has exited" +msgstr "" + +#: lutris/sysoptions.py:454 +msgid "Post-exit script" +msgstr "" + +#: lutris/sysoptions.py:456 +msgid "Script to execute when the game exits" +msgstr "" + +#: lutris/sysoptions.py:461 +msgid "Include processes" +msgstr "" + +#: lutris/sysoptions.py:463 +msgid "" +"What processes to include in process monitoring. This is to override the " +"built-in exclude list.\n" +"Space-separated list, processes including spaces can be wrapped in quotation " +"marks." +msgstr "" + +#: lutris/sysoptions.py:471 +msgid "Exclude processes" +msgstr "" + +#: lutris/sysoptions.py:473 +msgid "" +"What processes to exclude in process monitoring. For example background " +"processes that stick around after the game has been closed.\n" +"Space-separated list, processes including spaces can be wrapped in quotation " +"marks." +msgstr "" + +#: lutris/sysoptions.py:482 +msgid "Killswitch file" +msgstr "" + +#: lutris/sysoptions.py:484 +msgid "" +"Path to a file which will stop the game when deleted \n" +"(usually /dev/input/js0 to stop the game on joystick unplugging)" +msgstr "" + +#: lutris/sysoptions.py:491 +msgid "SDL2 gamepad mapping" +msgstr "" + +#: lutris/sysoptions.py:493 +msgid "" +"SDL_GAMECONTROLLERCONFIG mapping string or path to a custom gamecontrollerdb." +"txt file containing mappings." +msgstr "" + +#: lutris/sysoptions.py:498 +msgid "Use Xephyr" +msgstr "" + +#: lutris/sysoptions.py:502 +msgid "8BPP (256 colors)" +msgstr "" + +#: lutris/sysoptions.py:503 +msgid "16BPP (65536 colors)" +msgstr "" + +#: lutris/sysoptions.py:504 +msgid "24BPP (16M colors)" +msgstr "" + +#: lutris/sysoptions.py:508 +msgid "Run program in Xephyr to support 8BPP and 16BPP color modes" +msgstr "" + +#: lutris/sysoptions.py:513 +msgid "Xephyr resolution" +msgstr "" + +#: lutris/sysoptions.py:515 +msgid "Screen resolution of the Xephyr server" +msgstr "" + +#: lutris/sysoptions.py:520 +msgid "Xephyr Fullscreen" +msgstr "" + +#: lutris/sysoptions.py:523 +msgid "Open Xephyr in fullscreen (at the desktop resolution)" +msgstr "" + +#: lutris/util/system.py:20 +msgid "Documents" +msgstr "" + +#: lutris/util/system.py:21 +msgid "Downloads" +msgstr "" + +#: lutris/util/system.py:22 +msgid "Desktop" +msgstr "" + +#: lutris/util/system.py:23 lutris/util/system.py:25 +msgid "Pictures" +msgstr "" + +#: lutris/util/system.py:24 +msgid "Videos" +msgstr "" + +#: lutris/util/system.py:26 +msgid "Projects" +msgstr "" + +#: lutris/util/ubisoft/client.py:102 +#, python-format +msgid "Ubisoft authentication has been lost: %s" +msgstr "" + +#: lutris/util/wine/dll_manager.py:63 +msgid "Manual" +msgstr "" + +#: lutris/util/wine/wine.py:346 lutris/util/wine/wine.py:384 +#: lutris/util/wine/wine.py:404 +msgid "Launch anyway and do not show this message again." +msgstr "" + +#: lutris/util/wine/wine.py:348 lutris/util/wine/wine.py:386 +#: lutris/util/wine/wine.py:406 +msgid "Enable anyway and do not show this message again." +msgstr "" + +#: lutris/util/wine/wine.py:353 +msgid "Vulkan is not installed or is not supported by your system" +msgstr "" + +#: lutris/util/wine/wine.py:355 +msgid "" +"If you have compatible hardware, please follow the installation procedures " +"as described in\n" +"How-to:-" +"DXVK (https://github.com/lutris/docs/blob/master/HowToDXVK.md)" +msgstr "" + +#: lutris/util/wine/wine.py:367 +msgid "" +"Your limits are not set correctly. Please increase them as described here: " +"How-to:-" +"Esync (https://github.com/lutris/docs/blob/master/HowToEsync.md)" +msgstr "" + +#: lutris/util/wine/wine.py:376 +msgid "" +"Your kernel is not patched for fsync. Please get a patched kernel to use " +"fsync." +msgstr "" + +#: lutris/util/wine/wine.py:390 lutris/util/wine/wine.py:410 +msgid "Incompatible Wine version detected" +msgstr "" + +#: lutris/util/wine/wine.py:392 +msgid "" +"The Wine build you have selected does not support Esync.\n" +"Please switch to an Esync-capable version." +msgstr "" + +#: lutris/util/wine/wine.py:412 +msgid "" +"The Wine build you have selected does not support Fsync.\n" +"Please switch to an Fsync-capable version." +msgstr "" + +#~ msgid "Open Source Gaming Platform" +#~ msgstr "Açık Kaynak Oyun Platformu" + +#~ msgid "Personnal Game Archives sources" +#~ msgstr "Kişisel Oyun Arşivi kaynakları" + +#~ msgid "" +#~ "Remove all data from game folder\n" +#~ "( {path})" +#~ msgstr "" +#~ "Oyuna ait all data dosyalarını tamamen sil\n" +#~ "( {path})" + +#~ msgid "description" +#~ msgstr "açıklama" + +#~ msgid "Remove ALL versions?" +#~ msgstr "Tüm sürümler silinsin mi ?" + +#~ msgid "" +#~ "This will remove ALL versions of %s.\n" +#~ "\n" +#~ "Use the Manage Versions button if you want to remove just one version." +#~ msgstr "" +#~ "Bu tüm ALL %s sürümlerini silecektir.\n" +#~ "\n" +#~ "Sürümleri Yönet tuşuna basarak sadece bir sürümü silebilirsiniz" + +#~ msgid "Refresh Runners" +#~ msgstr "Oynatıcıları Yenile" diff --git a/po/zh_CN.po b/po/zh_CN.po index e5e17b394add5e51c727ab73c12471453a27a6b1..0a1b095684309c50ff66d8d7a07d62bd6c3e04fc 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: lutris\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-15 01:35+0800\n" -"PO-Revision-Date: 2022-06-15 01:42+0800\n" +"POT-Creation-Date: 2022-10-23 21:26+0800\n" +"PO-Revision-Date: 2022-10-23 21:49+0800\n" "Last-Translator: Yidaozhan Ya \n" "Language-Team: Chinese \n" "Language: zh_CN\n" @@ -16,14 +16,12 @@ msgstr "" #: share/applications/net.lutris.Lutris.desktop:3 #: share/metainfo/net.lutris.Lutris.metainfo.xml:10 -#: share/lutris/ui/lutris-window.ui:25 lutris/gui/application.py:76 -#: lutris/gui/widgets/status_icon.py:116 lutris/services/lutris.py:39 -msgid "WineGame" -msgstr "Wine游戏助手" +msgid "Lutris" +msgstr "Lutris" #: share/applications/net.lutris.Lutris.desktop:4 -msgid "video game preservation platform" -msgstr "电子游戏保管平台" +msgid "Video Game Preservation Platform" +msgstr "电子游戏保存平台" #: share/applications/net.lutris.Lutris.desktop:6 msgid "gaming;wine;emulator;" @@ -53,14 +51,20 @@ msgid "" "implementations and compatibility layers, it gives you a central interface " "to launch all your games." msgstr "" -"Wine游戏助手可帮您安装和运行大多数平台上几乎所有时代的电子游戏。通过对现有的模拟" -"器、兼容层、第三方游戏引擎等进行整合利用,Wine游戏助手可为您提供一个统一的界面来启" -"动您的所有游戏。" +"Wine游戏助手可帮您安装和运行大多数平台上几乎所有时代的电子游戏。通过对现有的" +"模拟器、兼容层、第三方游戏引擎等进行整合利用,Wine游戏助手可为您提供一个统一" +"的界面来启动您的所有游戏。" -#: share/lutris/ui/about-dialog.ui:8 share/lutris/ui/lutris-window.ui:581 +#: share/lutris/ui/about-dialog.ui:8 share/lutris/ui/lutris-window.ui:582 msgid "About WineGame" msgstr "关于Wine游戏助手" +#: share/lutris/ui/about-dialog.ui:16 share/lutris/ui/lutris-window.ui:25 +#: lutris/gui/application.py:77 lutris/gui/widgets/status_icon.py:127 +#: lutris/services/lutris.py:39 +msgid "WineGame" +msgstr "Wine游戏助手" + #: share/lutris/ui/about-dialog.ui:21 msgid "" "This program is free software: you can redistribute it and/or modify\n" @@ -109,8 +113,8 @@ msgstr "登录 winegame.net" msgid "Forgot password?" msgstr "忘记密码?" -#: share/lutris/ui/dialog-lutris-login.ui:43 lutris/gui/dialogs/issue.py:52 -#: lutris/gui/installerwindow.py:76 +#: share/lutris/ui/dialog-lutris-login.ui:43 lutris/gui/dialogs/issue.py:49 +#: lutris/gui/installerwindow.py:78 msgid "C_ancel" msgstr "取消 (_A)" @@ -126,7 +130,7 @@ msgstr "密码" msgid "Username" msgstr "用户名" -#: share/lutris/ui/log-window.ui:37 +#: share/lutris/ui/log-window.ui:36 msgid "Search..." msgstr "搜索..." @@ -143,14 +147,14 @@ msgid "Toggle View" msgstr "切换显示模式" #: share/lutris/ui/lutris-window.ui:299 -msgid "Zoom:" -msgstr "缩放:" +msgid "Zoom " +msgstr "缩放 " #: share/lutris/ui/lutris-window.ui:352 msgid "Sort Ascending" msgstr "升序/降序" -#: share/lutris/ui/lutris-window.ui:367 lutris/gui/config/common.py:113 +#: share/lutris/ui/lutris-window.ui:367 lutris/gui/config/common.py:114 #: lutris/gui/views/list.py:45 lutris/gui/views/list.py:159 msgid "Name" msgstr "名称" @@ -179,27 +183,27 @@ msgstr "仅显示已安装游戏 (_I)" msgid "Show _Hidden Games" msgstr "显示已隐藏的游戏 (_H)" -#: share/lutris/ui/lutris-window.ui:485 +#: share/lutris/ui/lutris-window.ui:486 msgid "Show Side _Panel" msgstr "显示边栏 (_P)" -#: share/lutris/ui/lutris-window.ui:500 +#: share/lutris/ui/lutris-window.ui:501 msgid "Add games" msgstr "添加游戏" -#: share/lutris/ui/lutris-window.ui:514 +#: share/lutris/ui/lutris-window.ui:515 msgid "Preferences" msgstr "首选项" -#: share/lutris/ui/lutris-window.ui:539 +#: share/lutris/ui/lutris-window.ui:540 msgid "QQ/WeChat" msgstr "QQ群/微信群" -#: share/lutris/ui/lutris-window.ui:553 +#: share/lutris/ui/lutris-window.ui:554 msgid "WineGame forums" msgstr "官方论坛" -#: share/lutris/ui/lutris-window.ui:567 +#: share/lutris/ui/lutris-window.ui:568 msgid "View game list" msgstr "浏览游戏列表" @@ -210,8 +214,8 @@ msgid "" "system:\n" "{libs}" msgstr "" -"系统内缺少以下必需的 {arch} 库,请使用软件包管理器安装它们,然后重新启动" -"Wine游戏助手:\n" +"系统内缺少以下必需的 {arch} 库,请使用软件包管理器安装它们,然后重新启动Wine" +"游戏助手:\n" "{libs}" #. Local services don't show an install dialog, they can be launched directly @@ -224,7 +228,7 @@ msgstr "启动" msgid "Stop" msgstr "停止" -#: lutris/game_actions.py:62 lutris/gui/dialogs/runner_install.py:193 +#: lutris/game_actions.py:62 lutris/gui/dialogs/runner_install.py:210 #: lutris/gui/installer/script_box.py:62 lutris/gui/widgets/game_bar.py:210 msgid "Install" msgstr "安装" @@ -293,7 +297,7 @@ msgstr "删除 Steam 快捷方式" msgid "Install another version" msgstr "安装其他版本" -#: lutris/game_actions.py:104 lutris/gui/dialogs/uninstall_game.py:139 +#: lutris/game_actions.py:104 lutris/gui/dialogs/uninstall_game.py:109 msgid "Remove" msgstr "卸载" @@ -340,59 +344,63 @@ msgstr "" "无法打开 %s \n" "目录不存在。" -#: lutris/game.py:178 +#: lutris/game.py:188 msgid "Error the runner is not installed" msgstr "错误:运行环境未安装" -#: lutris/game.py:180 +#: lutris/game.py:190 msgid "A bios file is required to run this game" msgstr "该游戏需要载入一个 BIOS 文件才能运行" -#: lutris/game.py:184 +#: lutris/game.py:194 msgid "The file {} could not be found" msgstr "找不到文件 {}" -#: lutris/game.py:186 +#: lutris/game.py:196 msgid "" "This game has no executable set. The install process didn't finish properly." msgstr "该游戏没有可执行文件。安装过程没有正确完成。" -#: lutris/game.py:189 +#: lutris/game.py:199 #, python-format msgid "The file %s is not executable" msgstr "文件 %s 不是可执行文件或者没有执行权限" -#: lutris/game.py:191 +#: lutris/game.py:201 #, python-format msgid "The path '%s' is not set. please set it in the options." msgstr "路径“%s”未设置,请在选项中进行设置。" -#: lutris/game.py:193 +#: lutris/game.py:203 #, python-format msgid "Unhandled error: %s" msgstr "未处理的错误:%s" -#: lutris/game.py:298 +#: lutris/game.py:269 +msgid "Uninstall the game before deleting" +msgstr "删除前请先卸载游戏" + +#: lutris/game.py:325 msgid "Tried to launch a game that isn't installed." msgstr "游戏尚未安装,无法启动。" -#: lutris/game.py:300 lutris/game.py:417 +#: lutris/game.py:327 lutris/game.py:435 msgid "Invalid game configuration: Missing runner" msgstr "无效游戏配置:缺少运行环境" -#: lutris/game.py:309 +#: lutris/game.py:336 msgid "Runtime currently updating" msgstr "正在更新运行库" -#: lutris/game.py:309 +#: lutris/game.py:336 msgid "Game might not work as expected" msgstr "更新完成前游戏可能无法正常启动" -#: lutris/game.py:342 +#: lutris/game.py:369 msgid "Unable to find Xephyr, install it or disable the Xephyr option" msgstr "找不到 Xephyr,请先安装 Xephyr 或禁用 Xephyr 选项" -#: lutris/game.py:398 +#: lutris/game.py:416 #, python-format msgid "" "The selected terminal application could not be launched:\n" @@ -402,17 +410,17 @@ msgstr "" "%s" #. The 'file' sort of gameplay_info cannot be made to use a configuration -#: lutris/game.py:434 +#: lutris/game.py:452 msgid "The runner could not find a command to apply the configuration to." msgstr "" "当前运行环境中找不到可应用该配置的指令。\n" "file 类型的 gameplay_info 不能应用配置。" -#: lutris/game.py:635 +#: lutris/game.py:668 msgid "Error lauching the game:\n" msgstr "启动游戏出错:\n" -#: lutris/game.py:727 +#: lutris/game.py:767 #, python-format msgid "" "Error: Missing shared library.\n" @@ -423,7 +431,7 @@ msgstr "" "\n" "%s" -#: lutris/game.py:733 +#: lutris/game.py:773 msgid "" "Error: A different Wine version is already using the same Wine prefix." msgstr "错误:该 Wine 容器正在被另一个不同版本的 Wine 使用。" @@ -518,16 +526,16 @@ msgstr "请选择安装包" msgid "Select a Lutris installer" msgstr "选择安装脚本文件" -#: lutris/gui/application.py:87 +#: lutris/gui/application.py:89 msgid "" "Running Lutris as root is not recommended and may cause unexpected issues" msgstr "不建议以 root 用户身份运行Wine游戏助手,这可能会导致未预期的问题" -#: lutris/gui/application.py:97 +#: lutris/gui/application.py:99 msgid "Your Linux distribution is too old. Lutris won't function properly." msgstr "您的 Linux 发行版太旧了,Wine游戏助手无法正常运行。" -#: lutris/gui/application.py:102 +#: lutris/gui/application.py:104 msgid "" "Run a game directly by adding the parameter lutris:rungame/game-identifier.\n" "If several games share the same identifier you can use the numerical ID " @@ -540,116 +548,116 @@ msgstr "" "数字ID),参数为 lutris:rungameid/数字ID。\n" "要安装游戏,请使用参数 lutris:install/游戏标识符。" -#: lutris/gui/application.py:115 +#: lutris/gui/application.py:117 msgid "Print the version of Lutris and exit" msgstr "打印Wine游戏助手版本后退出" -#: lutris/gui/application.py:123 +#: lutris/gui/application.py:125 msgid "Show debug messages" msgstr "显示调试信息" -#: lutris/gui/application.py:131 +#: lutris/gui/application.py:133 msgid "Install a game from a yml file" msgstr "从 yml 文件安装游戏" -#: lutris/gui/application.py:139 +#: lutris/gui/application.py:141 msgid "Generate a bash script to run a game without the client" msgstr "生成 bash 脚本以在没有Wine游戏助手客户端的情况下运行游戏" -#: lutris/gui/application.py:147 +#: lutris/gui/application.py:149 msgid "Execute a program with the Lutris Runtime" msgstr "在 Lutris 运行库中运行程序" -#: lutris/gui/application.py:155 +#: lutris/gui/application.py:157 msgid "List all games in database" msgstr "列出数据库里的所有游戏" -#: lutris/gui/application.py:163 +#: lutris/gui/application.py:165 msgid "Only list installed games" msgstr "仅列出已安装的游戏" -#: lutris/gui/application.py:171 +#: lutris/gui/application.py:173 msgid "List available Steam games" msgstr "列出可用的 Steam 游戏" -#: lutris/gui/application.py:179 +#: lutris/gui/application.py:181 msgid "List all known Steam library folders" msgstr "列出所有已知的 Steam 库文件夹" -#: lutris/gui/application.py:187 +#: lutris/gui/application.py:189 msgid "List all known runners" msgstr "列出所有已知的运行环境" -#: lutris/gui/application.py:195 +#: lutris/gui/application.py:197 msgid "List all known Wine versions" msgstr "列出所有已知的 Wine 版本" -#: lutris/gui/application.py:203 +#: lutris/gui/application.py:205 msgid "Install a Runner" msgstr "安装运行环境" -#: lutris/gui/application.py:211 +#: lutris/gui/application.py:213 msgid "Uninstall a Runner" msgstr "卸载运行环境" -#: lutris/gui/application.py:219 +#: lutris/gui/application.py:221 msgid "Export a game" msgstr "导出游戏" -#: lutris/gui/application.py:227 +#: lutris/gui/application.py:229 msgid "Import a game" msgstr "导入游戏" -#: lutris/gui/application.py:235 +#: lutris/gui/application.py:237 msgid "Destination path for export" msgstr "导出路径" -#: lutris/gui/application.py:243 +#: lutris/gui/application.py:245 msgid "Display the list of games in JSON format" msgstr "以 JSON 格式显示游戏列表" -#: lutris/gui/application.py:251 +#: lutris/gui/application.py:253 msgid "Reinstall game" msgstr "重装游戏" -#: lutris/gui/application.py:254 +#: lutris/gui/application.py:256 msgid "Submit an issue" msgstr "提交反馈" -#: lutris/gui/application.py:260 +#: lutris/gui/application.py:262 msgid "URI to open" msgstr "要打开的 URI" -#: lutris/gui/application.py:489 +#: lutris/gui/application.py:485 #, python-format msgid "%s is not a valid URI" msgstr "URI 格式不正确:%s" -#: lutris/gui/application.py:509 +#: lutris/gui/application.py:505 #, python-format msgid "Failed to download %s" msgstr "无法下载 %s" -#: lutris/gui/application.py:517 +#: lutris/gui/application.py:513 #, python-brace-format msgid "download {url} to {file} started" msgstr "开始下载 {url},保存至 {file}" -#: lutris/gui/application.py:528 +#: lutris/gui/application.py:524 #, python-format msgid "No such file: %s" msgstr "文件不存在:%s" -#: lutris/gui/application.py:645 +#: lutris/gui/application.py:674 #, python-format msgid "There is no installer available for %s." msgstr "%s 没有可用的安装脚本。" -#: lutris/gui/application.py:655 +#: lutris/gui/application.py:685 msgid "No updates found" msgstr "未找到更新" -#: lutris/gui/application.py:665 +#: lutris/gui/application.py:696 msgid "No DLC found" msgstr "未找到 DLC" @@ -657,148 +665,157 @@ msgstr "未找到 DLC" msgid "Add a new game" msgstr "添加新游戏" -#: lutris/gui/config/boxes.py:59 +#: lutris/gui/config/boxes.py:61 msgid "No options available" msgstr "没有可用的选项" -#: lutris/gui/config/boxes.py:105 +#: lutris/gui/config/boxes.py:109 msgid "Reset option to global or default config" msgstr "将选项重置为全局或默认状态" -#: lutris/gui/config/boxes.py:126 +#: lutris/gui/config/boxes.py:130 msgid "Default: " msgstr "默认:" -#: lutris/gui/config/boxes.py:130 +#: lutris/gui/config/boxes.py:134 msgid "" "(Italic indicates that this option is modified in a lower configuration " "level.)" msgstr "(斜体表示此选项在较低的配置级别被修改。)" -#: lutris/gui/config/boxes.py:307 +#: lutris/gui/config/boxes.py:315 #, python-format msgid "%s (default)" msgstr "%s(默认)" -#: lutris/gui/config/boxes.py:391 lutris/gui/widgets/common.py:45 +#: lutris/gui/config/boxes.py:399 lutris/gui/widgets/common.py:45 msgid "Select file" msgstr "选择文件" -#: lutris/gui/config/boxes.py:433 +#: lutris/gui/config/boxes.py:446 msgid "Select folder" msgstr "选择目录" -#: lutris/gui/config/boxes.py:473 +#: lutris/gui/config/boxes.py:491 msgid "Add files" msgstr "添加文件" -#: lutris/gui/config/boxes.py:491 +#: lutris/gui/config/boxes.py:509 msgid "Files" msgstr "文件" -#: lutris/gui/config/boxes.py:508 +#: lutris/gui/config/boxes.py:526 msgid "Select files" msgstr "批量选择文件" -#: lutris/gui/config/boxes.py:511 +#: lutris/gui/config/boxes.py:529 msgid "_Add" msgstr "添加 (_A)" -#: lutris/gui/config/boxes.py:512 lutris/gui/dialogs/__init__.py:134 -#: lutris/gui/dialogs/__init__.py:161 lutris/gui/dialogs/issue.py:75 -#: lutris/gui/widgets/common.py:98 +#: lutris/gui/config/boxes.py:530 lutris/gui/dialogs/__init__.py:187 +#: lutris/gui/dialogs/__init__.py:214 lutris/gui/dialogs/issue.py:72 +#: lutris/gui/widgets/common.py:100 #: lutris/gui/widgets/download_progress_box.py:47 msgid "_Cancel" msgstr "取消 (_C)" -#: lutris/gui/config/boxes.py:640 +#: lutris/gui/config/boxes.py:658 msgid "" "If modified, these options supersede the same options from the base runner " "configuration." msgstr "如果修改,这些选项将取代基本运行环境配置中的相同选项。" -#: lutris/gui/config/boxes.py:661 +#: lutris/gui/config/boxes.py:679 msgid "" "If modified, these options supersede the same options from the base runner " "configuration, which themselves supersede the global preferences." msgstr "" "如果修改,这些选项将取代基本运行环境配置中的相同选项,也将取代全局首选项。" -#: lutris/gui/config/boxes.py:667 +#: lutris/gui/config/boxes.py:685 msgid "" "If modified, these options supersede the same options from the global " "preferences." msgstr "如果修改,这些选项将取代全局首选项中的相同选项。" -#: lutris/gui/config/common.py:28 +#: lutris/gui/config/common.py:27 msgid "Select a runner in the Game Info tab" msgstr "在“游戏信息”选项卡中选择一个运行环境" -#: lutris/gui/config/common.py:109 +#: lutris/gui/config/common.py:110 msgid "Game info" msgstr "游戏信息" -#: lutris/gui/config/common.py:124 +#: lutris/gui/config/common.py:126 msgid "Identifier" msgstr "标识符" -#: lutris/gui/config/common.py:133 lutris/gui/config/common.py:259 +#: lutris/gui/config/common.py:135 lutris/gui/config/common.py:265 msgid "Change" msgstr "修改" -#: lutris/gui/config/common.py:142 +#: lutris/gui/config/common.py:144 msgid "Directory" msgstr "所在文件夹" -#: lutris/gui/config/common.py:148 +#: lutris/gui/config/common.py:150 msgid "Move" msgstr "移动" -#: lutris/gui/config/common.py:156 lutris/gui/views/list.py:47 +#: lutris/gui/config/common.py:158 lutris/gui/views/list.py:47 msgid "Runner" msgstr "运行环境" -#: lutris/gui/config/common.py:177 +#: lutris/gui/config/common.py:172 +msgid "Set custom cover art" +msgstr "设置自定义封面" + +#: lutris/gui/config/common.py:172 +msgid "Remove custom cover art" +msgstr "移除自定义封面" + +#: lutris/gui/config/common.py:173 +msgid "Set custom banner" +msgstr "设置自定义横幅" + +#: lutris/gui/config/common.py:173 msgid "Remove custom banner" msgstr "移除自定义封面" -#: lutris/gui/config/common.py:188 +#: lutris/gui/config/common.py:174 +msgid "Set custom icon" +msgstr "设置自定义图标" + +#: lutris/gui/config/common.py:174 msgid "Remove custom icon" msgstr "移除自定义图标" -#: lutris/gui/config/common.py:197 +#: lutris/gui/config/common.py:199 msgid "Release year" msgstr "发行年份" -#: lutris/gui/config/common.py:240 +#: lutris/gui/config/common.py:241 msgid "Select a runner from the list" msgstr "从列表中选择一个运行环境" -#: lutris/gui/config/common.py:248 +#: lutris/gui/config/common.py:249 msgid "Apply" msgstr "应用" -#: lutris/gui/config/common.py:296 +#: lutris/gui/config/common.py:302 msgid "Game options" msgstr "游戏选项" -#: lutris/gui/config/common.py:304 +#: lutris/gui/config/common.py:310 msgid "Runner options" msgstr "运行环境选项" -#: lutris/gui/config/common.py:312 +#: lutris/gui/config/common.py:319 msgid "System options" msgstr "系统选项" -#. Advanced settings checkbox -#: lutris/gui/config/common.py:322 -msgid "Show advanced options" -msgstr "显示高级选项" - -#: lutris/gui/config/common.py:330 lutris/gui/dialogs/__init__.py:268 -#: lutris/gui/dialogs/runner_install.py:186 -#: lutris/gui/dialogs/uninstall_game.py:60 -#: lutris/gui/dialogs/uninstall_game.py:135 +#. Buttons +#: lutris/gui/config/common.py:331 lutris/gui/dialogs/runner_install.py:201 #: lutris/gui/widgets/download_progress_box.py:95 msgid "Cancel" msgstr "取消" @@ -807,7 +824,15 @@ msgstr "取消" msgid "Save" msgstr "保存" -#: lutris/gui/config/common.py:368 +#: lutris/gui/config/common.py:347 lutris/gui/config/common.py:364 +msgid "Show advanced options" +msgstr "显示高级选项" + +#: lutris/gui/config/common.py:349 +msgid "Advanced" +msgstr "高级选项" + +#: lutris/gui/config/common.py:400 msgid "" "Are you sure you want to change the runner for this game ? This will reset " "the full configuration for this game and is not reversible." @@ -815,35 +840,35 @@ msgstr "" "您确定要更改此游戏的运行环境吗?\n" "这将重置此游戏的所有配置,并且不可逆。" -#: lutris/gui/config/common.py:372 +#: lutris/gui/config/common.py:404 msgid "Confirm runner change" msgstr "运行环境变更确认" -#: lutris/gui/config/common.py:420 +#: lutris/gui/config/common.py:455 msgid "Runner not provided" msgstr "未选择运行环境" -#: lutris/gui/config/common.py:423 +#: lutris/gui/config/common.py:458 msgid "Please fill in the name" msgstr "请填写游戏名称" -#: lutris/gui/config/common.py:426 +#: lutris/gui/config/common.py:461 msgid "Steam AppID not provided" msgstr "未提供 Steam 应用 ID" -#: lutris/gui/config/common.py:444 +#: lutris/gui/config/common.py:479 msgid "The following fields have invalid values: " msgstr "以下字段的值无效:" -#: lutris/gui/config/common.py:451 +#: lutris/gui/config/common.py:486 msgid "Current configuration is not valid, ignoring save request" msgstr "当前配置无效,无法保存" -#: lutris/gui/config/common.py:486 +#: lutris/gui/config/common.py:525 msgid "Please choose a custom image" msgstr "请选择一个自定义图片" -#: lutris/gui/config/common.py:494 +#: lutris/gui/config/common.py:533 msgid "Images" msgstr "映像文件" @@ -860,15 +885,19 @@ msgstr "游戏启动时最小化Wine游戏助手客户端" msgid "Hide text under icons (requires restart)" msgstr "隐藏图标下方文字(重启软件生效)" -#: lutris/gui/config/preferences_box.py:13 -msgid "Show Tray Icon (requires restart)" -msgstr "显示托盘图标(重启软件生效)" +#: lutris/gui/config/preferences_box.py:13 lutris/gui/config/sysinfo_box.py:13 +msgid "Show Tray Icon" +msgstr "显示托盘图标" #: lutris/gui/config/preferences_box.py:14 msgid "Use dark theme (requires dark theme variant for Gtk)" msgstr "使用深色主题(需要安装 GTK 深色主题,重启软件生效)" -#: lutris/gui/config/preferences_box.py:29 +#: lutris/gui/config/preferences_box.py:15 +msgid "Enable Discord Rich Presence for Available Games" +msgstr "为兼容 Discord Rich Presence 的游戏启用 Discord Rich Presence" + +#: lutris/gui/config/preferences_box.py:30 msgid "Interface options" msgstr "界面选项" @@ -880,11 +909,11 @@ msgstr "Wine游戏助手设置" msgid "Interface" msgstr "界面选项" -#: lutris/gui/config/preferences_dialog.py:27 lutris/gui/widgets/sidebar.py:271 +#: lutris/gui/config/preferences_dialog.py:27 lutris/gui/widgets/sidebar.py:272 msgid "Runners" msgstr "运行环境" -#: lutris/gui/config/preferences_dialog.py:28 lutris/gui/widgets/sidebar.py:270 +#: lutris/gui/config/preferences_dialog.py:28 lutris/gui/widgets/sidebar.py:271 msgid "Sources" msgstr "来源" @@ -896,7 +925,7 @@ msgstr "硬件信息" msgid "Global options" msgstr "全局设置" -#: lutris/gui/config/runner_box.py:90 lutris/gui/widgets/sidebar.py:214 +#: lutris/gui/config/runner_box.py:92 lutris/gui/widgets/sidebar.py:214 #, python-format msgid "Manage %s versions" msgstr "管理 %s 版本" @@ -935,10 +964,6 @@ msgstr "将各个不同来源的游戏库整合显示在Wine游戏助手中( msgid "Hide text under icons" msgstr "隐藏图标下方文字" -#: lutris/gui/config/sysinfo_box.py:13 -msgid "Show Tray Icon" -msgstr "显示托盘图标" - #: lutris/gui/config/sysinfo_box.py:38 msgid "Copy to clipboard" msgstr "复制到剪贴板" @@ -947,19 +972,19 @@ msgstr "复制到剪贴板" msgid "System information" msgstr "系统信息" -#: lutris/gui/dialogs/cache.py:11 +#: lutris/gui/dialogs/cache.py:13 msgid "Cache configuration" msgstr "缓存配置" -#: lutris/gui/dialogs/cache.py:24 +#: lutris/gui/dialogs/cache.py:40 msgid "Cache path" msgstr "缓存目录" -#: lutris/gui/dialogs/cache.py:28 +#: lutris/gui/dialogs/cache.py:43 msgid "Set the folder for the cache path" msgstr "设置缓存文件夹路径" -#: lutris/gui/dialogs/cache.py:37 +#: lutris/gui/dialogs/cache.py:55 msgid "" "If provided, this location will be used by installers to cache downloaded " "files locally for future re-use. \n" @@ -969,7 +994,7 @@ msgstr "" "设置缓存目录后,安装程序将把安装过程中下载的文件缓存到此处以备将来使用。\n" "如果缓存目录为空,安装程序下载的文件在安装完成后会被自动删除。" -#: lutris/gui/dialogs/download.py:12 +#: lutris/gui/dialogs/download.py:13 msgid "Downloading file" msgstr "文件下载中" @@ -978,59 +1003,53 @@ msgstr "文件下载中" msgid "Downloading %s" msgstr "正在下载 %s" -#: lutris/gui/dialogs/__init__.py:133 lutris/gui/dialogs/__init__.py:160 -#: lutris/gui/dialogs/issue.py:74 lutris/gui/dialogs/runner_install.py:63 -#: lutris/gui/widgets/common.py:98 +#: lutris/gui/dialogs/__init__.py:186 lutris/gui/dialogs/__init__.py:213 +#: lutris/gui/dialogs/issue.py:71 lutris/gui/widgets/common.py:100 msgid "_OK" msgstr "确定 (_O)" -#: lutris/gui/dialogs/__init__.py:151 +#: lutris/gui/dialogs/__init__.py:204 msgid "Please choose a file" msgstr "选择一个文件" -#: lutris/gui/dialogs/__init__.py:181 +#: lutris/gui/dialogs/__init__.py:236 msgid "Checking for runtime updates, please wait…" msgstr "正在检查运行库更新,请稍候..." -#: lutris/gui/dialogs/__init__.py:212 +#: lutris/gui/dialogs/__init__.py:270 #, python-format msgid "%s is already installed" msgstr "%s 已安装" -#: lutris/gui/dialogs/__init__.py:221 +#: lutris/gui/dialogs/__init__.py:281 msgid "Launch game" msgstr "启动游戏" -#: lutris/gui/dialogs/__init__.py:225 +#: lutris/gui/dialogs/__init__.py:285 msgid "Install the game again" msgstr "再次安装游戏" -#: lutris/gui/dialogs/__init__.py:229 lutris/gui/dialogs/__init__.py:272 -#: lutris/gui/dialogs/__init__.py:360 -msgid "OK" -msgstr "确定" - -#: lutris/gui/dialogs/__init__.py:248 +#: lutris/gui/dialogs/__init__.py:305 msgid "Select game to launch" msgstr "选择要启动的游戏" -#: lutris/gui/dialogs/__init__.py:333 +#: lutris/gui/dialogs/__init__.py:378 msgid "Login failed" msgstr "登录失败" -#: lutris/gui/dialogs/__init__.py:344 +#: lutris/gui/dialogs/__init__.py:389 msgid "Install script for {}" msgstr "{} 的安装脚本" -#: lutris/gui/dialogs/__init__.py:396 +#: lutris/gui/dialogs/__init__.py:441 msgid "Do not display this message again." msgstr "不再显示此信息。" -#: lutris/gui/dialogs/__init__.py:417 +#: lutris/gui/dialogs/__init__.py:462 msgid "Wine is not installed on your system." msgstr "您需要将 Wine 安装到您的系统中。" -#: lutris/gui/dialogs/__init__.py:419 +#: lutris/gui/dialogs/__init__.py:464 msgid "" "Having Wine installed on your system guarantees that Wine builds from Lutris " "will have all required dependencies.\n" @@ -1040,18 +1059,19 @@ msgid "" msgstr "" "在系统中安装 Wine 可以确保从 Lutris 下载的 Wine 具备运行所需的依赖包。\n" "\n" -"请按照依赖安装教程中给出的说明安装 Wine。" +"请按照依赖安装教程" +"中给出的说明安装 Wine。" -#: lutris/gui/dialogs/__init__.py:445 +#: lutris/gui/dialogs/__init__.py:489 #, python-format msgid "Moving %s to %s..." msgstr "正在移动 %s 到 %s ..." -#: lutris/gui/dialogs/issue.py:27 +#: lutris/gui/dialogs/issue.py:24 msgid "Submit an issue" msgstr "提交反馈" -#: lutris/gui/dialogs/issue.py:32 +#: lutris/gui/dialogs/issue.py:29 msgid "" "Describe the problem you're having in the text box below. This information " "will be sent the Lutris team along with your system information. You can " @@ -1060,112 +1080,112 @@ msgstr "" "在下面的文本框中描述您遇到的问题,该信息将与您的系统信息一起发送给 Lutris 团" "队。如果您没有联网,也可以将该信息保存在本地。" -#: lutris/gui/dialogs/issue.py:55 +#: lutris/gui/dialogs/issue.py:52 msgid "_Save" msgstr "保存 (_S)" -#: lutris/gui/dialogs/issue.py:71 +#: lutris/gui/dialogs/issue.py:68 msgid "Select a location to save the issue" msgstr "选择一个位置来保存反馈信息" -#: lutris/gui/dialogs/issue.py:91 +#: lutris/gui/dialogs/issue.py:88 #, python-format msgid "Issue saved in %s" msgstr "反馈已保存到 %s" -#: lutris/gui/dialogs/runner_install.py:29 +#: lutris/gui/dialogs/runner_install.py:28 #, python-format msgid "Showing games using %s" msgstr "查看使用 %s 的游戏" -#: lutris/gui/dialogs/runner_install.py:71 +#: lutris/gui/dialogs/runner_install.py:74 #, python-format msgid "Waiting for response from %s" msgstr "等待 %s 响应" -#: lutris/gui/dialogs/runner_install.py:87 +#: lutris/gui/dialogs/runner_install.py:90 #, python-format msgid "Unable to get runner versions: %s" msgstr "无法获取运行环境版本信息:%s" -#: lutris/gui/dialogs/runner_install.py:101 +#: lutris/gui/dialogs/runner_install.py:104 msgid "Unable to get runner versions from winegame.net" msgstr "无法从 winegame.net 获取运行环境版本信息" -#: lutris/gui/dialogs/runner_install.py:108 +#: lutris/gui/dialogs/runner_install.py:111 #, python-format msgid "%s version management" msgstr "%s 版本管理器" -#: lutris/gui/dialogs/runner_install.py:158 +#: lutris/gui/dialogs/runner_install.py:165 #, python-format -msgid "_View %d game" -msgid_plural "_View %d games" +msgid "View %d game" +msgid_plural "View %d games" msgstr[0] "被 %d 个游戏使用" -#: lutris/gui/dialogs/runner_install.py:190 -#: lutris/gui/dialogs/uninstall_game.py:34 +#: lutris/gui/dialogs/runner_install.py:206 +#: lutris/gui/dialogs/uninstall_game.py:22 msgid "Uninstall" msgstr "卸载" -#: lutris/gui/dialogs/runner_install.py:214 +#: lutris/gui/dialogs/runner_install.py:231 msgid "Wine version usage" msgstr "Wine 版本使用情况" -#: lutris/gui/dialogs/runner_install.py:256 +#: lutris/gui/dialogs/runner_install.py:289 msgid "Do you want to cancel the download?" msgstr "是否取消下载?" -#: lutris/gui/dialogs/runner_install.py:257 +#: lutris/gui/dialogs/runner_install.py:290 msgid "Download starting" msgstr "下载开始" -#: lutris/gui/dialogs/runner_install.py:307 +#: lutris/gui/dialogs/runner_install.py:340 #, python-format msgid "Version %s is not longer available" msgstr "版本 %s 不再可用" -#: lutris/gui/dialogs/runner_install.py:332 +#: lutris/gui/dialogs/runner_install.py:365 msgid "Downloading…" msgstr "正在下载..." -#: lutris/gui/dialogs/runner_install.py:335 +#: lutris/gui/dialogs/runner_install.py:368 msgid "Extracting…" msgstr "正在解压..." -#: lutris/gui/dialogs/runner_install.py:377 +#: lutris/gui/dialogs/runner_install.py:410 msgid "Failed to retrieve the runner archive" msgstr "下载运行环境安装包失败" -#: lutris/gui/dialogs/uninstall_game.py:27 +#: lutris/gui/dialogs/uninstall_game.py:33 #, python-format msgid "Uninstall %s" msgstr "卸载 %s" -#: lutris/gui/dialogs/uninstall_game.py:38 +#: lutris/gui/dialogs/uninstall_game.py:41 msgid "No file will be deleted" msgstr "没有可删除的文件" -#: lutris/gui/dialogs/uninstall_game.py:41 +#: lutris/gui/dialogs/uninstall_game.py:44 #, python-format msgid "The folder %s is used by other games and will be kept." msgstr "目录 %s 已被其他游戏使用,所以将被保留。" -#: lutris/gui/dialogs/uninstall_game.py:44 +#: lutris/gui/dialogs/uninstall_game.py:47 msgid "Calculating size…" msgstr "正在计算文件大小..." -#: lutris/gui/dialogs/uninstall_game.py:48 +#: lutris/gui/dialogs/uninstall_game.py:51 #, python-format msgid "Content of %s are protected and will not be deleted." msgstr "目录 %s 中的内容受到保护,无法被删除。" -#: lutris/gui/dialogs/uninstall_game.py:76 +#: lutris/gui/dialogs/uninstall_game.py:68 #, python-format msgid "Delete %s (%s)" msgstr "删除 %s (%s)" -#: lutris/gui/dialogs/uninstall_game.py:93 +#: lutris/gui/dialogs/uninstall_game.py:84 #, python-format msgid "" "Please confirm.\n" @@ -1176,24 +1196,24 @@ msgstr "" "所有位于 %s\n" "的内容都将被删除您的游戏存档可能在里面)!" -#: lutris/gui/dialogs/uninstall_game.py:96 +#: lutris/gui/dialogs/uninstall_game.py:87 msgid "Permanently delete files?" msgstr "彻底删除文件夹?!" -#: lutris/gui/dialogs/uninstall_game.py:103 +#: lutris/gui/dialogs/uninstall_game.py:95 msgid "Uninstalling game and deleting files..." msgstr "正在卸载游戏并删除文件..." -#: lutris/gui/dialogs/uninstall_game.py:105 +#: lutris/gui/dialogs/uninstall_game.py:97 msgid "Uninstalling game..." msgstr "正在卸载游戏..." -#: lutris/gui/dialogs/uninstall_game.py:122 +#: lutris/gui/dialogs/uninstall_game.py:120 #, python-format msgid "Remove %s" msgstr "从游戏库中移除 %s" -#: lutris/gui/dialogs/uninstall_game.py:128 +#: lutris/gui/dialogs/uninstall_game.py:126 #, python-format msgid "" "Completely remove %s from the library?\n" @@ -1202,93 +1222,92 @@ msgstr "" "是否完全从游戏库中移除 %s?\n" "Wine游戏助手记录的游戏游玩时间也会一并删除。" -#: lutris/gui/dialogs/webconnect_dialog.py:106 +#: lutris/gui/dialogs/webconnect_dialog.py:107 msgid "Loading..." msgstr "载入中..." -#: lutris/gui/installer/file_box.py:95 +#: lutris/gui/installer/file_box.py:94 #, python-brace-format msgid "Steam game {appid}" msgstr "Steam 游戏(应用 ID:{appid})" -#: lutris/gui/installer/file_box.py:110 -#, python-brace-format -msgid "{file} on {host}" -msgstr "{file}(来自 {host})" - -#: lutris/gui/installer/file_box.py:121 +#: lutris/gui/installer/file_box.py:108 msgid "Download" msgstr "下载" -#: lutris/gui/installer/file_box.py:123 +#: lutris/gui/installer/file_box.py:110 msgid "Use Cache" msgstr "使用缓存" -#: lutris/gui/installer/file_box.py:125 lutris/runners/steam.py:29 -#: lutris/services/steam.py:73 +#: lutris/gui/installer/file_box.py:112 lutris/runners/steam.py:30 +#: lutris/services/steam.py:76 msgid "Steam" msgstr "Steam" -#: lutris/gui/installer/file_box.py:126 +#: lutris/gui/installer/file_box.py:113 msgid "Select File" msgstr "选择文件" -#: lutris/gui/installer/file_box.py:187 +#: lutris/gui/installer/file_box.py:174 msgid "Cache file for future installations" msgstr "缓存文件以供将来安装" -#: lutris/gui/installer/file_box.py:206 +#: lutris/gui/installer/file_box.py:193 msgid "Source:" msgstr "来源:" -#: lutris/gui/installerwindow.py:65 +#: lutris/gui/installerwindow.py:67 msgid "Cache" msgstr "缓存" -#: lutris/gui/installerwindow.py:76 +#: lutris/gui/installerwindow.py:78 msgid "Abort and revert the installation" msgstr "中止并回滚安装" -#: lutris/gui/installerwindow.py:78 +#: lutris/gui/installerwindow.py:80 msgid "_Eject" msgstr "弹出 (_E)" -#: lutris/gui/installerwindow.py:79 +#: lutris/gui/installerwindow.py:81 msgid "_View source" msgstr "查看来源 (_V)" -#: lutris/gui/installerwindow.py:80 +#: lutris/gui/installerwindow.py:82 msgid "_Install" msgstr "安装 (_I)" -#: lutris/gui/installerwindow.py:81 +#: lutris/gui/installerwindow.py:83 msgid "_Continue" msgstr "继续 (_C)" -#: lutris/gui/installerwindow.py:82 +#: lutris/gui/installerwindow.py:84 msgid "_Launch" msgstr "启动 (_L)" -#: lutris/gui/installerwindow.py:83 +#: lutris/gui/installerwindow.py:85 msgid "_Close" msgstr "关闭 (_C)" -#: lutris/gui/installerwindow.py:122 +#: lutris/gui/installerwindow.py:117 +msgid "No installer available" +msgstr "没有可用的安装脚本" + +#: lutris/gui/installerwindow.py:124 #, python-format msgid "Missing field \"%s\" in install script" msgstr "安装脚本缺少字段“%s”" -#: lutris/gui/installerwindow.py:128 +#: lutris/gui/installerwindow.py:130 #, python-format msgid "Install %s" msgstr "安装 %s" -#: lutris/gui/installerwindow.py:162 +#: lutris/gui/installerwindow.py:165 #, python-format msgid "This game requires %s. Do you want to install it?" msgstr "该游戏需要 %s,您要安装吗?" -#: lutris/gui/installerwindow.py:163 +#: lutris/gui/installerwindow.py:166 msgid "Missing dependency" msgstr "缺少依赖" @@ -1300,24 +1319,24 @@ msgstr "安装 {}" msgid "Select installation directory" msgstr "选择安装目录" -#: lutris/gui/installerwindow.py:246 +#: lutris/gui/installerwindow.py:263 msgid "Autodetect" msgstr "自动检测" -#: lutris/gui/installerwindow.py:252 +#: lutris/gui/installerwindow.py:269 msgid "Browse…" msgstr "浏览..." -#: lutris/gui/installerwindow.py:259 +#: lutris/gui/installerwindow.py:277 msgid "Select the folder where the disc is mounted" msgstr "选择安装光盘的挂载文件夹" -#: lutris/gui/installerwindow.py:320 +#: lutris/gui/installerwindow.py:344 msgid "" "Please review the files needed for the installation then click 'Continue'" msgstr "请检查安装所需的文件,然后点击“继续”" -#: lutris/gui/installerwindow.py:358 +#: lutris/gui/installerwindow.py:382 msgid "" "This game has extra content. \n" "Select which one you want and they will be available in the 'extras' folder " @@ -1326,42 +1345,66 @@ msgstr "" "该游戏包含附加内容。\n" "请选择您想下载的附加内容,这些内容将被安装至游戏的“extras”文件夹。" -#: lutris/gui/installerwindow.py:459 +#: lutris/gui/installerwindow.py:487 #, python-format msgid "Unable to get files: %s" msgstr "无法读取文件:%s" -#: lutris/gui/installerwindow.py:554 +#: lutris/gui/installerwindow.py:588 msgid "Remove game files" msgstr "删除游戏文件" -#: lutris/gui/installerwindow.py:560 +#: lutris/gui/installerwindow.py:599 msgid "Are you sure you want to cancel the installation?" msgstr "确定要取消安装吗?" -#: lutris/gui/installerwindow.py:561 +#: lutris/gui/installerwindow.py:600 msgid "Cancel installation?" msgstr "是否取消安装?" -#: lutris/gui/lutriswindow.py:345 +#: lutris/gui/lutriswindow.py:346 #, python-format msgid "Connect your %s account to access your games" msgstr "关联您的 %s 账户来查看您的游戏" -#: lutris/gui/lutriswindow.py:416 +#: lutris/gui/lutriswindow.py:419 +#, python-format +msgid "Add a game matching '%s' to your favorites to see it here." +msgstr "将匹配“%s”的游戏添加到收藏夹以在此处查看。" + +#: lutris/gui/lutriswindow.py:422 +#, python-format +msgid "" +"No installed games matching '%s' found. Press Ctrl+I to show uninstalled " +"games." +msgstr "找不到与“%s”匹配的已安装游戏。按 Ctrl+I 显示已卸载的游戏。" + +#. but not if missing! +#: lutris/gui/lutriswindow.py:424 +#, python-format +msgid "" +"No visible games matching '%s' found. Press Ctrl+H to show hidden games." +msgstr "找不到与“%s”匹配的可见游戏。按 Ctrl+H 显示隐藏游戏。" + +#: lutris/gui/lutriswindow.py:427 #, python-format msgid "No games matching '%s' found " msgstr "未找到包含“%s”的游戏" -#: lutris/gui/lutriswindow.py:419 +#: lutris/gui/lutriswindow.py:430 msgid "Add games to your favorites to see them here." msgstr "将游戏添加到收藏夹就能在这里看到" -#: lutris/gui/lutriswindow.py:421 -msgid "No installed games found. Press Ctrl+H to show all games." -msgstr "未找到已安装的游戏,按 Ctrl+H 显示所有游戏" +#: lutris/gui/lutriswindow.py:432 +msgid "No installed games found. Press Ctrl+I to show uninstalled games." +msgstr "未找到已安装的游戏。按 Ctrl+I 显示已卸载的游戏。" -#: lutris/gui/lutriswindow.py:430 +#. but not if missing! +#: lutris/gui/lutriswindow.py:434 +msgid "No visible games found. Press Ctrl+H to show hidden games." +msgstr "找不到可见的游戏。按 Ctrl+H 显示隐藏游戏。" + +#: lutris/gui/lutriswindow.py:442 msgid "No games found" msgstr "未找到游戏" @@ -1370,11 +1413,11 @@ msgstr "未找到游戏" msgid "Platform" msgstr "平台" -#: lutris/gui/widgets/common.py:72 +#: lutris/gui/widgets/common.py:74 msgid "Browse..." msgstr "浏览..." -#: lutris/gui/widgets/common.py:136 +#: lutris/gui/widgets/common.py:144 msgid "" "Warning! The selected path is located on a drive formatted by " "Windows.\n" @@ -1384,7 +1427,7 @@ msgstr "" "NTFS 分区上安装的游戏和程序可能无法在 Linux 中正常运行,\n" "或者运行速度较慢。建议将游戏转移到 Linux 分区。" -#: lutris/gui/widgets/common.py:144 +#: lutris/gui/widgets/common.py:152 msgid "" "Warning! The selected path contains files. Installation might not " "work properly." @@ -1392,16 +1435,16 @@ msgstr "" "警告! 所选文件夹非空,安装可能无法正常进行。\n" "建议选择空文件夹,或者先手动删除该文件夹再进行安装。" -#: lutris/gui/widgets/common.py:152 +#: lutris/gui/widgets/common.py:160 msgid "" "Warning The destination folder is not writable by the current user." msgstr "警告! 当前用户无法写入目标文件夹。" -#: lutris/gui/widgets/common.py:254 +#: lutris/gui/widgets/common.py:253 msgid "Add" msgstr "添加" -#: lutris/gui/widgets/common.py:258 +#: lutris/gui/widgets/common.py:257 msgid "Delete" msgstr "删除" @@ -1470,27 +1513,27 @@ msgstr "登录" msgid "Manage Versions" msgstr "添加/删除版本" -#: lutris/gui/widgets/sidebar.py:269 +#: lutris/gui/widgets/sidebar.py:270 msgid "Library" msgstr "游戏库" -#: lutris/gui/widgets/sidebar.py:272 +#: lutris/gui/widgets/sidebar.py:273 msgid "Platforms" msgstr "平台" -#: lutris/gui/widgets/sidebar.py:316 lutris/util/system.py:27 +#: lutris/gui/widgets/sidebar.py:317 lutris/util/system.py:28 msgid "Games" msgstr "游戏" -#: lutris/gui/widgets/sidebar.py:325 +#: lutris/gui/widgets/sidebar.py:326 msgid "Recent" msgstr "最近打开" -#: lutris/gui/widgets/sidebar.py:334 +#: lutris/gui/widgets/sidebar.py:335 msgid "Favorites" msgstr "收藏夹" -#: lutris/gui/widgets/sidebar.py:342 +#: lutris/gui/widgets/sidebar.py:343 msgid "Running" msgstr "运行中" @@ -1502,52 +1545,52 @@ msgstr "显示Wine游戏助手" msgid "Quit" msgstr "退出" -#: lutris/installer/commands.py:66 +#: lutris/installer/commands.py:67 #, python-brace-format msgid "One of {params} parameter is mandatory for the {cmd} command" msgstr "{cmd} 命令必须有以下参数之一:{params}" -#: lutris/installer/commands.py:67 lutris/installer/interpreter.py:123 -#: lutris/installer/interpreter.py:146 +#: lutris/installer/commands.py:68 lutris/installer/interpreter.py:128 +#: lutris/installer/interpreter.py:151 msgid " or " msgstr " 或 " -#: lutris/installer/commands.py:73 +#: lutris/installer/commands.py:74 #, python-brace-format msgid "The {param} parameter is mandatory for the {cmd} command" msgstr "{cmd} 命令必须有 {param} 参数" -#: lutris/installer/commands.py:90 +#: lutris/installer/commands.py:91 #, python-format msgid "Invalid file '%s'. Can't make it executable" msgstr "文件 %s 没有可执行权限,尝试添加可执行权限失败" -#: lutris/installer/commands.py:103 +#: lutris/installer/commands.py:104 msgid "" "Parameters file and command can't be used at the same time for the execute " "command" msgstr "“execute”命令不能同时有“file”和“command”参数" -#: lutris/installer/commands.py:138 +#: lutris/installer/commands.py:139 msgid "No parameters supplied to execute command." msgstr "“execute”命令缺少“file”或“command”参数" -#: lutris/installer/commands.py:152 +#: lutris/installer/commands.py:153 #, python-format msgid "Unable to find executable %s" msgstr "无法找到可执行文件 %s" -#: lutris/installer/commands.py:186 +#: lutris/installer/commands.py:187 #, python-format msgid "%s does not exist" msgstr "%s 不存在" -#: lutris/installer/commands.py:192 +#: lutris/installer/commands.py:193 #, python-format msgid "Extracting %s" msgstr "正在解压 %s" -#: lutris/installer/commands.py:234 +#: lutris/installer/commands.py:235 msgid "" "Insert or mount game disc and click Autodetect or\n" "use Browse if the disc is mounted on a non standard location." @@ -1555,7 +1598,7 @@ msgstr "" "插入或挂载游戏光盘,然后点击“自动检测”。\n" "如果光盘挂载在非标准位置,请使用“浏览”。" -#: lutris/installer/commands.py:238 +#: lutris/installer/commands.py:239 #, python-format msgid "" "\n" @@ -1569,17 +1612,17 @@ msgstr "" "Wine游戏助手正在寻找包含以下文件或文件夹的已挂载磁盘驱动器或磁盘映像:\n" "%s" -#: lutris/installer/commands.py:280 +#: lutris/installer/commands.py:281 #, python-format msgid "Source does not exist: %s" msgstr "原文件不存在:%s" -#: lutris/installer/commands.py:306 +#: lutris/installer/commands.py:307 #, python-format msgid "Invalid source for 'move' operation: %s" msgstr "“move”操作的原文件无效:%s" -#: lutris/installer/commands.py:325 +#: lutris/installer/commands.py:326 #, python-brace-format msgid "" "Can't move {src} \n" @@ -1588,57 +1631,57 @@ msgstr "" "无法把 {src}\n" "移动到目标位置 {dst}" -#: lutris/installer/commands.py:332 +#: lutris/installer/commands.py:333 #, python-format msgid "Rename error, source path does not exist: %s" msgstr "重命名失败,原文件不存在:%s" -#: lutris/installer/commands.py:339 +#: lutris/installer/commands.py:340 #, python-format msgid "Rename error, destination already exists: %s" msgstr "重命名失败,目标文件已存在:%s" -#: lutris/installer/commands.py:355 +#: lutris/installer/commands.py:356 msgid "Missing parameter src" msgstr "缺少参数“src”" -#: lutris/installer/commands.py:358 +#: lutris/installer/commands.py:359 msgid "Wrong value for 'src' param" msgstr "“src”参数的值不正确" -#: lutris/installer/commands.py:362 +#: lutris/installer/commands.py:363 msgid "Wrong value for 'dst' param" msgstr "“dst”参数的值不正确" -#: lutris/installer/commands.py:451 -#, python-format -msgid "Command exited with code %s" -msgstr "命令以错误代码 %s 退出" - -#: lutris/installer/commands.py:469 +#: lutris/installer/commands.py:475 #, python-format msgid "Wrong value for write_file mode: '%s'" msgstr "“write_file”命令的“mode”参数值“%s”不正确" -#: lutris/installer/installer_file.py:26 +#: lutris/installer/installer_file.py:27 #, python-format msgid "missing field `url` for file `%s`" msgstr "文件“%s”缺少“url”字段" -#: lutris/installer/installer_file.py:38 +#: lutris/installer/installer_file.py:46 #, python-format msgid "missing field `filename` in file `%s`" msgstr "文件“%s”缺少“filename”字段" -#: lutris/installer/installer_file.py:176 +#: lutris/installer/installer_file.py:95 +#, python-brace-format +msgid "{file} on {host}" +msgstr "{file}(来自 {host})" + +#: lutris/installer/installer_file.py:196 msgid "Invalid checksum, expected format (type:hash) " msgstr "“checksum”参数无效,格式应为“算法:哈希值”" -#: lutris/installer/installer_file.py:179 +#: lutris/installer/installer_file.py:199 msgid " checksum mismatch " msgstr "校验和不匹配" -#: lutris/installer/installer.py:179 +#: lutris/installer/installer.py:178 msgid "Game config key must be a string" msgstr "游戏配置“key”必须是字符串" @@ -1646,11 +1689,11 @@ msgstr "游戏配置“key”必须是字符串" msgid "Invalid 'game' section" msgstr "“game”配置节无效" -#: lutris/installer/interpreter.py:53 +#: lutris/installer/interpreter.py:55 msgid "This installer doesn't have a 'script' section" msgstr "安装脚本缺少“script”配置节" -#: lutris/installer/interpreter.py:57 +#: lutris/installer/interpreter.py:59 msgid "" "Invalid script: \n" "{}" @@ -1658,38 +1701,38 @@ msgstr "" "无效的安装脚本:\n" "{}" -#: lutris/installer/interpreter.py:123 lutris/installer/interpreter.py:126 +#: lutris/installer/interpreter.py:128 lutris/installer/interpreter.py:131 #, python-format msgid "This installer requires %s on your system" msgstr "要使用此安装脚本,您需要将 %s 安装到您的系统中。" -#: lutris/installer/interpreter.py:139 +#: lutris/installer/interpreter.py:144 msgid "You need to install {} before" msgstr "需要先安装 {}" -#: lutris/installer/interpreter.py:187 +#: lutris/installer/interpreter.py:191 msgid "Lutris does not have the necessary permissions to install to path:" msgstr "Wine游戏助手没有安装到以下路径所需的权限:" -#: lutris/installer/interpreter.py:271 +#: lutris/installer/interpreter.py:275 #, python-format msgid "Invalid runner provided %s" msgstr "无效的运行环境 %s" -#: lutris/installer/interpreter.py:297 +#: lutris/installer/interpreter.py:301 msgid "Installing game data" msgstr "安装游戏数据..." -#: lutris/installer/interpreter.py:309 +#: lutris/installer/interpreter.py:313 msgid "Installer commands are not formatted correctly" msgstr "安装脚本命令格式不正确" -#: lutris/installer/interpreter.py:342 +#: lutris/installer/interpreter.py:346 #, python-format msgid "The command \"%s\" does not exist." msgstr "命令“%s”不存在" -#: lutris/installer/interpreter.py:363 +#: lutris/installer/interpreter.py:367 #, python-format msgid "" "The executable at path %s can't be found, please check the destination " @@ -1700,7 +1743,7 @@ msgstr "" "看起来某些安装步骤未顺利完成,可能是安装程序被提前关闭或者发生了错误。\n" "如果游戏无法启动,请尝试重新安装,或向安装脚本维护人员报告问题。" -#: lutris/installer/interpreter.py:369 +#: lutris/installer/interpreter.py:373 msgid "Installation completed!" msgstr "安装完成" @@ -1709,24 +1752,24 @@ msgstr "安装完成" msgid "Malformed steam path: %s" msgstr "Steam 路径不正确:%s" -#: lutris/runners/atari800.py:19 +#: lutris/runners/atari800.py:17 msgid "Desktop resolution" msgstr "桌面分辨率" -#: lutris/runners/atari800.py:25 +#: lutris/runners/atari800.py:22 msgid "Atari800" msgstr "Atari 800" -#: lutris/runners/atari800.py:26 +#: lutris/runners/atari800.py:23 msgid "Atari 8bit computers" msgstr "Atari 8位机" -#: lutris/runners/atari800.py:29 +#: lutris/runners/atari800.py:26 msgid "Atari 400, 800 and XL emulator" msgstr "Atari 400、800、XL 模拟器" -#: lutris/runners/atari800.py:41 lutris/runners/jzintv.py:19 -#: lutris/runners/libretro.py:74 lutris/runners/mame.py:78 +#: lutris/runners/atari800.py:38 lutris/runners/jzintv.py:19 +#: lutris/runners/libretro.py:73 lutris/runners/mame.py:78 #: lutris/runners/mednafen.py:57 lutris/runners/mupen64plus.py:20 #: lutris/runners/o2em.py:45 lutris/runners/openmsx.py:17 #: lutris/runners/osmose.py:21 lutris/runners/snes9x.py:27 @@ -1734,7 +1777,7 @@ msgstr "Atari 400、800、XL 模拟器" msgid "ROM file" msgstr "ROM 文件" -#: lutris/runners/atari800.py:43 +#: lutris/runners/atari800.py:40 msgid "" "The game data, commonly called a ROM image. \n" "Supported formats: ATR, XFD, DCM, ATR.GZ, XFD.GZ and PRO." @@ -1742,11 +1785,11 @@ msgstr "" "游戏数据,通常称为 ROM 映像。\n" "支持的 ROM 格式:ATR,XFD,DCM,ATR.GZ,XFD.GZ 和 PRO。" -#: lutris/runners/atari800.py:57 +#: lutris/runners/atari800.py:51 msgid "BIOS location" msgstr "BIOS 路径" -#: lutris/runners/atari800.py:59 +#: lutris/runners/atari800.py:53 msgid "" "A folder containing the Atari 800 BIOS files.\n" "They are provided by Lutris so you shouldn't have to change this." @@ -1754,56 +1797,61 @@ msgstr "" "包含 Atari 800 BIOS 文件的文件夹。\n" "由Wine游戏助手提供,您不必更改此设置。" -#: lutris/runners/atari800.py:70 +#: lutris/runners/atari800.py:62 msgid "Emulate Atari 800" msgstr "模拟 Atari 800" -#: lutris/runners/atari800.py:71 +#: lutris/runners/atari800.py:63 msgid "Emulate Atari 800 XL" msgstr "模拟 Atari 800 XL" -#: lutris/runners/atari800.py:72 +#: lutris/runners/atari800.py:64 msgid "Emulate Atari 320 XE (Compy Shop)" msgstr "模拟 Atari 320 XE(Compy Shop)" -#: lutris/runners/atari800.py:73 +#: lutris/runners/atari800.py:65 msgid "Emulate Atari 320 XE (Rambo)" msgstr "模拟 Atari 320 XE(Rambo)" -#: lutris/runners/atari800.py:74 +#: lutris/runners/atari800.py:66 msgid "Emulate Atari 5200" msgstr "模拟 Atari 5200" -#: lutris/runners/atari800.py:79 lutris/runners/mame.py:83 +#: lutris/runners/atari800.py:69 lutris/runners/mame.py:83 #: lutris/runners/vice.py:88 msgid "Machine" msgstr "机型" -#: lutris/runners/atari800.py:85 lutris/runners/easyrpg.py:144 +#: lutris/runners/atari800.py:75 lutris/runners/easyrpg.py:144 #: lutris/runners/hatari.py:72 lutris/runners/jzintv.py:43 -#: lutris/runners/libretro.py:94 lutris/runners/mame.py:157 +#: lutris/runners/libretro.py:93 lutris/runners/mame.py:157 #: lutris/runners/mednafen.py:74 lutris/runners/mupen64plus.py:28 #: lutris/runners/o2em.py:75 lutris/runners/osmose.py:34 #: lutris/runners/pcsx2.py:26 lutris/runners/pico8.py:38 #: lutris/runners/redream.py:25 lutris/runners/reicast.py:42 #: lutris/runners/residualvm.py:39 lutris/runners/scummvm.py:76 #: lutris/runners/snes9x.py:36 lutris/runners/vice.py:57 +#: lutris/runners/yuzu.py:40 msgid "Fullscreen" msgstr "全屏模式" -#: lutris/runners/atari800.py:92 +#: lutris/runners/atari800.py:82 msgid "Fullscreen resolution" msgstr "全屏模式分辨率" -#: lutris/runners/atari800.py:104 +#: lutris/runners/atari800.py:94 msgid "Could not download Atari 800 BIOS archive" msgstr "下载 Atari 800 BIOS 文件失败" +#: lutris/runners/commands/wine.py:253 lutris/util/wine/wine.py:223 +msgid "Wine is not installed" +msgstr "Wine 尚未安装" + #: lutris/runners/dolphin.py:10 msgid "GameCube and Wii emulator" msgstr "GameCube 和 Wii 模拟器" -#: lutris/runners/dolphin.py:11 lutris/services/dolphin.py:27 +#: lutris/runners/dolphin.py:11 lutris/services/dolphin.py:28 msgid "Dolphin" msgstr "Dolphin" @@ -1886,13 +1934,13 @@ msgstr "命令行参数" msgid "Command line arguments used when launching DOSBox" msgstr "启动 DOSBox 时使用的命令行参数" -#: lutris/runners/dosbox.py:51 lutris/runners/linux.py:39 -#: lutris/runners/wine.py:61 +#: lutris/runners/dosbox.py:51 lutris/runners/flatpak.py:73 +#: lutris/runners/linux.py:39 lutris/runners/wine.py:62 msgid "Working directory" msgstr "工作目录" #: lutris/runners/dosbox.py:53 lutris/runners/linux.py:41 -#: lutris/runners/wine.py:63 +#: lutris/runners/wine.py:64 msgid "" "The location where the game is run from.\n" "By default, Lutris uses the directory of the executable." @@ -1938,10 +1986,10 @@ msgstr "EasyRPG Player" msgid "Runs RPG Maker 2000/2003 games" msgstr "运行 RPG Maker 2000/2003 游戏" -#: lutris/runners/easyrpg.py:12 lutris/runners/linux.py:14 -#: lutris/runners/linux.py:16 lutris/runners/residualvm.py:15 -#: lutris/runners/scummvm.py:14 lutris/runners/steam.py:30 -#: lutris/runners/zdoom.py:15 +#: lutris/runners/easyrpg.py:12 lutris/runners/flatpak.py:18 +#: lutris/runners/linux.py:14 lutris/runners/linux.py:16 +#: lutris/runners/residualvm.py:15 lutris/runners/scummvm.py:14 +#: lutris/runners/steam.py:31 lutris/runners/zdoom.py:15 msgid "Linux" msgstr "Linux" @@ -1973,9 +2021,9 @@ msgstr "游戏引擎" msgid "Disable auto detection of the simulated engine." msgstr "选择要模拟的游戏引擎" -#: lutris/runners/easyrpg.py:41 lutris/runners/fsuae.py:50 -#: lutris/runners/mame.py:173 lutris/runners/wine.py:82 -#: lutris/runners/wine.py:416 +#: lutris/runners/easyrpg.py:41 lutris/runners/fsuae.py:156 +#: lutris/runners/mame.py:173 lutris/runners/wine.py:83 +#: lutris/runners/wine.py:417 msgid "Auto" msgstr "自动检测" @@ -2153,7 +2201,7 @@ msgstr "" "一定支持垂直同步。\n" "禁用垂直同步后,下方的帧率限制选项才会生效。" -#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:318 +#: lutris/runners/easyrpg.py:196 lutris/sysoptions.py:346 msgid "FPS limit" msgstr "帧率限制" @@ -2166,7 +2214,7 @@ msgstr "" "设置自定义 FPS,如果不指定,则默认为 60 FPS。设为“0”禁用帧率限制。注意您的系" "统不一定支持此功能。" -#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:442 +#: lutris/runners/easyrpg.py:206 lutris/runners/wine.py:443 msgid "Show FPS" msgstr "显示帧率" @@ -2175,7 +2223,7 @@ msgid "Enable frames per second counter." msgstr "显示 FPS 指示器。" #: lutris/runners/easyrpg.py:209 lutris/runners/mednafen.py:85 -#: lutris/runners/wine.py:439 +#: lutris/runners/wine.py:440 msgid "Disabled" msgstr "禁用" @@ -2249,196 +2297,263 @@ msgstr "未选择游戏文件夹" msgid "The directory {} could not be found" msgstr "找不到文件夹 {}" -#: lutris/runners/fsuae.py:11 -msgid "FS-UAE" -msgstr "FS-UAE" +#: lutris/runners/flatpak.py:17 +msgid "Runs Flatpak applications" +msgstr "运行 Flatpak 应用" -#: lutris/runners/fsuae.py:12 -msgid "Amiga emulator" -msgstr "Amiga 模拟器" +#: lutris/runners/flatpak.py:20 +msgid "Flatpak" +msgstr "Flatpak" + +#: lutris/runners/flatpak.py:32 lutris/runners/steam.py:36 +msgid "Application ID" +msgstr "应用 ID" + +#: lutris/runners/flatpak.py:33 +msgid "The application's unique three-part identifier (tld.domain.app)." +msgstr "应用程序的唯一三元标识符 (tld.domain.app)。" + +#: lutris/runners/flatpak.py:38 +msgid "Architecture" +msgstr "架构" + +#: lutris/runners/flatpak.py:39 +msgid "" +"The architecture to run. See flatpak --supported-arches for architectures " +"supported by the host." +msgstr "" +"要运行的架构。主机支持的架构可通过 flatpak --supported-arches 命令获取。" + +#: lutris/runners/flatpak.py:46 +msgid "Branch" +msgstr "分支" + +#: lutris/runners/flatpak.py:47 +msgid "The branch to use." +msgstr "要使用的分支(Branch),相当于版本。" + +#: lutris/runners/flatpak.py:53 +msgid "Install type" +msgstr "安装位置" + +#: lutris/runners/flatpak.py:54 +msgid "Can be system or user." +msgstr "" +"可以是 system(安装到系统目录 /var/lib/flatpak)或 user(安装到用户主目录 ~/." +"local/share/flatpak/)。" + +#: lutris/runners/flatpak.py:60 +msgid "Args" +msgstr "启动参数" + +#: lutris/runners/flatpak.py:61 +msgid "Arguments to be passed to the application." +msgstr "传递给应用的启动参数。" + +#: lutris/runners/flatpak.py:66 +msgid "Command" +msgstr "启动命令" + +#: lutris/runners/flatpak.py:67 +msgid "" +"The command to run instead of the one listed in the application metadata." +msgstr "要运行的命令,代替应用程序元数据中列出的命令。" + +#: lutris/runners/flatpak.py:74 +msgid "" +"The directory to run the command in. Note that this must be a directory " +"inside the sandbox." +msgstr "运行命令的目录。请注意,必须是Flatpak沙箱内的目录。" + +#: lutris/runners/flatpak.py:81 lutris/sysoptions.py:450 +msgid "Environment variables" +msgstr "环境变量" + +#: lutris/runners/flatpak.py:82 +msgid "" +"Set an environment variable in the application. This overrides to the " +"Context section from the application metadata." +msgstr "向应用程序传递环境变量,这将覆盖应用程序元数据中的 Context 部分。" -#: lutris/runners/fsuae.py:14 lutris/runners/fsuae.py:25 +#: lutris/runners/flatpak.py:98 +msgid "" +"Flatpak installation is not handled by Lutris.\n" +"Install Flatpak with the package provided by your distribution." +msgstr "" +"Lutris 无法自动帮您安装 Flatpak。\n" +"请从您的发行版软件源安装 Flatpak,或参考以下网址:\n" +"https://www.flatpak.org/setup/" + +#: lutris/runners/fsuae.py:12 msgid "Amiga 500" msgstr "Amiga 500" -#: lutris/runners/fsuae.py:15 +#: lutris/runners/fsuae.py:20 msgid "Amiga 500+" msgstr "Amiga 500+" -#: lutris/runners/fsuae.py:16 +#: lutris/runners/fsuae.py:26 msgid "Amiga 600" msgstr "Amiga 600" -#: lutris/runners/fsuae.py:17 -msgid "Amiga 1000" -msgstr "Amiga 1000" - -#: lutris/runners/fsuae.py:18 lutris/runners/fsuae.py:19 +#: lutris/runners/fsuae.py:32 msgid "Amiga 1200" msgstr "Amiga 1200" -#: lutris/runners/fsuae.py:20 +#: lutris/runners/fsuae.py:38 +msgid "Amiga 3000" +msgstr "Amiga 3000" + +#: lutris/runners/fsuae.py:44 msgid "Amiga 4000" msgstr "Amiga 4000" -#: lutris/runners/fsuae.py:21 lutris/runners/fsuae.py:32 +#: lutris/runners/fsuae.py:51 +msgid "Amiga 1000" +msgstr "Amiga 1000" + +#: lutris/runners/fsuae.py:57 msgid "Amiga CD32" msgstr "Amiga CD32" -#: lutris/runners/fsuae.py:22 lutris/runners/fsuae.py:33 +#: lutris/runners/fsuae.py:66 msgid "Commodore CDTV" msgstr "Commodore CDTV" -#: lutris/runners/fsuae.py:26 -msgid "Amiga 500+ with 1 MB chip RAM" -msgstr "Amiga 500+(1 MB 内存)" - -#: lutris/runners/fsuae.py:27 -msgid "Amiga 600 with 1 MB chip RAM" -msgstr "Amiga 600(1 MB 内存)" - -#: lutris/runners/fsuae.py:28 -msgid "Amiga 1000 with 512 KB chip RAM" -msgstr "Amiga 1000(512 KB 内存)" - -#: lutris/runners/fsuae.py:29 -msgid "Amiga 1200 with 2 MB chip RAM" -msgstr "Amiga 1200(2 MB 内存)" - -#: lutris/runners/fsuae.py:30 -msgid "Amiga 1200 but with 68020 processor" -msgstr "Amiga 1200(68020 处理器)" +#: lutris/runners/fsuae.py:125 +msgid "FS-UAE" +msgstr "FS-UAE" -#: lutris/runners/fsuae.py:31 -msgid "Amiga 4000 with 2 MB chip RAM and a 68040" -msgstr "Amiga 4000(2 MB 内存,68040 处理器)" +#: lutris/runners/fsuae.py:126 +msgid "Amiga emulator" +msgstr "Amiga 模拟器" -#: lutris/runners/fsuae.py:36 +#: lutris/runners/fsuae.py:142 msgid "68000" msgstr "68000" -#: lutris/runners/fsuae.py:37 +#: lutris/runners/fsuae.py:143 msgid "68010" msgstr "68010" -#: lutris/runners/fsuae.py:38 +#: lutris/runners/fsuae.py:144 msgid "68020 with 24-bit addressing" msgstr "68020 带24位寻址" -#: lutris/runners/fsuae.py:39 +#: lutris/runners/fsuae.py:145 msgid "68020" msgstr "68020" -#: lutris/runners/fsuae.py:40 +#: lutris/runners/fsuae.py:146 msgid "68030 without internal MMU" msgstr "68030 不带内部 MMU" -#: lutris/runners/fsuae.py:41 +#: lutris/runners/fsuae.py:147 msgid "68030" msgstr "68030" -#: lutris/runners/fsuae.py:42 +#: lutris/runners/fsuae.py:148 msgid "68040 without internal FPU and MMU" msgstr "68040 不带内部 FPU 和 MMU" -#: lutris/runners/fsuae.py:43 +#: lutris/runners/fsuae.py:149 msgid "68040 without internal FPU" msgstr "68040 不带内部 FPU" -#: lutris/runners/fsuae.py:44 +#: lutris/runners/fsuae.py:150 msgid "68040 without internal MMU" msgstr "68040 不带内部 MMU" -#: lutris/runners/fsuae.py:45 +#: lutris/runners/fsuae.py:151 msgid "68040" msgstr "68040" -#: lutris/runners/fsuae.py:46 +#: lutris/runners/fsuae.py:152 msgid "68060 without internal FPU and MMU" msgstr "68060 不带内部 FPU 和 MMU" -#: lutris/runners/fsuae.py:47 +#: lutris/runners/fsuae.py:153 msgid "68060 without internal FPU" msgstr "68060 不带内部 FPU" -#: lutris/runners/fsuae.py:48 +#: lutris/runners/fsuae.py:154 msgid "68060 without internal MMU" msgstr "68060 不带内部 MMU" -#: lutris/runners/fsuae.py:49 +#: lutris/runners/fsuae.py:155 msgid "68060" msgstr "68060" -#: lutris/runners/fsuae.py:53 lutris/runners/fsuae.py:60 -#: lutris/runners/fsuae.py:94 +#: lutris/runners/fsuae.py:159 lutris/runners/fsuae.py:166 +#: lutris/runners/fsuae.py:200 msgid "0" msgstr "0" -#: lutris/runners/fsuae.py:54 lutris/runners/fsuae.py:61 -#: lutris/runners/fsuae.py:95 +#: lutris/runners/fsuae.py:160 lutris/runners/fsuae.py:167 +#: lutris/runners/fsuae.py:201 msgid "1 MB" msgstr "1 MB" -#: lutris/runners/fsuae.py:55 lutris/runners/fsuae.py:62 -#: lutris/runners/fsuae.py:96 +#: lutris/runners/fsuae.py:161 lutris/runners/fsuae.py:168 +#: lutris/runners/fsuae.py:202 msgid "2 MB" msgstr "2 MB" -#: lutris/runners/fsuae.py:56 lutris/runners/fsuae.py:63 -#: lutris/runners/fsuae.py:97 +#: lutris/runners/fsuae.py:162 lutris/runners/fsuae.py:169 +#: lutris/runners/fsuae.py:203 msgid "4 MB" msgstr "4 MB" -#: lutris/runners/fsuae.py:57 lutris/runners/fsuae.py:64 -#: lutris/runners/fsuae.py:98 +#: lutris/runners/fsuae.py:163 lutris/runners/fsuae.py:170 +#: lutris/runners/fsuae.py:204 msgid "8 MB" msgstr "8 MB" -#: lutris/runners/fsuae.py:65 lutris/runners/fsuae.py:99 +#: lutris/runners/fsuae.py:171 lutris/runners/fsuae.py:205 msgid "16 MB" msgstr "16 MB" -#: lutris/runners/fsuae.py:66 lutris/runners/fsuae.py:100 +#: lutris/runners/fsuae.py:172 lutris/runners/fsuae.py:206 msgid "32 MB" msgstr "32 MB" -#: lutris/runners/fsuae.py:67 lutris/runners/fsuae.py:101 +#: lutris/runners/fsuae.py:173 lutris/runners/fsuae.py:207 msgid "64 MB" msgstr "64 MB" -#: lutris/runners/fsuae.py:68 lutris/runners/fsuae.py:102 +#: lutris/runners/fsuae.py:174 lutris/runners/fsuae.py:208 msgid "128 MB" msgstr "128 MB" -#: lutris/runners/fsuae.py:69 lutris/runners/fsuae.py:103 +#: lutris/runners/fsuae.py:175 lutris/runners/fsuae.py:209 msgid "256 MB" msgstr "256 MB" -#: lutris/runners/fsuae.py:70 +#: lutris/runners/fsuae.py:176 msgid "384 MB" msgstr "384 MB" -#: lutris/runners/fsuae.py:71 +#: lutris/runners/fsuae.py:177 msgid "512 MB" msgstr "512 MB" -#: lutris/runners/fsuae.py:72 +#: lutris/runners/fsuae.py:178 msgid "768 MB" msgstr "768 MB" -#: lutris/runners/fsuae.py:73 +#: lutris/runners/fsuae.py:179 msgid "1 GB" msgstr "1 GB" -#: lutris/runners/fsuae.py:106 +#: lutris/runners/fsuae.py:212 msgid "Turbo" msgstr "Turbo 模式" -#: lutris/runners/fsuae.py:117 +#: lutris/runners/fsuae.py:223 msgid "Boot disk" msgstr "启动盘" -#: lutris/runners/fsuae.py:120 +#: lutris/runners/fsuae.py:226 msgid "" "The main floppy disk file with the game data. \n" "FS-UAE supports floppy images in multiple file formats: ADF, IPF, DMS are " @@ -2453,35 +2568,35 @@ msgstr "" "以 .hdf 结尾的文件将作为硬盘驱动器安装,ISO 光盘映像可以用于 Amiga CD32 和 " "CDTV 型号。" -#: lutris/runners/fsuae.py:130 +#: lutris/runners/fsuae.py:236 msgid "Additionnal floppies" msgstr "额外软盘" -#: lutris/runners/fsuae.py:132 +#: lutris/runners/fsuae.py:238 msgid "The additional floppy disk image(s)." msgstr "额外的软盘映像。" -#: lutris/runners/fsuae.py:135 +#: lutris/runners/fsuae.py:241 msgid "CD-ROM image" msgstr "光盘映像" -#: lutris/runners/fsuae.py:137 +#: lutris/runners/fsuae.py:243 msgid "CD-ROM image to use on non CD32/CDTV models" msgstr "在非 CD32/CDTV 机型上使用的光盘映像" -#: lutris/runners/fsuae.py:144 +#: lutris/runners/fsuae.py:250 msgid "Amiga model" msgstr "Amiga 型号" -#: lutris/runners/fsuae.py:148 +#: lutris/runners/fsuae.py:254 msgid "Specify the Amiga model you want to emulate." msgstr "指定要模拟的 Amiga 机型。" -#: lutris/runners/fsuae.py:152 +#: lutris/runners/fsuae.py:258 msgid "Kickstart ROMs location" msgstr "Kickstart ROM 位置" -#: lutris/runners/fsuae.py:155 +#: lutris/runners/fsuae.py:261 msgid "" "Choose the folder containing original Amiga Kickstart ROMs. Refer to FS-UAE " "documentation to find how to acquire them. Without these, FS-UAE uses a " @@ -2491,33 +2606,33 @@ msgstr "" "如果未设置,FS-UAE 将使用自带的内置 ROM,该内置 ROM 与 Amiga 软件的兼容性较" "差。" -#: lutris/runners/fsuae.py:164 +#: lutris/runners/fsuae.py:270 msgid "Extended Kickstart location" msgstr "扩展 Kickstart 路径" -#: lutris/runners/fsuae.py:167 +#: lutris/runners/fsuae.py:273 msgid "Location of extended Kickstart used for CD32" msgstr "用于 CD32 的扩展 Kickstart 位置" -#: lutris/runners/fsuae.py:171 +#: lutris/runners/fsuae.py:277 msgid "Fullscreen (F12 + S to switch)" msgstr "全屏模式(可用 F12 + S 切换)" -#: lutris/runners/fsuae.py:177 lutris/runners/o2em.py:81 +#: lutris/runners/fsuae.py:283 lutris/runners/o2em.py:81 msgid "Scanlines display style" msgstr "显示模拟扫描线" -#: lutris/runners/fsuae.py:180 lutris/runners/o2em.py:83 +#: lutris/runners/fsuae.py:286 lutris/runners/o2em.py:83 msgid "" "Activates a display filter adding scanlines to imitate the displays of " "yesteryear." msgstr "启用显示滤镜,添加扫描线来模仿以前的 CRT 显像管显示效果。" -#: lutris/runners/fsuae.py:185 +#: lutris/runners/fsuae.py:291 msgid "CPU" msgstr "CPU" -#: lutris/runners/fsuae.py:190 +#: lutris/runners/fsuae.py:296 msgid "" "Use this option to override the CPU model in the emulated Amiga. All Amiga " "models imply a default CPU model, so you only need to use this option if you " @@ -2526,19 +2641,19 @@ msgstr "" "此选项可更改 Amiga 模拟器的 CPU 型号。模拟器中的所有 Amiga 机型都使用同一个默" "认 CPU 型号,使用此选项可选择其他 CPU 型号。" -#: lutris/runners/fsuae.py:196 +#: lutris/runners/fsuae.py:302 msgid "Fast Memory" msgstr "快速内存" -#: lutris/runners/fsuae.py:201 +#: lutris/runners/fsuae.py:307 msgid "Specify how much Fast Memory the Amiga model should have." msgstr "指定 Amiga 机型拥有的快速内存。" -#: lutris/runners/fsuae.py:205 +#: lutris/runners/fsuae.py:311 msgid "Zorro III RAM" msgstr "Zorro III 内存" -#: lutris/runners/fsuae.py:210 +#: lutris/runners/fsuae.py:316 msgid "" "Override the amount of Zorro III Fast memory, specified in KB. Must be a " "multiple of 1024. The default value depends on [amiga_model]. Requires a " @@ -2548,21 +2663,21 @@ msgstr "" "于模拟的 Amiga 机型。需要选择具有32位地址总线的处理器(例如 A1200/020 型号)" "才能使用该选项。" -#: lutris/runners/fsuae.py:216 +#: lutris/runners/fsuae.py:322 msgid "Floppy Drive Volume" msgstr "软驱响声音量" -#: lutris/runners/fsuae.py:221 +#: lutris/runners/fsuae.py:327 msgid "" "Set volume to 0 to disable floppy drive clicks when the drive is empty. Max " "volume is 100." msgstr "将音量设为 0 可禁用驱动器为空时的软盘驱动器卡嗒声。最大音量为 100。" -#: lutris/runners/fsuae.py:226 +#: lutris/runners/fsuae.py:332 msgid "Floppy Drive Speed" msgstr "软驱速度" -#: lutris/runners/fsuae.py:232 +#: lutris/runners/fsuae.py:338 msgid "" "Set the speed of the emulated floppy drives, in percent. For example, you " "can specify 800 to get an 8x increase in speed. Use 0 to specify turbo mode. " @@ -2573,53 +2688,53 @@ msgstr "" "倍。您也可以选择 Turbo 模式,Turbo 模式意味着所有软盘操作都将立即完成。对于大" "多数型号,默认值为 100。" -#: lutris/runners/fsuae.py:240 +#: lutris/runners/fsuae.py:346 msgid "Graphics Card" msgstr "显卡" -#: lutris/runners/fsuae.py:246 +#: lutris/runners/fsuae.py:352 msgid "" "Use this option to enable a graphics card. This option is none by default, " "in which case only chipset graphics (OCS/ECS/AGA) support is available." msgstr "" "使用此选项启用独显。默认情况下此选项为空,此时仅板载显卡(OCS/ECS/AGA)可用。" -#: lutris/runners/fsuae.py:252 +#: lutris/runners/fsuae.py:358 msgid "Graphics Card RAM" msgstr "显存" -#: lutris/runners/fsuae.py:258 +#: lutris/runners/fsuae.py:364 msgid "" "Override the amount of graphics memory on the graphics card. The 0 MB option " "is not really valid, but exists for user interface reasons." msgstr "修改显卡上的显存容量。默认值 0 表示不修改显存容量。" -#: lutris/runners/fsuae.py:264 +#: lutris/runners/fsuae.py:370 msgid "JIT Compiler" msgstr "启用 JIT 即时编译器" -#: lutris/runners/fsuae.py:271 +#: lutris/runners/fsuae.py:377 msgid "Feral GameMode" msgstr "禁用游戏性能优先模式" -#: lutris/runners/fsuae.py:275 +#: lutris/runners/fsuae.py:381 msgid "" "Automatically uses Feral GameMode daemon if available. Set to true to " "disable the feature." msgstr "如果游戏性能优先模式可用,默认会自动启用,您可以在此处禁用该功能。" -#: lutris/runners/fsuae.py:280 +#: lutris/runners/fsuae.py:386 msgid "CPU governor warning" msgstr "禁用 CPU调速器警告" -#: lutris/runners/fsuae.py:285 +#: lutris/runners/fsuae.py:391 msgid "" "Warn if running with a CPU governor other than performance. Set to true to " "disable the warning." msgstr "" "如果 CPU 调速器设置过头,性能不好,则启动时会发出警告。您可以在此处禁用警告。" -#: lutris/runners/fsuae.py:290 +#: lutris/runners/fsuae.py:396 msgid "UAE bsdsocket.library" msgstr "UAE bsdsocket.library" @@ -2772,31 +2887,31 @@ msgstr "" msgid "Resolution" msgstr "分辨率" -#: lutris/runners/libretro.py:65 +#: lutris/runners/libretro.py:64 msgid "Libretro" msgstr "Libretro" -#: lutris/runners/libretro.py:66 +#: lutris/runners/libretro.py:65 msgid "Multi-system emulator" msgstr "多平台模拟器" -#: lutris/runners/libretro.py:79 +#: lutris/runners/libretro.py:78 msgid "Core" msgstr "内核" -#: lutris/runners/libretro.py:88 lutris/runners/zdoom.py:87 +#: lutris/runners/libretro.py:87 lutris/runners/zdoom.py:87 msgid "Config file" msgstr "配置文件" -#: lutris/runners/libretro.py:100 +#: lutris/runners/libretro.py:99 msgid "Verbose logging" msgstr "详细日志" -#: lutris/runners/libretro.py:271 +#: lutris/runners/libretro.py:270 msgid "No core has been selected for this game" msgstr "请先为该游戏选择内核" -#: lutris/runners/libretro.py:282 +#: lutris/runners/libretro.py:281 msgid "No game file specified" msgstr "未指定游戏文件" @@ -2804,7 +2919,7 @@ msgstr "未指定游戏文件" msgid "Runs native games" msgstr "运行原生 Linux 游戏" -#: lutris/runners/linux.py:24 lutris/runners/wine.py:48 +#: lutris/runners/linux.py:24 lutris/runners/wine.py:49 msgid "Executable" msgstr "主程序" @@ -2813,8 +2928,8 @@ msgid "The game's main executable file" msgstr "用于启动游戏的可执行文件" #: lutris/runners/linux.py:30 lutris/runners/mame.py:124 -#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:47 -#: lutris/runners/steam.py:99 lutris/runners/wine.py:54 +#: lutris/runners/scummvm.py:31 lutris/runners/steam.py:48 +#: lutris/runners/steam.py:100 lutris/runners/wine.py:55 #: lutris/runners/zdoom.py:27 msgid "Arguments" msgstr "启动参数" @@ -3303,7 +3418,7 @@ msgstr "Phillips Videopac+" msgid "Brandt Jopac" msgstr "Brandt Jopac" -#: lutris/runners/o2em.py:36 lutris/runners/wine.py:397 +#: lutris/runners/o2em.py:36 lutris/runners/wine.py:398 msgid "Disable" msgstr "禁用" @@ -3645,11 +3760,11 @@ msgstr "索尼 PS3(PlayStation 3)" msgid "Path to EBOOT.BIN" msgstr "EBOOT.BIN 路径" -#: lutris/runners/runner.py:148 +#: lutris/runners/runner.py:165 msgid "Custom executable for the runner" msgstr "自定义运行环境可执行文件" -#: lutris/runners/runner.py:293 +#: lutris/runners/runner.py:310 msgid "" "The required runner is not installed.\n" "Do you wish to install it now?" @@ -3657,10 +3772,22 @@ msgstr "" "所需的运行环境未安装。\n" "是否立即安装?" -#: lutris/runners/runner.py:295 +#: lutris/runners/runner.py:312 msgid "Required runner unavailable" msgstr "所需的运行环境不可用" +#: lutris/runners/runner.py:403 +msgid "Failed to retrieve {} ({}) information" +msgstr "未能检索到 {} ({}) 的信息" + +#: lutris/runners/runner.py:437 +msgid "Failed to extract {}" +msgstr "无法解压 {}" + +#: lutris/runners/runner.py:442 +msgid "Failed to extract {}: {}" +msgstr "无法解压 {}: {}" + #: lutris/runners/ryujinx.py:14 msgid "Ryujinx" msgstr "Ryujinx" @@ -3966,15 +4093,11 @@ msgstr "" msgid "Sound driver" msgstr "音频驱动" -#: lutris/runners/steam.py:28 +#: lutris/runners/steam.py:29 msgid "Runs Steam for Linux games" msgstr "运行 Linux 版 Steam 上的游戏" -#: lutris/runners/steam.py:35 -msgid "Application ID" -msgstr "应用 ID" - -#: lutris/runners/steam.py:38 +#: lutris/runners/steam.py:39 msgid "" "The application ID can be retrieved from the game's page at steampowered." "com. Example: 235320 is the app ID for Original War in: \n" @@ -3984,7 +4107,7 @@ msgstr "" "出,Original War 的应用 ID 是 235320:\n" "http://store.steampowered.com/app/235320/" -#: lutris/runners/steam.py:49 +#: lutris/runners/steam.py:50 msgid "" "Command line arguments used when launching the game.\n" "Ignored when Steam Big Picture mode is enabled." @@ -3992,28 +4115,28 @@ msgstr "" "启动游戏时使用的命令行参数。\n" "启用 Steam 大屏幕模式时被忽略。" -#: lutris/runners/steam.py:55 +#: lutris/runners/steam.py:56 msgid "DRM free mode (Do not launch Steam)" msgstr "DRM free 模式(不启动 Steam)" -#: lutris/runners/steam.py:60 +#: lutris/runners/steam.py:61 msgid "" "Run the game directly without Steam, requires the game binary path to be set" msgstr "在不启动 Steam 的情况下直接运行游戏,需要设置游戏程序路径" -#: lutris/runners/steam.py:66 +#: lutris/runners/steam.py:67 msgid "Game binary path" msgstr "游戏程序路径" -#: lutris/runners/steam.py:68 +#: lutris/runners/steam.py:69 msgid "Path to the game executable (Required by DRM free mode)" msgstr "游戏启动程序(可执行文件)的路径,DRM free 模式必填" -#: lutris/runners/steam.py:74 +#: lutris/runners/steam.py:75 msgid "Start Steam in Big Picture mode" msgstr "启动 Steam 大屏幕模式" -#: lutris/runners/steam.py:78 +#: lutris/runners/steam.py:79 msgid "" "Launches Steam in Big Picture mode.\n" "Only works if Steam is not running or already running in Big Picture mode.\n" @@ -4023,11 +4146,11 @@ msgstr "" "仅在 Steam 未运行或已在大屏幕模式下运行时才有效。\n" "用手柄玩时很有用。" -#: lutris/runners/steam.py:86 +#: lutris/runners/steam.py:87 msgid "Start Steam with LSI" msgstr "启动 Steam LSI(Linux 桌面整合)支持" -#: lutris/runners/steam.py:90 +#: lutris/runners/steam.py:91 msgid "" "Launches steam with LSI patches enabled. Make sure Lutris Runtime is " "disabled and you have LSI installed. https://github.com/solus-project/linux-" @@ -4037,14 +4160,28 @@ msgstr "" "库,并且已安装 LSI。\n" "参阅 https://github.com/solus-project/linux-steam-integration" -#: lutris/runners/steam.py:101 +#: lutris/runners/steam.py:102 msgid "Extra command line arguments used when launching Steam" msgstr "启动 Steam 时使用的额外命令行参数" -#: lutris/runners/steam.py:108 +#: lutris/runners/steam.py:109 msgid "Remove game data (through Steam)" msgstr "删除游戏数据(通过 Steam)" +#: lutris/runners/steam.py:243 +msgid "" +"Steam for Linux installation is not handled by Lutris.\n" +"Please go to http://steampowered.com " +"or install Steam with the package provided by your distribution." +msgstr "" +"Lutris 无法自动帮您安装 Steam。\n" +"请前往 http://steampowered.com 获取 " +"Steam 安装包,或通过您的发行版包管理器安装 Steam。" + +#: lutris/runners/steam.py:256 +msgid "Could not find Steam path, is Steam installed?" +msgstr "找不到 Steam 路径,请确认 Steam 已安装。" + #: lutris/runners/vice.py:13 msgid "Commodore Emulator" msgstr "Commodore 模拟器" @@ -4280,31 +4417,31 @@ msgstr "" "文件 %s 不存在,\n" "请检查您的游戏配置。" -#: lutris/runners/wine.py:38 +#: lutris/runners/wine.py:39 msgid "Runs Windows games" msgstr "运行 Windows 游戏" -#: lutris/runners/wine.py:39 +#: lutris/runners/wine.py:40 msgid "Wine" msgstr "Wine" -#: lutris/runners/wine.py:40 +#: lutris/runners/wine.py:41 msgid "Windows" msgstr "Windows" -#: lutris/runners/wine.py:49 +#: lutris/runners/wine.py:50 msgid "The game's main EXE file" msgstr "要运行的 EXE 可执行文件或 LNK 快捷方式" -#: lutris/runners/wine.py:55 +#: lutris/runners/wine.py:56 msgid "Windows command line arguments used when launching the game" msgstr "启动游戏时使用的 Windows 命令行参数" -#: lutris/runners/wine.py:71 +#: lutris/runners/wine.py:72 msgid "Wine prefix" msgstr "容器目录" -#: lutris/runners/wine.py:73 +#: lutris/runners/wine.py:74 msgid "" "The prefix used by Wine.\n" "It's a directory containing a set of files and folders making up a confined " @@ -4313,47 +4450,47 @@ msgstr "" "Wine 使用的“容器”(也称为“Wine 前缀”)。\n" "它是一个目录,其中包含构成 Windows 兼容环境的一系列文件和文件夹。" -#: lutris/runners/wine.py:81 +#: lutris/runners/wine.py:82 msgid "Prefix architecture" msgstr "容器架构" -#: lutris/runners/wine.py:82 +#: lutris/runners/wine.py:83 msgid "32-bit" msgstr "32位" -#: lutris/runners/wine.py:82 +#: lutris/runners/wine.py:83 msgid "64-bit" msgstr "64位" -#: lutris/runners/wine.py:84 +#: lutris/runners/wine.py:85 msgid "The architecture of the Windows environment" msgstr "Windows 兼容环境的体系结构(32位或64位)" -#: lutris/runners/wine.py:112 +#: lutris/runners/wine.py:113 msgid "Custom (select executable below)" msgstr "自定义(在下方指定 Wine 路径)" -#: lutris/runners/wine.py:114 +#: lutris/runners/wine.py:115 msgid "WineHQ Devel ({})" msgstr "WineHQ 开发版 {}" -#: lutris/runners/wine.py:115 +#: lutris/runners/wine.py:116 msgid "WineHQ Staging ({})" msgstr "WineHQ staging 补丁版 {}" -#: lutris/runners/wine.py:116 +#: lutris/runners/wine.py:117 msgid "Wine Development ({})" msgstr "Wine 开发版 {}" -#: lutris/runners/wine.py:117 +#: lutris/runners/wine.py:118 msgid "System ({})" msgstr "系统自带 Wine {}" -#: lutris/runners/wine.py:169 +#: lutris/runners/wine.py:170 msgid "Wine version" msgstr "Wine 版本" -#: lutris/runners/wine.py:174 +#: lutris/runners/wine.py:175 msgid "" "The version of Wine used to launch the game.\n" "Using the last version is generally recommended, but some games work better " @@ -4362,29 +4499,29 @@ msgstr "" "用于启动游戏的 Wine 版本。\n" "通常建议使用最新版本,但是某些游戏可能在旧版本上运行的更好。" -#: lutris/runners/wine.py:181 +#: lutris/runners/wine.py:182 msgid "Custom Wine executable" msgstr "自定义 Wine 路径" -#: lutris/runners/wine.py:184 +#: lutris/runners/wine.py:185 msgid "" "The Wine executable to be used if you have selected \"Custom\" as the Wine " "version." msgstr "如果您选择“自定义”作为 Wine 版本,则将使用这里指定的 Wine 可执行文件。" -#: lutris/runners/wine.py:189 +#: lutris/runners/wine.py:190 msgid "Use system winetricks" msgstr "使用系统 winetricks" -#: lutris/runners/wine.py:193 +#: lutris/runners/wine.py:194 msgid "Switch on to use /usr/bin/winetricks for winetricks." msgstr "使用 /usr/bin/winetricks 而不是Wine游戏助手附带的 winetricks。" -#: lutris/runners/wine.py:197 +#: lutris/runners/wine.py:198 msgid "Enable DXVK" msgstr "启用 DXVK" -#: lutris/runners/wine.py:204 +#: lutris/runners/wine.py:205 msgid "" "Use DXVK to increase compatibility and performance in Direct3D 11, 10 and 9 " "applications by translating their calls to Vulkan." @@ -4392,30 +4529,30 @@ msgstr "" "通过 DXVK 将 DX9/10/11 调用转换为 Vulkan,可以显著提高 DX9/10/11 游戏在 Wine " "中的帧率,也可以修复某些崩溃问题。" -#: lutris/runners/wine.py:210 +#: lutris/runners/wine.py:211 msgid "DXVK version" msgstr "DXVK 版本" -#: lutris/runners/wine.py:219 +#: lutris/runners/wine.py:220 msgid "Enable VKD3D" msgstr "启用 VKD3D" -#: lutris/runners/wine.py:226 +#: lutris/runners/wine.py:227 msgid "" "Use VKD3D to enable support for Direct3D 12 applications by translating " "their calls to Vulkan." msgstr "" "通过 VKD3D 将 DX12 调用转换为 Vulkan,可以使 DX12 游戏在 Wine 中顺利运行。" -#: lutris/runners/wine.py:231 +#: lutris/runners/wine.py:232 msgid "VKD3D version" msgstr "VKD3D 版本" -#: lutris/runners/wine.py:239 +#: lutris/runners/wine.py:240 msgid "Enable D3D Extras" msgstr "启用 D3D 附加运行库" -#: lutris/runners/wine.py:244 +#: lutris/runners/wine.py:245 msgid "" "Replace Wine's D3DX and D3DCOMPILER libraries with alternative ones. Needed " "for proper functionality of DXVK with some games." @@ -4423,28 +4560,28 @@ msgstr "" "将 Wine 内建的 D3DX,D3DCOMPILER 等库替换为原生版本。有些游戏启用 DXVK 时需要" "替换这些库才能正常显示。" -#: lutris/runners/wine.py:250 +#: lutris/runners/wine.py:251 msgid "D3D Extras version" msgstr "D3D 附加运行库版本" -#: lutris/runners/wine.py:258 +#: lutris/runners/wine.py:259 msgid "Enable DXVK-NVAPI / DLSS" msgstr "启用 DXVK-NVAPI / DLSS" -#: lutris/runners/wine.py:263 +#: lutris/runners/wine.py:264 msgid "Enable emulation of Nvidia's NVAPI and add DLSS support, if available." msgstr "" "启用来自 dxvk-nvapi 项目的 NVIDIA NVAPI 仿真,从而支持 DLSS(如果显卡支持)。" -#: lutris/runners/wine.py:268 +#: lutris/runners/wine.py:269 msgid "DXVK NVAPI version" msgstr "DXVK NVAPI 版本" -#: lutris/runners/wine.py:276 +#: lutris/runners/wine.py:277 msgid "Enable dgvoodoo2" msgstr "启用 dgvoodoo2" -#: lutris/runners/wine.py:281 +#: lutris/runners/wine.py:282 msgid "" "dgvoodoo2 is an alternative translation layer for rendering old games that " "utilize D3D1-7 and Glide APIs. As it translates to D3D11, it's recommended " @@ -4453,15 +4590,15 @@ msgstr "" "dgvoodoo2 是一种替代翻译层,用于渲染使用 D3D1-7 和 Glide API 的旧游戏。由于它" "转换为 D3D11,因此建议将其与 DXVK 结合使用。仅支持 32 位应用程序。" -#: lutris/runners/wine.py:288 +#: lutris/runners/wine.py:289 msgid "dgvoodoo2 version" msgstr "dgvoodoo2 版本" -#: lutris/runners/wine.py:296 +#: lutris/runners/wine.py:297 msgid "Enable Esync" msgstr "启用 Esync" -#: lutris/runners/wine.py:303 +#: lutris/runners/wine.py:304 msgid "" "Enable eventfd-based synchronization (esync). This will increase performance " "in applications that take advantage of multi-core processors." @@ -4469,11 +4606,11 @@ msgstr "" "在 EXE 与 wineserver 进程(Wine 的内核)通信时启用基于事件通知(eventfd)的同" "步(esync),可以提升多核游戏的性能。" -#: lutris/runners/wine.py:310 +#: lutris/runners/wine.py:311 msgid "Enable Fsync" msgstr "启用 Fsync" -#: lutris/runners/wine.py:317 +#: lutris/runners/wine.py:318 msgid "" "Enable futex-based synchronization (fsync). This will increase performance " "in applications that take advantage of multi-core processors. Requires " @@ -4483,11 +4620,11 @@ msgstr "" "(futex)的同步(fsync),可以提升多核游戏的性能。需要安装 5.16 或更高版本的 " "Linux 内核。" -#: lutris/runners/wine.py:325 +#: lutris/runners/wine.py:326 msgid "Enable AMD FidelityFX Super Resolution (FSR)" msgstr "启用 AMD 超级分辨率锐画技术(FSR)" -#: lutris/runners/wine.py:329 +#: lutris/runners/wine.py:330 msgid "" "Use FSR to upscale the game window to native resolution.\n" "Requires Lutris Wine FShack >= 6.13 and setting the game to a lower " @@ -4499,11 +4636,11 @@ msgstr "" "需要 Lutris Wine FShack >= 6.13 版本并将游戏设置为较低的分辨率。\n" "对无边框窗口模式运行的游戏或自带分辨率提升功能的游戏无效。" -#: lutris/runners/wine.py:336 +#: lutris/runners/wine.py:337 msgid "Enable BattlEye Anti-Cheat" msgstr "启用 BattlEye 反作弊支持" -#: lutris/runners/wine.py:340 +#: lutris/runners/wine.py:341 msgid "" "Enable support for BattlEye Anti-Cheat in supported games\n" "Requires Lutris Wine 6.21-2 and newer or any other compatible Wine build.\n" @@ -4513,11 +4650,11 @@ msgstr "" "需要使用 Lutris Wine 6.21-2 及后续版本,或者其他与 BattlEye 兼容的 Wine 版" "本。\n" -#: lutris/runners/wine.py:346 +#: lutris/runners/wine.py:347 msgid "Enable Easy Anti-Cheat" msgstr "启用 EAC(小蓝熊)反作弊支持" -#: lutris/runners/wine.py:350 +#: lutris/runners/wine.py:351 msgid "" "Enable support for Easy Anti-Cheat in supported games\n" "Requires Lutris Wine 7.2 and newer or any other compatible Wine build.\n" @@ -4526,11 +4663,11 @@ msgstr "" "容性支持,否则不会生效)。\n" "需要使用 Lutris Wine 7.2 及后续版本,或者其他与 EAC 兼容的 Wine 版本。\n" -#: lutris/runners/wine.py:356 +#: lutris/runners/wine.py:357 msgid "Windowed (virtual desktop)" msgstr "窗口化(虚拟桌面)" -#: lutris/runners/wine.py:360 +#: lutris/runners/wine.py:361 msgid "" "Run the whole Windows desktop in a window.\n" "Otherwise, run it fullscreen.\n" @@ -4540,19 +4677,19 @@ msgstr "" "如果未启用则全屏运行。\n" "对应 Wine 的“虚拟桌面”选项。" -#: lutris/runners/wine.py:367 +#: lutris/runners/wine.py:368 msgid "Virtual desktop resolution" msgstr "虚拟桌面分辨率" -#: lutris/runners/wine.py:370 +#: lutris/runners/wine.py:371 msgid "The size of the virtual desktop in pixels." msgstr "虚拟桌面的大小(以像素为单位)。" -#: lutris/runners/wine.py:374 +#: lutris/runners/wine.py:375 msgid "Enable DPI Scaling" msgstr "启用 DPI 缩放" -#: lutris/runners/wine.py:378 +#: lutris/runners/wine.py:379 msgid "" "Enables the Windows application's DPI scaling.\n" "Otherwise, the Screen Resolution option in 'Wine configuration' controls " @@ -4561,11 +4698,11 @@ msgstr "" "为 Windows 应用程序启用 DPI 缩放。\n" "如果不启用,则 Wine 设置中的“屏幕分辨率”选项将被采用。" -#: lutris/runners/wine.py:384 +#: lutris/runners/wine.py:385 msgid "DPI" msgstr "指定 DPI" -#: lutris/runners/wine.py:387 +#: lutris/runners/wine.py:388 msgid "" "The DPI to be used if 'Enable DPI Scaling' is turned on.\n" "If blank or 'auto', Lutris will auto-detect this." @@ -4573,19 +4710,19 @@ msgstr "" "设置启用 DPI 缩放后要使用的 DPI 数值。\n" "如果留空或填写 auto,Wine游戏助手将自动设置合适的数值。" -#: lutris/runners/wine.py:393 +#: lutris/runners/wine.py:394 msgid "Mouse Warp Override" msgstr "鼠标捕获行为" -#: lutris/runners/wine.py:396 +#: lutris/runners/wine.py:397 msgid "Enable" msgstr "启用" -#: lutris/runners/wine.py:398 +#: lutris/runners/wine.py:399 msgid "Force" msgstr "强制启用" -#: lutris/runners/wine.py:403 +#: lutris/runners/wine.py:404 msgid "" "Override the default mouse pointer warping behavior\n" "Enable: (Wine default) warp the pointer when the mouse is exclusively " @@ -4598,11 +4735,11 @@ msgstr "" "禁用:从不捕获鼠标指针\n" "强制启用:总是捕获鼠标指针" -#: lutris/runners/wine.py:412 +#: lutris/runners/wine.py:413 msgid "Audio driver" msgstr "音频驱动" -#: lutris/runners/wine.py:423 +#: lutris/runners/wine.py:424 msgid "" "Which audio backend to use.\n" "By default, Wine automatically picks the right one for your system." @@ -4610,53 +4747,53 @@ msgstr "" "使用哪个音频后端。\n" "默认情况下,Wine 会自动选择合适的后端。" -#: lutris/runners/wine.py:431 +#: lutris/runners/wine.py:432 msgid "DLL overrides" msgstr "DLL 函数库顶替" -#: lutris/runners/wine.py:432 +#: lutris/runners/wine.py:433 msgid "Sets WINEDLLOVERRIDES when launching the game." msgstr "启动游戏时设置 WINEDLLOVERRIDES(相当于 winecfg 中的“函数库顶替”)。" -#: lutris/runners/wine.py:436 +#: lutris/runners/wine.py:437 msgid "Output debugging info" msgstr "输出调试信息" -#: lutris/runners/wine.py:440 +#: lutris/runners/wine.py:441 msgid "Enabled" msgstr "启用" -#: lutris/runners/wine.py:441 +#: lutris/runners/wine.py:442 msgid "Inherit from environment" msgstr "根据环境变量" -#: lutris/runners/wine.py:443 +#: lutris/runners/wine.py:444 msgid "Full (CAUTION: Will cause MASSIVE slowdown)" msgstr "全部(注意:运行速度会非常慢!)" -#: lutris/runners/wine.py:446 +#: lutris/runners/wine.py:447 msgid "Output debugging information in the game log (might affect performance)" msgstr "在游戏日志中输出调试信息(可能会影响性能)" -#: lutris/runners/wine.py:451 +#: lutris/runners/wine.py:452 msgid "Show crash dialogs" msgstr "显示崩溃对话框" -#: lutris/runners/wine.py:459 +#: lutris/runners/wine.py:460 msgid "Autoconfigure joypads" msgstr "自动配置游戏手柄" -#: lutris/runners/wine.py:463 +#: lutris/runners/wine.py:464 msgid "" "Automatically disables one of Wine's detected joypad to avoid having 2 " "controllers detected" msgstr "自动禁用 Wine 检测到的其中一个手柄,以避免游戏检测到两个手柄" -#: lutris/runners/wine.py:469 +#: lutris/runners/wine.py:470 msgid "Create a sandbox for Wine folders" msgstr "为 Wine 文件夹创建沙箱" -#: lutris/runners/wine.py:473 +#: lutris/runners/wine.py:474 msgid "" "Do not use $HOME for desktop integration folders.\n" "By default, it use the directories in the confined Windows environment." @@ -4666,19 +4803,19 @@ msgstr "" "默认情况下,启用该选项会使这些文件夹创建在 Wine 容器所在目录中,您也可以自行" "指定其他位置。" -#: lutris/runners/wine.py:481 +#: lutris/runners/wine.py:482 msgid "Sandbox directory" msgstr "对主目录启用沙箱" -#: lutris/runners/wine.py:482 +#: lutris/runners/wine.py:483 msgid "Custom directory for desktop integration folders." msgstr "自定义“文档”、“下载”、“视频”等文件夹的存放位置。" -#: lutris/runners/wine.py:490 +#: lutris/runners/wine.py:492 msgid "Run EXE inside Wine prefix" msgstr "在 Wine 容器中运行 EXE" -#: lutris/runners/wine.py:492 +#: lutris/runners/wine.py:493 msgid "Wine configuration" msgstr "Wine 设置" @@ -4695,10 +4832,14 @@ msgid "Wine registry" msgstr "Wine 注册表编辑器" #: lutris/runners/wine.py:497 +msgid "Kill all Wine processes" +msgstr "结束所有 Wine 进程" + +#: lutris/runners/wine.py:498 msgid "Winetricks" msgstr "Winetricks" -#: lutris/runners/wine.py:498 +#: lutris/runners/wine.py:499 msgid "Wine Control Panel" msgstr "Wine 控制面板" @@ -4797,35 +4938,124 @@ msgstr "" "用于加载用户创建的配置文件。如果指定,文件必须包含 wad 目录列表,否则启动将失" "败。" +#: lutris/services/amazon.py:59 lutris/services/amazon.py:638 +msgid "Amazon Prime Gaming" +msgstr "亚马逊Prime游戏" + +#: lutris/services/amazon.py:180 +msgid "No Amazon user data available, please log in again" +msgstr "亚马逊用户数据不可用,请重新登录" + +#: lutris/services/amazon.py:245 +msgid "Unable to register device, please log in again" +msgstr "无法注册设备,请重新登录" + +#: lutris/services/amazon.py:260 +msgid "Invalid token info found, please log in again" +msgstr "令牌信息无效,请重新登录" + +#: lutris/services/amazon.py:294 +msgid "Unable to refresh token, please log in again" +msgstr "令牌更新失败,请重新登录" + +#: lutris/services/amazon.py:440 +msgid "" +"Unable to get game manifest info, please check your Amazon credentials and " +"internet connectivity" +msgstr "无法获取游戏清单信息,请检查您的亚马逊登录状态和互联网连接" + +#: lutris/services/amazon.py:459 +msgid "" +"Unable to get game manifest, please check your Amazon credentials and " +"internet connectivity" +msgstr "无法获取游戏清单,请检查您的亚马逊登录状态和互联网连接" + +#: lutris/services/amazon.py:475 +msgid "" +"Unknown compression algorithm found in manifest, please check your Amazon " +"credentials and internet connectivity" +msgstr "清单中发现未知压缩算法,请检查您的亚马逊登录状态和互联网连接" + +#: lutris/services/amazon.py:506 +msgid "" +"Unable to get the patches of game, please check your Amazon credentials and " +"internet connectivity" +msgstr "无法获取游戏补丁,请检查您的亚马逊登录状态和互联网连接" + +#: lutris/services/amazon.py:565 +msgid "" +"Unable to get fuel.json file, please check your Amazon credentials and " +"internet connectivity" +msgstr "无法获取 fuel.json 文件,请检查您的亚马逊登录状态和互联网连接" + +#: lutris/services/amazon.py:625 +#, python-format +msgid "Installing file: %s" +msgstr "正在安装:%s" + +#: lutris/services/base.py:325 +#, python-format +msgid "" +"This service requires a game launcher. The following steps will install it.\n" +"Once the client is installed, you can login to %s." +msgstr "" +"此服务需要安装启动器,请通过以下步骤安装。\n" +"安装完成后,您就可以登录到 %s。" + #: lutris/services/battlenet.py:13 msgid "Battle.net" msgstr "暴雪战网" -#: lutris/services/bethesda.py:13 -msgid "Bethesda" -msgstr "Bethesda" - -#: lutris/services/egs.py:134 +#: lutris/services/egs.py:136 msgid "Epic Games Store" msgstr "Epic 游戏商城" -#: lutris/services/gog.py:68 +#: lutris/services/flathub.py:57 +msgid "Flathub" +msgstr "Flathub" + +#: lutris/services/gog.py:69 msgid "GOG" msgstr "GOG" -#: lutris/services/humblebundle.py:57 +#: lutris/services/gog.py:305 lutris/services/gog.py:307 +#, python-format +msgid "The download of '%s' failed." +msgstr "下载 '%s' 失败。" + +#: lutris/services/gog.py:435 +msgid "Couldn't load the download links for this game" +msgstr "无法加载此游戏的下载链接" + +#: lutris/services/gog.py:481 +msgid "Unable to determine correct file to launch installer" +msgstr "找不到游戏安装程序" + +#: lutris/services/gog.py:488 +msgid "Couldn't load the downloads for this game" +msgstr "无法加载此游戏的下载条目" + +#: lutris/services/humblebundle.py:58 msgid "Humble Bundle" msgstr "Humble Bundle" +#: lutris/services/humblebundle.py:224 +msgid "The download URL for the game could not be determined." +msgstr "找不到此游戏的下载地址。" + +#: lutris/services/humblebundle.py:226 +msgid "No game found on Humble Bundle" +msgstr "在 Humble Bundle 上找不到游戏" + #: lutris/services/itchio.py:13 msgid "Itch.io (Not implemented)" msgstr "Itch.io(未实现)" -#: lutris/services/origin.py:87 +#: lutris/services/origin.py:129 msgid "Origin" msgstr "Origin" -#: lutris/services/steam.py:102 +#: lutris/services/steam.py:105 msgid "" "Failed to load games. Check that your profile is set to public during the " "sync." @@ -4839,11 +5069,11 @@ msgstr "Wine Steam" msgid "TOSEC" msgstr "TOSEC" -#: lutris/services/ubisoft.py:81 +#: lutris/services/ubisoft.py:82 msgid "Ubisoft Connect" msgstr "Ubisoft Connect" -#: lutris/services/xdg.py:43 +#: lutris/services/xdg.py:44 msgid "Local" msgstr "本地文件" @@ -4855,11 +5085,11 @@ msgstr "©2010-2021 Lutris 团队" msgid "The Lutris team" msgstr "Lutris 团队" -#: lutris/startup.py:87 +#: lutris/startup.py:86 msgid "Your NVIDIA driver is outdated." msgstr "您的 NVIDIA 显卡驱动已过时。" -#: lutris/startup.py:89 +#: lutris/startup.py:88 #, python-format msgid "" "You are currently running driver %s which does not fully support all " @@ -4871,11 +5101,11 @@ msgstr "" "请按照我们的安装指南升级驱动程序。\n" "如果您的显卡太老,不支持安装新版显卡驱动,您可以勾选“不再显示此信息”。" -#: lutris/startup.py:120 +#: lutris/startup.py:119 msgid "Missing vulkan libraries" msgstr "缺少 Vulkan 支持库" -#: lutris/startup.py:122 +#: lutris/startup.py:121 #, python-format msgid "" "Lutris was unable to detect Vulkan support for the %s architecture.\n" @@ -4887,52 +5117,71 @@ msgstr "" "缺少 Vulkan 支持库会使许多游戏和程序无法运行。\n" "请参考以下指南进行安装:安装图形驱动程序。" -#: lutris/startup.py:128 +#: lutris/startup.py:127 msgid " and " msgstr "、" +#: lutris/startup.py:183 +#, python-format +msgid "" +"Failed to open database file in %s. Try renaming this file and relaunch " +"Lutris" +msgstr "无法打开数据库文件 '%s',请重命名该文件并重启Lutris" + #: lutris/sysoptions.py:29 msgid "Keep current" msgstr "保持现状" -#: lutris/sysoptions.py:37 lutris/sysoptions.py:46 lutris/sysoptions.py:57 -#: lutris/sysoptions.py:501 +#: lutris/sysoptions.py:43 +msgid "(recommended)" +msgstr "(推荐)" + +#: lutris/sysoptions.py:46 +msgid "System" +msgstr "系统默认" + +#: lutris/sysoptions.py:55 lutris/sysoptions.py:64 lutris/sysoptions.py:75 +#: lutris/sysoptions.py:540 msgid "Off" msgstr "关闭" -#: lutris/sysoptions.py:38 +#: lutris/sysoptions.py:56 msgid "Primary" msgstr "首选屏幕" -#: lutris/sysoptions.py:85 +#: lutris/sysoptions.py:101 msgid "Auto: WARNING -- No Vulkan Loader detected!" msgstr "自动:【警告】未检测到 Vulkan 加载器!" -#: lutris/sysoptions.py:119 +#: lutris/sysoptions.py:127 msgid "Auto: Intel Open Source (MESA: ANV)" msgstr "自动:Intel Open Source (MESA: ANV)" -#: lutris/sysoptions.py:121 +#: lutris/sysoptions.py:128 msgid "Auto: AMD RADV Open Source (MESA: RADV)" msgstr "自动:AMD RADV Open Source (MESA: RADV)" -#: lutris/sysoptions.py:123 +#: lutris/sysoptions.py:129 msgid "Auto: Nvidia Proprietary" msgstr "自动:Nvidia Proprietary" -#: lutris/sysoptions.py:145 +#: lutris/sysoptions.py:165 +msgid "Unspecified (Use System Default)" +msgstr "不指定(使用系统默认值)" + +#: lutris/sysoptions.py:173 msgid "Default installation folder" msgstr "默认安装目录" -#: lutris/sysoptions.py:148 +#: lutris/sysoptions.py:176 msgid "The default folder where you install your games." msgstr "安装游戏的默认文件夹。" -#: lutris/sysoptions.py:156 +#: lutris/sysoptions.py:184 msgid "Disable Lutris Runtime" msgstr "禁用 Lutris 运行库" -#: lutris/sysoptions.py:159 +#: lutris/sysoptions.py:187 msgid "" "The Lutris Runtime loads some libraries before running the game, which can " "cause some incompatibilities in some cases. Check this option to disable it." @@ -4940,36 +5189,36 @@ msgstr "" "Lutris 运行库是在游戏运行前加载的一系列共享库。在某些情况下,这可能会导致不兼" "容。选中此选项可将其禁用。" -#: lutris/sysoptions.py:166 +#: lutris/sysoptions.py:194 msgid "Prefer system libraries" msgstr "优先使用系统库" -#: lutris/sysoptions.py:168 +#: lutris/sysoptions.py:196 msgid "" "When the runtime is enabled, prioritize the system libraries over the " "provided ones." msgstr "" -"启用后,将优先使用本机 Linux 系统提供的共享库,而不是Wine游戏助手或运行环境自带的" -"库。" +"启用后,将优先使用本机 Linux 系统提供的共享库,而不是Wine游戏助手或运行环境自" +"带的库。" -#: lutris/sysoptions.py:174 +#: lutris/sysoptions.py:202 msgid "Restore resolution on game exit" msgstr "游戏退出时恢复分辨率" -#: lutris/sysoptions.py:176 +#: lutris/sysoptions.py:204 msgid "" "Some games don't restore your screen resolution when \n" "closed or when they crash. This is when this option comes \n" "into play to save your bacon." msgstr "" -"某些游戏在关闭或意外崩溃时无法恢复屏幕分辨率,启用这个选项让Wine游戏助手帮您恢" -"复。" +"某些游戏在关闭或意外崩溃时无法恢复屏幕分辨率,启用这个选项让Wine游戏助手帮您" +"恢复。" -#: lutris/sysoptions.py:183 +#: lutris/sysoptions.py:211 msgid "Enable gamescope" msgstr "启用 gamescope 游戏窗口隔离" -#: lutris/sysoptions.py:187 +#: lutris/sysoptions.py:215 msgid "" "Use gamescope to draw the game window isolated from your desktop.\n" "Use Ctrl+Super+F to toggle fullscreen" @@ -4977,35 +5226,35 @@ msgstr "" "使用 gamescope 绘制与当前桌面隔离的游戏窗口。\n" "可按 Ctrl+Super+F 组合键切换全屏与窗口模式。" -#: lutris/sysoptions.py:193 +#: lutris/sysoptions.py:221 msgid "Gamescope output resolution" msgstr "gamescope 输出分辨率" -#: lutris/sysoptions.py:197 +#: lutris/sysoptions.py:225 msgid "Resolution of the window on your desktop" msgstr "窗口在桌面上显示的分辨率" -#: lutris/sysoptions.py:202 +#: lutris/sysoptions.py:230 msgid "Gamescope game resolution" msgstr "gamescope 游戏分辨率" -#: lutris/sysoptions.py:206 +#: lutris/sysoptions.py:234 msgid "Resolution of the screen visible to the game" msgstr "游戏读取到的屏幕分辨率" -#: lutris/sysoptions.py:211 +#: lutris/sysoptions.py:239 msgid "Restrict number of cores used" msgstr "限制 CPU 核数" -#: lutris/sysoptions.py:214 +#: lutris/sysoptions.py:242 msgid "Restrict the game to a maximum number of CPU cores." msgstr "限制游戏可用的最大 CPU 核数。" -#: lutris/sysoptions.py:219 +#: lutris/sysoptions.py:247 msgid "Restrict number of cores to" msgstr "最大可用核数" -#: lutris/sysoptions.py:222 +#: lutris/sysoptions.py:250 msgid "" "Maximum number of CPU cores to be used, if 'Restrict number of cores used' " "is turned on." @@ -5013,11 +5262,11 @@ msgstr "" "如果启用了“限制 CPU 核数”,则在此处设置要使用的最大 CPU 核数,默认为 1(单" "核)。" -#: lutris/sysoptions.py:228 +#: lutris/sysoptions.py:256 msgid "Restore gamma on game exit" msgstr "游戏退出时恢复伽玛值(亮度阈值)" -#: lutris/sysoptions.py:230 +#: lutris/sysoptions.py:258 msgid "" "Some games don't correctly restores gamma on exit, making your display too " "bright. Select this option to correct it." @@ -5025,58 +5274,58 @@ msgstr "" "某些游戏退出时无法正确恢复伽玛值(亮度阈值),从而使显示效果太亮或太暗。启用" "此项让Wine游戏助手帮您恢复。" -#: lutris/sysoptions.py:235 +#: lutris/sysoptions.py:263 msgid "Disable desktop effects" msgstr "禁用桌面特效" -#: lutris/sysoptions.py:239 +#: lutris/sysoptions.py:267 msgid "" "Disable desktop effects while game is running, reducing stuttering and " "increasing performance" msgstr "在游戏运行时禁用桌面特效(桌面合成),可减少卡顿、提高性能" -#: lutris/sysoptions.py:244 +#: lutris/sysoptions.py:272 msgid "Disable screen saver" msgstr "禁用屏幕保护程序" -#: lutris/sysoptions.py:249 +#: lutris/sysoptions.py:277 msgid "" "Disable the screen saver while a game is running. Requires the screen " "saver's functionality to be exposed over DBus." msgstr "" "在游戏运行时禁用屏幕保护程序。屏幕保护程序需要向 DBus 注册,否则该选项无效。" -#: lutris/sysoptions.py:256 +#: lutris/sysoptions.py:284 msgid "Reset PulseAudio" msgstr "重置 PulseAudio 声音服务" -#: lutris/sysoptions.py:260 +#: lutris/sysoptions.py:288 msgid "Restart PulseAudio before launching the game." msgstr "启动游戏前重启 PulseAudio 声音服务。" -#: lutris/sysoptions.py:265 +#: lutris/sysoptions.py:293 msgid "Reduce PulseAudio latency" msgstr "减少 PulseAudio 延迟" -#: lutris/sysoptions.py:269 +#: lutris/sysoptions.py:297 msgid "" "Set the environment variable PULSE_LATENCY_MSEC=60 to improve audio quality " "on some games" msgstr "设置环境变量 PULSE_LATENCY_MSEC=60 以提高某些游戏的音频质量" -#: lutris/sysoptions.py:275 +#: lutris/sysoptions.py:303 msgid "Switch to US keyboard layout" msgstr "切换到美式键盘布局" -#: lutris/sysoptions.py:278 +#: lutris/sysoptions.py:306 msgid "Switch to US keyboard QWERTY layout while game is running" msgstr "游戏运行时切换到美式键盘 QWERTY 布局" -#: lutris/sysoptions.py:285 +#: lutris/sysoptions.py:313 msgid "Optimus launcher (NVIDIA Optimus laptops)" msgstr "Optimus 启动器(NVIDIA Optimus 笔记本电脑)" -#: lutris/sysoptions.py:287 +#: lutris/sysoptions.py:315 msgid "" "If you have installed the primus or bumblebee packages, select what launcher " "will run the game with the command, activating your NVIDIA graphic chip for " @@ -5088,11 +5337,11 @@ msgstr "" "活 NVIDIA 独显以实现较高的3D性能。primusrun 通常性能更佳,但 optirun 和 " "virtualgl 的兼容性更好。Primus VK 通过 bumblebee 软件包提供 vulkan 支持。" -#: lutris/sysoptions.py:299 +#: lutris/sysoptions.py:327 msgid "Vulkan ICD loader" msgstr "Vulkan ICD 加载器" -#: lutris/sysoptions.py:301 +#: lutris/sysoptions.py:329 msgid "" "The ICD loader is a library that is placed between a Vulkan application and " "any number of Vulkan drivers, in order to support multiple drivers and the " @@ -5101,34 +5350,34 @@ msgstr "" "ICD 加载器是一个库,它位于 Vulkan 应用程序和任意数量的 Vulkan 驱动程序之间," "以便支持多个驱动程序以及跨这些驱动程序工作的实例级功能。" -#: lutris/sysoptions.py:309 +#: lutris/sysoptions.py:337 msgid "FPS counter (MangoHud)" msgstr "显示帧率(MangoHud)" -#: lutris/sysoptions.py:312 +#: lutris/sysoptions.py:340 msgid "" "Display the game's FPS + other information. Requires MangoHud to be " "installed." msgstr "显示游戏的 FPS 和其他信息。需要安装MangoHud。" -#: lutris/sysoptions.py:321 +#: lutris/sysoptions.py:349 msgid "Limit the game's FPS to desired number" msgstr "限制游戏最大帧率不超过指定数值" -#: lutris/sysoptions.py:328 +#: lutris/sysoptions.py:356 msgid "Enable Feral GameMode" msgstr "启用游戏性能优先模式" -#: lutris/sysoptions.py:329 +#: lutris/sysoptions.py:357 msgid "Request a set of optimisations be temporarily applied to the host OS" msgstr "" "在游戏运行时,请求将一组优化临时应用于主机 Linux 操作系统,以提升游戏性能" -#: lutris/sysoptions.py:336 +#: lutris/sysoptions.py:364 msgid "Enable NVIDIA Prime Render Offload" msgstr "启用 NVIDIA Prime 渲染卸载" -#: lutris/sysoptions.py:337 +#: lutris/sysoptions.py:365 msgid "" "If you have the latest NVIDIA driver and the properly patched xorg-server " "(see https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/" @@ -5142,11 +5391,11 @@ msgstr "" "Render Offload)功能。这将应用 __NV_PRIME_RENDER_OFFLOAD=1 和 " "__GLX_VENDOR_LIBRARY_NAME=nvidia 环境变量。" -#: lutris/sysoptions.py:348 +#: lutris/sysoptions.py:376 msgid "Use discrete graphics" msgstr "使用独立显卡" -#: lutris/sysoptions.py:350 +#: lutris/sysoptions.py:378 msgid "" "If you have open source graphic drivers (Mesa), selecting this option will " "run the game with the 'DRI_PRIME=1' environment variable, activating your " @@ -5155,11 +5404,11 @@ msgstr "" "如果您具有开源图形驱动程序(Mesa),则选择此选项将使用环境变量“DRI_PRIME=1”来" "运行游戏,从而激活您的独显以获得更高的3D性能。" -#: lutris/sysoptions.py:358 +#: lutris/sysoptions.py:386 msgid "SDL 1.2 Fullscreen Monitor" msgstr "指定 SDL 1.2 程序使用的显示器" -#: lutris/sysoptions.py:362 +#: lutris/sysoptions.py:390 msgid "" "Hint SDL 1.2 games to use a specific monitor when going fullscreen by " "setting the SDL_VIDEO_FULLSCREEN environment variable" @@ -5167,11 +5416,11 @@ msgstr "" "通过设置 SDL_VIDEO_FULLSCREEN 环境变量,让 SDL 1.2 游戏在进入全屏模式时使用特" "定的显示器" -#: lutris/sysoptions.py:369 +#: lutris/sysoptions.py:397 msgid "Turn off monitors except" msgstr "关闭除指定显示器外的其他显示器" -#: lutris/sysoptions.py:374 +#: lutris/sysoptions.py:402 msgid "" "Only keep the selected screen active while the game is running. \n" "This is useful if you have a dual-screen setup, and are \n" @@ -5180,19 +5429,19 @@ msgstr "" "游戏运行时仅使选定的屏幕保持活动状态。\n" "如果您有多块显示器,并且在全屏模式下运行游戏时出现显示问题,可以试试该选项。" -#: lutris/sysoptions.py:382 +#: lutris/sysoptions.py:410 msgid "Switch resolution to" msgstr "切换分辨率为" -#: lutris/sysoptions.py:386 +#: lutris/sysoptions.py:414 msgid "Switch to this screen resolution while the game is running." msgstr "在游戏运行时切换到此屏幕分辨率。" -#: lutris/sysoptions.py:390 +#: lutris/sysoptions.py:418 msgid "CLI mode" msgstr "文本模式" -#: lutris/sysoptions.py:394 +#: lutris/sysoptions.py:422 msgid "" "Enable a terminal for text-based games. Only useful for ASCII based games. " "May cause issues with graphical games." @@ -5200,11 +5449,11 @@ msgstr "" "为基于文本的游戏打开终端,仅对基于 ASCII 的游戏有用。可能会导致使用图形的游戏" "出现问题。" -#: lutris/sysoptions.py:399 +#: lutris/sysoptions.py:427 msgid "Text based games emulator" msgstr "基于文本的游戏模拟器" -#: lutris/sysoptions.py:404 +#: lutris/sysoptions.py:432 msgid "" "The terminal emulator used with the CLI mode. Choose from the list of " "detected terminal apps or enter the terminal's command or path." @@ -5213,70 +5462,76 @@ msgstr "" "终端的命令或路径。\n" "注意:不能保证所有终端模拟器都与Wine游戏助手兼容。" -#: lutris/sysoptions.py:411 -msgid "Environment variables" -msgstr "环境变量" +#: lutris/sysoptions.py:439 +msgid "Locale" +msgstr "区域设置" -#: lutris/sysoptions.py:412 +#: lutris/sysoptions.py:445 +msgid "" +"Can be used to force certain locale for an app. Fixes encoding issues in " +"legacy software." +msgstr "强制指定应用程序的某些区域设置,可用于修复旧版软件中的乱码问题。" + +#: lutris/sysoptions.py:451 msgid "Environment variables loaded at run time" msgstr "游戏运行时加载的环境变量" -#: lutris/sysoptions.py:417 +#: lutris/sysoptions.py:456 msgid "AntiMicroX Profile" msgstr "AntiMicroX 配置" -#: lutris/sysoptions.py:419 +#: lutris/sysoptions.py:458 msgid "Path to an AntiMicroX profile file" msgstr "AntiMicroX 配置文件的路径" -#: lutris/sysoptions.py:424 +#: lutris/sysoptions.py:463 msgid "Command prefix" msgstr "命令前缀" -#: lutris/sysoptions.py:426 +#: lutris/sysoptions.py:465 msgid "" "Command line instructions to add in front of the game's execution command." msgstr "添加到游戏启动命令之前的命令行指令。" -#: lutris/sysoptions.py:432 +#: lutris/sysoptions.py:471 msgid "Manual script" msgstr "维护脚本" -#: lutris/sysoptions.py:434 +#: lutris/sysoptions.py:473 msgid "Script to execute from the game's contextual menu" msgstr "" "设置该选项后,游戏的右键菜单中将出现“执行维护脚本”菜单项,点击可快速执行该脚" "本。" -#: lutris/sysoptions.py:439 +#: lutris/sysoptions.py:478 msgid "Pre-launch script" msgstr "预启动脚本" -#: lutris/sysoptions.py:441 +#: lutris/sysoptions.py:480 msgid "Script to execute before the game starts" msgstr "游戏开始前执行的脚本" -#: lutris/sysoptions.py:446 +#: lutris/sysoptions.py:485 msgid "Wait for pre-launch script completion" msgstr "等待预启动脚本完成" -#: lutris/sysoptions.py:449 +#: lutris/sysoptions.py:488 msgid "Run the game only once the pre-launch script has exited" msgstr "等待预启动脚本退出后才运行游戏" -#: lutris/sysoptions.py:454 +#: lutris/sysoptions.py:493 msgid "Post-exit script" msgstr "退出脚本" -#: lutris/sysoptions.py:456 +#: lutris/sysoptions.py:495 msgid "Script to execute when the game exits" msgstr "游戏退出时执行的脚本" -#: lutris/sysoptions.py:461 +#: lutris/sysoptions.py:500 msgid "Include processes" msgstr "包括进程" -#: lutris/sysoptions.py:463 +#: lutris/sysoptions.py:502 msgid "" "What processes to include in process monitoring. This is to override the " "built-in exclude list.\n" @@ -5287,11 +5542,11 @@ msgstr "" "用空格分隔的列表,名称包括空格的进程可以用引号引起来。\n" "如果列表中的任一进程仍在运行,Wine游戏助手就视为游戏仍在运行。" -#: lutris/sysoptions.py:471 +#: lutris/sysoptions.py:510 msgid "Exclude processes" msgstr "排除进程" -#: lutris/sysoptions.py:473 +#: lutris/sysoptions.py:512 msgid "" "What processes to exclude in process monitoring. For example background " "processes that stick around after the game has been closed.\n" @@ -5302,11 +5557,11 @@ msgstr "" "用空格分隔的列表,名称包括空格的进程可以用引号引起来。\n" "如果只有排除列表中的进程在运行,Wine游戏助手就视为游戏已停止运行。" -#: lutris/sysoptions.py:482 +#: lutris/sysoptions.py:521 msgid "Killswitch file" msgstr "Killswitch 文件" -#: lutris/sysoptions.py:484 +#: lutris/sysoptions.py:523 msgid "" "Path to a file which will stop the game when deleted \n" "(usually /dev/input/js0 to stop the game on joystick unplugging)" @@ -5314,11 +5569,11 @@ msgstr "" "设置一个文件,如果该文件被删除则停止游戏\n" "(通常是 /dev/input/js0,用于在拔下摇杆时停止游戏)" -#: lutris/sysoptions.py:491 +#: lutris/sysoptions.py:530 msgid "SDL2 gamepad mapping" msgstr "SDL2 游戏手柄映射" -#: lutris/sysoptions.py:493 +#: lutris/sysoptions.py:532 msgid "" "SDL_GAMECONTROLLERCONFIG mapping string or path to a custom gamecontrollerdb." "txt file containing mappings." @@ -5326,63 +5581,63 @@ msgstr "" "SDL_GAMECONTROLLERCONFIG 映射字符串或包含映射的自定义 gamecontrollerdb.txt 文" "件路径。" -#: lutris/sysoptions.py:498 +#: lutris/sysoptions.py:537 msgid "Use Xephyr" msgstr "使用 Xephyr" -#: lutris/sysoptions.py:502 +#: lutris/sysoptions.py:541 msgid "8BPP (256 colors)" msgstr "8位(256色)" -#: lutris/sysoptions.py:503 +#: lutris/sysoptions.py:542 msgid "16BPP (65536 colors)" msgstr "16位(6万色)" -#: lutris/sysoptions.py:504 +#: lutris/sysoptions.py:543 msgid "24BPP (16M colors)" msgstr "24位(1600万色)" -#: lutris/sysoptions.py:508 +#: lutris/sysoptions.py:547 msgid "Run program in Xephyr to support 8BPP and 16BPP color modes" msgstr "在 Xephyr 中运行程序以支持8位和16位色彩模式" -#: lutris/sysoptions.py:513 +#: lutris/sysoptions.py:552 msgid "Xephyr resolution" msgstr "Xephyr 分辨率" -#: lutris/sysoptions.py:515 +#: lutris/sysoptions.py:554 msgid "Screen resolution of the Xephyr server" msgstr "Xephyr 服务器的屏幕分辨率" -#: lutris/sysoptions.py:520 +#: lutris/sysoptions.py:559 msgid "Xephyr Fullscreen" msgstr "Xephyr 全屏模式" -#: lutris/sysoptions.py:523 +#: lutris/sysoptions.py:562 msgid "Open Xephyr in fullscreen (at the desktop resolution)" msgstr "以桌面分辨率全屏打开 Xephyr" -#: lutris/util/system.py:20 +#: lutris/util/system.py:21 msgid "Documents" msgstr "文档" -#: lutris/util/system.py:21 +#: lutris/util/system.py:22 msgid "Downloads" msgstr "下载" -#: lutris/util/system.py:22 +#: lutris/util/system.py:23 msgid "Desktop" msgstr "桌面" -#: lutris/util/system.py:23 lutris/util/system.py:25 +#: lutris/util/system.py:24 lutris/util/system.py:26 msgid "Pictures" msgstr "图片" -#: lutris/util/system.py:24 +#: lutris/util/system.py:25 msgid "Videos" msgstr "视频" -#: lutris/util/system.py:26 +#: lutris/util/system.py:27 msgid "Projects" msgstr "工程" @@ -5395,21 +5650,21 @@ msgstr "育碧身份验证已失效:%s" msgid "Manual" msgstr "手动指定" -#: lutris/util/wine/wine.py:346 lutris/util/wine/wine.py:384 -#: lutris/util/wine/wine.py:404 +#: lutris/util/wine/wine.py:350 lutris/util/wine/wine.py:388 +#: lutris/util/wine/wine.py:408 msgid "Launch anyway and do not show this message again." msgstr "强行启动,以后不再显示该警告(游戏可能无法运行)" -#: lutris/util/wine/wine.py:348 lutris/util/wine/wine.py:386 -#: lutris/util/wine/wine.py:406 +#: lutris/util/wine/wine.py:352 lutris/util/wine/wine.py:390 +#: lutris/util/wine/wine.py:410 msgid "Enable anyway and do not show this message again." msgstr "强行启用,以后不再显示该警告(游戏可能无法运行)" -#: lutris/util/wine/wine.py:353 +#: lutris/util/wine/wine.py:357 msgid "Vulkan is not installed or is not supported by your system" msgstr "您未安装支持 Vulkan 的显卡驱动" -#: lutris/util/wine/wine.py:355 +#: lutris/util/wine/wine.py:359 msgid "" "If you have compatible hardware, please follow the installation procedures " "as described in\n" @@ -5419,16 +5674,17 @@ msgstr "" "如果您的显卡支持 Vulkan,请参考以下文档来安装 Vulkan 驱动:\n" "显卡驱动安装教程" -#: lutris/util/wine/wine.py:367 +#: lutris/util/wine/wine.py:371 msgid "" "Your limits are not set correctly. Please increase them as described here: " "How-to:-" "Esync (https://github.com/lutris/docs/blob/master/HowToEsync.md)" msgstr "" "您的系统文件描述符上限太小。请参考以下文档来增大文件描述符上限,否则 Esync 可" -"能不能正常工作:如何为Esync增大系统文件描述符上限" +"能不能正常工作:如" +"何为Esync增大系统文件描述符上限" -#: lutris/util/wine/wine.py:376 +#: lutris/util/wine/wine.py:380 msgid "" "Your kernel is not patched for fsync. Please get a patched kernel to use " "fsync." @@ -5436,11 +5692,11 @@ msgstr "" "您的 Linux 内核没有打过 fsync 补丁。请获取打过补丁的 Linux 内核以使用 fsync," "或者关闭 fsync 开关。此外,5.16 及以上版本的内核默认支持 fsync。" -#: lutris/util/wine/wine.py:390 lutris/util/wine/wine.py:410 +#: lutris/util/wine/wine.py:394 lutris/util/wine/wine.py:414 msgid "Incompatible Wine version detected" msgstr "检测到不兼容的 Wine 版本" -#: lutris/util/wine/wine.py:392 +#: lutris/util/wine/wine.py:396 msgid "" "The Wine build you have selected does not support Esync.\n" "Please switch to an Esync-capable version." @@ -5448,7 +5704,7 @@ msgstr "" "您选择的 Wine 版本不支持 Esync。\n" "请选择支持 Esync 的 Wine 版本,或者禁用 Esync。" -#: lutris/util/wine/wine.py:412 +#: lutris/util/wine/wine.py:416 msgid "" "The Wine build you have selected does not support Fsync.\n" "Please switch to an Fsync-capable version." @@ -5456,12 +5712,42 @@ msgstr "" "您选择的 Wine 版本不支持 Fsync。\n" "请选择支持 Fsync 的 Wine 版本,或者禁用 Fsync。" +#~ msgid "OK" +#~ msgstr "确定" + +#~ msgid "Command exited with code %s" +#~ msgstr "命令以错误代码 %s 退出" + +#~ msgid "video game preservation platform" +#~ msgstr "电子游戏保管平台" + +#~ msgid "Show Tray Icon (requires restart)" +#~ msgstr "显示托盘图标(重启软件生效)" + +#~ msgid "Amiga 500+ with 1 MB chip RAM" +#~ msgstr "Amiga 500+(1 MB 内存)" + +#~ msgid "Amiga 600 with 1 MB chip RAM" +#~ msgstr "Amiga 600(1 MB 内存)" + +#~ msgid "Amiga 1000 with 512 KB chip RAM" +#~ msgstr "Amiga 1000(512 KB 内存)" + +#~ msgid "Amiga 1200 with 2 MB chip RAM" +#~ msgstr "Amiga 1200(2 MB 内存)" + +#~ msgid "Amiga 1200 but with 68020 processor" +#~ msgstr "Amiga 1200(68020 处理器)" + +#~ msgid "Amiga 4000 with 2 MB chip RAM and a 68040" +#~ msgstr "Amiga 4000(2 MB 内存,68040 处理器)" + +#~ msgid "Bethesda" +#~ msgstr "Bethesda" + #~ msgid "An error prevented the game from running" #~ msgstr "启动游戏时出错" -#~ msgid "Runner not installed." -#~ msgstr "运行环境未安装。" - #~ msgid "In use by %d game" #~ msgid_plural "In use by %d games" #~ msgstr[0] "被 %d 个游戏使用" @@ -5494,9 +5780,6 @@ msgstr "" #~ msgid "Community Installers" #~ msgstr "社区贡献的安装脚本" -#~ msgid "Could not retrieve game installer." -#~ msgstr "无法获取游戏安装脚本。" - #~ msgid "Services" #~ msgstr "游戏库整合" @@ -5512,9 +5795,6 @@ msgstr "" #~ msgid "Nintendo Switch emulator for LDN build visit https://ryujinx.org/" #~ msgstr "任天堂 Switch 模拟器(可通过 LDN 联机,详见 https://ryujinx.org/)" -msgid "Kill all Wine processes" -msgstr "结束所有 Wine 进程" - #~ msgid "Runs Steam for Windows games" #~ msgstr "运行 Windows 版 Steam 上的游戏" @@ -5840,12 +6120,6 @@ msgstr "结束所有 Wine 进程" #~ msgid "Run the game in a new terminal window." #~ msgstr "在新的终端窗口中运行该游戏。" -#~ msgid "Terminal application" -#~ msgstr "终端应用" - -#~ msgid "Discord Rich Presence" -#~ msgstr "向 Discord 好友显示游戏状态" - #~ msgid "Enable status to Discord of this game being played" #~ msgstr "在我玩该游戏时向 Discord 好友显示游戏状态" @@ -6180,5 +6454,5 @@ msgstr "结束所有 Wine 进程" #~ "为了让 Lutris 生存和成长,该项目需要您的帮助。\n" #~ "如果可以的话,请考虑捐款。 这将极大地帮助我们支付托管项目的费用,\n" #~ "并为新功能(如云存储或电视上的全屏界面)提供资金!\n" -#~ "支持我们!https://winegame.net/donate" +#~ "支持我们!https://winegame.net/" +#~ "donate" diff --git a/setup.py b/setup.py old mode 100755 new mode 100644 index 0e50e6bf66114be86780509ac8fda194d0e6e7e8..b33eaaf06589442a44272b1467380fea4ac6d793 --- a/setup.py +++ b/setup.py @@ -39,6 +39,8 @@ setup( 'lutris.scanners', 'lutris.services', 'lutris.util', + 'lutris.util.amazon', + 'lutris.util.discord', 'lutris.util.dolphin', 'lutris.util.egs', 'lutris.util.graphics', @@ -53,12 +55,17 @@ setup( data_files=data_files, zip_safe=False, install_requires=[ - 'PyYAML', - 'PyGObject', + 'certifi', + 'dbus-python', + 'distro', 'evdev', + 'lxml', + 'pillow', + 'PyGObject', + 'pypresence', + 'PyYAML', 'requests', - 'distro', - 'lxml' + 'pypresence' ], url='https://winegame.net', description='Video game preservation platform', diff --git a/share/applications/net.lutris.Lutris.desktop b/share/applications/net.lutris.Lutris.desktop index d728533755b366ab29f70c9874aa4d9d009dc231..ba91fd74da48887ffd7a5998ea600677bbdf34dc 100644 --- a/share/applications/net.lutris.Lutris.desktop +++ b/share/applications/net.lutris.Lutris.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Name=Lutris -Comment=video game preservation platform +Comment=Video Game Preservation Platform Categories=Game; Keywords=gaming;wine;emulator; Exec=lutris %U diff --git a/share/lutris/conf/origin-openssl3.cnf b/share/lutris/conf/origin-openssl3.cnf new file mode 100644 index 0000000000000000000000000000000000000000..fe82f066bbcadefb2202adbb1be96238b77532f7 --- /dev/null +++ b/share/lutris/conf/origin-openssl3.cnf @@ -0,0 +1,4 @@ +openssl_conf = openssl_init +[openssl_init] ssl_conf = ssl_sect +[ssl_sect] system_default = system_default_sect +[system_default_sect] Options = UnsafeLegacyRenegotiation diff --git a/share/lutris/json/basiliskii.json b/share/lutris/json/basiliskii.json new file mode 100644 index 0000000000000000000000000000000000000000..da7b90249b6546ed984d4fd683c54723088f1b20 --- /dev/null +++ b/share/lutris/json/basiliskii.json @@ -0,0 +1,26 @@ +{ + "human_name": "Basilisk II", + "description": "Basilisk II is an Open Source 68k Macintosh emulator", + "platforms": ["Macintosh"], + "runnable_alone": "True", + "runner_executable": "basiliskii/BasiliskII-x86_64.AppImage", + "download_url": "https://github.com/Korkman/macemu-appimage-builder/releases/download/continuous/BasiliskII-x86_64.AppImage", + "game_options": [ + { + "option": "main_file", + "type": "file", + "label": "Basilisk II", + "help": "Basilisk II pref/config file" + } + ], + "runner_options": [ + + { + "option": "config", + "type": "bool", + "label": "config", + "default": true, + "argument": "--config" + } + ] +} diff --git a/share/lutris/json/melonds.json b/share/lutris/json/melonds.json index 89d6852906616471b46b5ed41ae8e35f72145358..abfeda9a2a9d7c08f9a823f449c0ec7bd68ab978 100644 --- a/share/lutris/json/melonds.json +++ b/share/lutris/json/melonds.json @@ -2,7 +2,7 @@ "human_name": "melonDS", "description": "Nintendo DS emulator", "platforms": ["Nintendo DS"], - "runner_executable": "melonDS/melonDS", + "runner_executable": "melonds/melonDS", "download_url": "http://melonds.kuribo64.net/downloads/melonDS_0.9.3_linux_x64.7z", "game_options": [ { diff --git a/share/lutris/json/minivmac.json b/share/lutris/json/minivmac.json new file mode 100644 index 0000000000000000000000000000000000000000..af205f65e681e4f785308a5436b4a19e0c48a406 --- /dev/null +++ b/share/lutris/json/minivmac.json @@ -0,0 +1,15 @@ +{ + "human_name": "Mini vMac", + "description": "Mini vMac is an open source emulator of 68000 based Macintosh computers.", + "platforms": ["Macintosh"], + "runner_executable": "minivmac/MinivMac", + "download_url": "https://www.gryphel.com/d/minivmac/minivmac-37.03/minivmac-37.03-lx64.bin.tgz", + "game_options": [ + { + "option": "main_file", + "type": "file", + "label": "Mac HDD", + "help": "Macintosh Hard Disk/Floppy Disk" + } + ] +} diff --git a/share/lutris/json/sheepshaver.json b/share/lutris/json/sheepshaver.json new file mode 100644 index 0000000000000000000000000000000000000000..800d5c5a1e46231c1d91837b6b0d2c79c8824485 --- /dev/null +++ b/share/lutris/json/sheepshaver.json @@ -0,0 +1,25 @@ +{ + "human_name": "SheepShaver", + "description": "SheepShaver emulates a PowerMacintosh computer", + "platforms": ["Macintosh"], + "runnable_alone": "True", + "runner_executable": "sheepshaver/SheepShaver-x86_64.AppImage", + "download_url": "https://github.com/Korkman/macemu-appimage-builder/releases/download/continuous/SheepShaver-x86_64.AppImage", + "game_options": [ + { + "option": "main_file", + "type": "file", + "label": "SheepShaver", + "help": "SheepShaver pref/config file" + } + ], + "runner_options": [ + { + "option": "config", + "type": "bool", + "label": "config", + "default": true, + "argument": "--config" + } + ] +} diff --git a/share/lutris/media/side-dark.svg b/share/lutris/media/side-dark.svg new file mode 100644 index 0000000000000000000000000000000000000000..444d54bef81e8223e79e07c83be22caa9c5d3035 --- /dev/null +++ b/share/lutris/media/side-dark.svg @@ -0,0 +1,400 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/lutris/media/side-light.svg b/share/lutris/media/side-light.svg new file mode 100644 index 0000000000000000000000000000000000000000..ebf40d2c3b9cb8952b0ea22adb891264fc3fcc96 --- /dev/null +++ b/share/lutris/media/side-light.svg @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/lutris/media/splash-dark.svg b/share/lutris/media/splash-dark.svg new file mode 100644 index 0000000000000000000000000000000000000000..3c5a15ef3b3aafe8fddf24bcc1a132c4bf6ee56e --- /dev/null +++ b/share/lutris/media/splash-dark.svg @@ -0,0 +1,593 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/lutris/media/splash-light.svg b/share/lutris/media/splash-light.svg new file mode 100644 index 0000000000000000000000000000000000000000..0a4a586a9f72a7508eeb77fc170765794469c437 --- /dev/null +++ b/share/lutris/media/splash-light.svg @@ -0,0 +1,544 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/lutris/media/splash.svg b/share/lutris/media/splash.svg deleted file mode 100644 index b43618655e379906d7cf57870ad373a4dc47a09d..0000000000000000000000000000000000000000 --- a/share/lutris/media/splash.svg +++ /dev/null @@ -1,611 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Add games - - - Connect to services - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/share/lutris/ui/log-window.ui b/share/lutris/ui/log-window.ui index f3b5cf53854300c357eddb2a9cf99843435dcfe9..dbd0e0db4a336d4f7ebd320817b43d7211c4a61a 100644 --- a/share/lutris/ui/log-window.ui +++ b/share/lutris/ui/log-window.ui @@ -1,22 +1,21 @@ - + - False - 640 - 480 - True - net.winegame.client - False + False + 640 + 480 + True + net.winegame.client + False scrolled_window True - True + True True True - in @@ -25,26 +24,26 @@ True - False - True + False + True True - True - edit-find-symbolic - False - False - Search... + True + edit-find-symbolic + False + False + Search... gtk-save True - True - True - True - True + True + True + True + True 1 diff --git a/share/lutris/ui/lutris-window.ui b/share/lutris/ui/lutris-window.ui index d20ac068616d4edb04598f5399ccdd8f322c9051..9a7647e04e445c53710693670c43de73391df86e 100644 --- a/share/lutris/ui/lutris-window.ui +++ b/share/lutris/ui/lutris-window.ui @@ -25,6 +25,8 @@ WineGame net.winegame.client + + @@ -96,8 +98,6 @@ True False - 0.10000000149011612 - 0.10000000149011612 @@ -296,7 +296,7 @@ True False - Zoom: + Zoom False @@ -454,7 +454,7 @@ False win.show-installed-only _Installed Games Only - + False @@ -469,6 +469,7 @@ False win.show-hidden-games Show _Hidden Games + False diff --git a/share/metainfo/net.lutris.Lutris.metainfo.xml b/share/metainfo/net.lutris.Lutris.metainfo.xml index d7e25a7a63d903429c61e8cd2035674a6229e4f3..b45ad81af975830d262978641becb79b32ddccb4 100644 --- a/share/metainfo/net.lutris.Lutris.metainfo.xml +++ b/share/metainfo/net.lutris.Lutris.metainfo.xml @@ -24,7 +24,7 @@ https://github.com/lutris/lutris/issues net.winegame.client.desktop - + diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index babf66ff9c56742293b780eb87179b5dd6105ca6..515981f250300029b4d50a520d00969e6218a681 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -90,8 +90,7 @@ parts: - gir1.2-glib-2.0 - gir1.2-gnomedesktop-3.0 - gir1.2-gtk-3.0 - - gir1.2-notify-0.7 - - gir1.2-webkit2-4.0 + - gir1.2-webkit2-4.1 - libgnutls30 - libvulkan1 - libxrandr2