From 21e009c9674cc273706c0ad8e176eeb60396b0df Mon Sep 17 00:00:00 2001 From: Alex-1000 <64156241+Alex-1000@users.noreply.github.com> Date: Fri, 10 Jun 2022 17:59:25 +0300 Subject: [PATCH 01/14] Add files via upload --- CompileLinux.sh | 2 +- gui.py | 42 ++++++++++++++++----------------- install.py | 17 ++++++------- setup.py | 59 +++++++++++----------------------------------- tf2c_downloader.py | 29 +++++++++++------------ vars.py | 2 +- 6 files changed, 59 insertions(+), 92 deletions(-) diff --git a/CompileLinux.sh b/CompileLinux.sh index 78a7203..d5315d9 100644 --- a/CompileLinux.sh +++ b/CompileLinux.sh @@ -1,2 +1,2 @@ #!/bin/sh -pyinstaller --onefile TF2CDownloader.py +pyinstaller --onefile tf2c_downloader.py diff --git a/gui.py b/gui.py index efacd18..39faa71 100644 --- a/gui.py +++ b/gui.py @@ -3,13 +3,13 @@ asking questions, generally handling any sort of communication or interactivity with the user. """ -from os import path as os_path, makedirs, rmdir -from time import sleep +from os import environ, makedirs, path, rmdir from sys import exit -import os +from time import sleep from rich import print -def message(msg: str, delay = 0): + +def message(msg, delay = 0): """ Show a message to user. Delay stops program for specified amount of seconds. @@ -17,28 +17,23 @@ def message(msg: str, delay = 0): print("[bold yellow]" + msg) sleep(delay) -def message_yes_no(question, default = None): +def message_yes_no(msg, default = None): """ Show a message to user and get yes/no answer. - "default" sets "yes" as default answer if true, "no" if false. """ valid = {"yes": True, "y": True, "no": False, "n": False} - if default is None: - prompt = " [y/n] " - elif default == "yes": - prompt = " [Y/n] " - elif default == "no": - prompt = " [y/N] " + prompt = {None: " {y/n}", "y": " {Y/n}", "n": " {y/N}"}[default] + msg += prompt while True: - print(question + prompt) + print(msg) choice = input().lower() if default is not None and choice == "": return valid[default] elif choice in valid: return valid[choice] else: - print("[bold blue]Please respond with 'yes' or 'no' " "(or 'y' or 'n').[/bold blue]") + print("[bold blue]Please respond with 'yes' or 'no' (or 'y' or 'n').[/bold blue]") def message_input(msg): @@ -52,14 +47,17 @@ def message_dir(msg): Show a message and ask for a directory. """ while True: - directory = input(msg + ': ') - if os_path.isdir(directory): - return directory + dir = input(msg + ": ") + if dir.count("~") > 0: + dir = path.expanduser(dir) + if dir.count("$") > 0: + dir = path.expandvars(dir) + if path.isdir(dir): + return dir try: - # wth??? - makedirs(directory) - rmdir(directory) # lol - return directory + makedirs(dir) + rmdir(dir) + return dir except Exception: pass @@ -68,7 +66,7 @@ def message_end(msg, code): Show a message and exit. """ print("[bold green]" + msg) - if os.environ.get("WT_SESSION"): + if environ.get("WT_SESSION"): print("[bold]You are safe to close this window.") else: input("Press Enter to exit.") diff --git a/install.py b/install.py index ec35685..40f20a2 100644 --- a/install.py +++ b/install.py @@ -3,12 +3,13 @@ download and extract the game using the paths configured in setup.py """ -from subprocess import run -from os import path as os_path -from shutil import rmtree, disk_usage +from os import path from platform import system -import vars +from shutil import disk_usage, rmtree +from subprocess import run import gui +import vars + def free_space_check(): """ @@ -18,9 +19,9 @@ def free_space_check(): ahead with it. """ minimum_free_bytes = 16106127360 - if not os_path.isdir(vars.SOURCEMODS_PATH): + if not path.isdir(vars.INSTALL_PATH): gui.message_end("The specified extraction location does not exist.", 1) - elif disk_usage(vars.SOURCEMODS_PATH)[2] < minimum_free_bytes: + elif disk_usage(vars.INSTALL_PATH)[2] < minimum_free_bytes: gui.message_end("You don't have enough free space to install TF2 Classic. A minimum of 15GB is required.", 1) def tf2c_download(): @@ -38,9 +39,9 @@ def tf2c_extract(): """ gui.message('Extracting the downloaded archive...', 1) if system() == 'Windows': - run([vars.TAR_BINARY, '-I', 'zstd.exe', '-xvf', os_path.join(vars.TEMP_PATH, 'tf2classic.tar.zst'), '-C', vars.SOURCEMODS_PATH], check=True) + run([vars.TAR_BINARY, '-I', 'zstd.exe', '-xvf', path.join(vars.TEMP_PATH, 'tf2classic.tar.zst'), '-C', vars.INSTALL_PATH], check=True) else: - run([vars.TAR_BINARY, '-I', vars.ZSTD_BINARY, '-xvf', os_path.join(vars.TEMP_PATH, 'tf2classic.tar.zst'), '-C', vars.SOURCEMODS_PATH], check=True) + run([vars.TAR_BINARY, '-I', vars.ZSTD_BINARY, '-xvf', path.join(vars.TEMP_PATH, 'tf2classic.tar.zst'), '-C', vars.INSTALL_PATH], check=True) if not vars.KEEPZIP: rmtree(vars.TEMP_PATH) diff --git a/setup.py b/setup.py index efac1e1..d66c696 100644 --- a/setup.py +++ b/setup.py @@ -7,12 +7,12 @@ depending on their platform, etc. """ import sys -import os +from os import environ, getcwd, path from platform import system from shutil import which from rich import print -import vars import gui +import vars if system() == 'Windows': import winreg @@ -39,7 +39,7 @@ def sourcemods_path(): else: try: sourcepath = None - with open(os.path.expanduser(r'~/.steam/registry.vdf'), encoding="utf-8") as file: + with open(path.expanduser(r'~/.steam/registry.vdf'), encoding="utf-8") as file: for _, line in enumerate(file): if 'SourceModInstallPath' in line: sourcepath = line[line.index('/home'):-1].replace(r'\\', '/') @@ -49,62 +49,31 @@ def sourcemods_path(): except Exception: return None -#def set_sourcemods_path(path): -# """ -# Set sourcemod folder path. -# """ -# if system() == 'Windows': -# global REGISTRY -# global REGISTRY_KEY -# if REGISTRY == 0: -# REGISTRY = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER) -# REGISTRY_KEY = winreg.OpenKeyEx(REGISTRY, 'SOFTWARE\Valve\Steam') -# -# value = winreg.SetValue(REGISTRY_KEY, 'SourceModInstallPath', winreg.REG_SZ, path) -# else: -# gui.message("Setting SourceModInstallPath isn't supported on Linux yet, resetting...", 5) -# setup_path(False) -# - def setup_path(manual_path): """ Choose setup path. """ confirm = False if sourcemods_path() is not None: - vars.SOURCEMODS_PATH = sourcemods_path().rstrip('\"') + vars.INSTALL_PATH = sourcemods_path().rstrip('\"') - smodsfound = isinstance(vars.SOURCEMODS_PATH, str) + smodsfound = isinstance(vars.INSTALL_PATH, str) if smodsfound is True and manual_path is not True: - gui.message('Sourcemods folder was automatically found at: ' + vars.SOURCEMODS_PATH) + gui.message('Sourcemods folder was automatically found at: ' + vars.INSTALL_PATH) if gui.message_yes_no('It\'s the recommended installation location. Would you like to install TF2Classic there?'): confirm = True else: - # check if any sourcemods exists there - #no_sourcemods = True - #if os.path.exists(vars.SOURCEMODS_PATH): - # for file in os.listdir(vars.SOURCEMODS_PATH): - # if os.path.isdir(file): - # no_sourcemods = False - #if no_sourcemods: - # if system() == 'Windows': - # if gui.message_yes_no('Then, would you like to move the sourcemods folder location?'): - # vars.SOURCEMODS_PATH = gui.message_dir('Please enter the location of the new sourcemods folder') - # set_sourcemods_path(vars.SOURCEMODS_PATH) - # confirm = True - # else: - # manual_path = True setup_path(True) else: gui.message('WARNING: Steam\'s sourcemods folder has not been found, or you chose not to use it.') - if gui.message_yes_no('Would you like to extract in ' + os.getcwd() + '? You must move it to your sourcemods manually.'): - vars.SOURCEMODS_PATH = os.getcwd() + if gui.message_yes_no('Would you like to extract in ' + getcwd() + '? You must move it to your sourcemods manually.'): + vars.INSTALL_PATH = getcwd() confirm = True else: - vars.SOURCEMODS_PATH = gui.message_dir('Please, enter the location in which TF2Classic will be installed to.\n') + vars.INSTALL_PATH = gui.message_dir('Please, enter the location in which TF2Classic will be installed to.\n') if not confirm: - if not gui.message_yes_no('TF2Classic will be installed in ' + vars.SOURCEMODS_PATH + '\nDo you accept?'): + if not gui.message_yes_no('TF2Classic will be installed in ' + vars.INSTALL_PATH + '\nDo you accept?'): print('Resetting...\n') setup_path(False) @@ -117,20 +86,20 @@ def setup_binaries(): # suggested method of determining the location of the temporary runtime folder # to point to Aria2 and Tar. if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'): - vars.ARIA2C_BINARY = os.path.abspath(os.path.join(os.path.dirname(__file__), 'aria2c.exe')) - vars.TAR_BINARY = os.path.abspath(os.path.join(os.path.dirname(__file__), 'tar.exe')) + vars.ARIA2C_BINARY = path.abspath(path.join(path.dirname(__file__), 'aria2c.exe')) + vars.TAR_BINARY = path.abspath(path.join(path.dirname(__file__), 'tar.exe')) # For whatever reason, Tar won't load Zstd when we give it the path # to the file like the others. So, we instead add PyInstaller's temp folder to # Windows' PATH, or if we're running as a script, the Binaries folder instead, # so that Tar only needs to call the executable name. # # This is terrible. Someone needs to fix this. - os.environ['PATH'] += os.path.join(os.path.dirname(__file__)) + environ['PATH'] += path.join(path.dirname(__file__)) else: # When running as a script, we just select the Binaries folder directly for Aria2 and Tar. vars.ARIA2C_BINARY = 'Binaries/aria2c.exe' vars.TAR_BINARY = 'Binaries/tar.exe' - os.environ['PATH'] += os.path.join(os.path.dirname(__file__) + r'/Binaries/') + environ['PATH'] += path.join(path.dirname(__file__) + r'/Binaries/') else: vars.TAR_BINARY = 'tar' if which('aria2c') is None: diff --git a/tf2c_downloader.py b/tf2c_downloader.py index 7b3188e..9eb7581 100644 --- a/tf2c_downloader.py +++ b/tf2c_downloader.py @@ -2,17 +2,16 @@ Master module. Runs basic checks and then offloads all of the real work to functions defined in other files. """ -from sys import stdin, exit, argv +import os +import traceback from platform import system from shutil import which from subprocess import run -import os -import traceback +from sys import argv, exit, stdin from rich import print import gui -import setup import install - +import setup # PyInstaller offers no native way to select which application you use for the console. # Instead, it uses the system default, which is cmd.exe at time of writing. @@ -23,7 +22,6 @@ run(['wt', argv[0]], check=True) exit() - def sanity_check(): """ This is mainly for Linux, because it's easy to launch it by double-clicking it, which would @@ -41,15 +39,16 @@ def sanity_check(): install.free_space_check() install.tf2c_download() install.tf2c_extract() -except: - traceback.print_exc() - print("[italic magenta]----- Exception details above this line -----") - print("[bold red]:warning: The program has failed. Post a screenshot in #technical-issues on the Discord. :warning:[/bold red]") - if os.environ.get("WT_SESSION"): - print("[bold]You are safe to close this window.") - else: - input("Press Enter to exit.") - exit(1) +except Exception as ex: + if ex is not SystemExit: + traceback.print_exc() + print("[italic magenta]----- Exception details above this line -----") + print("[bold red]:warning: The program has failed. Post a screenshot in #technical-issues on the Discord. :warning:[/bold red]") + if os.environ.get("WT_SESSION"): + print("[bold]You are safe to close this window.") + else: + input("Press Enter to exit.") + exit(1) gui.message_end("The installation has successfully completed. Remember to restart Steam!", 0) diff --git a/vars.py b/vars.py index 68078bc..490e5fb 100644 --- a/vars.py +++ b/vars.py @@ -16,5 +16,5 @@ TAR_BINARY = None # ZSTD_BINARY is only used on Linux. ZSTD_BINARY = None -SOURCEMODS_PATH = None +INSTALL_PATH = None TF2C_PATH = None From 680b83e558886b70ba144ebda981ec9e2e998b0f Mon Sep 17 00:00:00 2001 From: Alex-1000 <64156241+Alex-1000@users.noreply.github.com> Date: Sun, 26 Jun 2022 20:53:53 +0300 Subject: [PATCH 02/14] Add files via upload --- install.py | 17 +++++++++-------- setup.py | 35 ++++++++++++++--------------------- tf2c_downloader.py | 11 +++++++++-- vars.py | 5 ++++- 4 files changed, 36 insertions(+), 32 deletions(-) diff --git a/install.py b/install.py index 45756cf..4e94542 100644 --- a/install.py +++ b/install.py @@ -18,20 +18,21 @@ def free_space_check(): at the path they're extracting at before moving ahead with it. """ - minimum_free_bytes = 16106127360 + minimum_free_download_bytes = 4831838208 + minimum_free_install_bytes = 12884901888 + if disk_usage(vars.TEMP_PATH)[2] < minimum_free_download_bytes: + gui.message_end("You don't have enough free space to download TF2 Classic. A minimum of 4.5GB on your primary drive is required.", 1) if not path.isdir(vars.INSTALL_PATH): gui.message_end("The specified extraction location does not exist.", 1) - elif disk_usage(vars.INSTALL_PATH)[2] < minimum_free_bytes: - gui.message_end("You don't have enough free space to install TF2 Classic. A minimum of 15GB is required.", 1) + elif disk_usage(vars.INSTALL_PATH)[2] < minimum_free_install_bytes: + gui.message_end("You don't have enough free space to extract TF2 Classic. A minimum of 12GB at your chosen extraction site is required.", 1) def tf2c_download(): """ Download TF2C archive. """ gui.message('Starting the download for TF2 Classic... You may see some errors that are safe to ignore.', 3) - run([vars.ARIA2C_BINARY, '--max-connection-per-server=16', '--max-concurrent-downloads=16', '--optimize-concurrent-downloads=true', '--check-certificate=false', '--check-integrity=true', '--auto-file-renaming=false', '--continue=true', '--console-log-level=error', '--summary-interval=0', '--bt-hash-check-seed=false', '--seed-time=0', - '-d' + vars.TEMP_PATH, - 'https://wiki.tf2classic.com/misc/tf2classic-latest-zst.meta4'], check=True) + run([vars.ARIA2C_BINARY, '--max-connection-per-server=16', '-UTF2CDownloader2022-06-18', '--max-concurrent-downloads=16', '--optimize-concurrent-downloads=true', '--check-certificate=false', '--check-integrity=true', '--auto-file-renaming=false', '--continue=true', '--console-log-level=error', '--summary-interval=0', '--bt-hash-check-seed=false', '--seed-time=0', '-d' + vars.TEMP_PATH, 'https://wiki.tf2classic.com/misc/tf2classic-latest-zst.meta4'], check=True) def tf2c_extract(): """ @@ -39,6 +40,6 @@ def tf2c_extract(): """ gui.message('Extracting the downloaded archive, please wait patiently.', 1) if system() == 'Windows': - run([vars.ARC_BINARY, '-overwrite', 'unarchive', os_path.join(vars.TEMP_PATH, 'tf2classic.tar.zst'), vars.INSTALL_PATH], check=True) + run([vars.ARC_BINARY, '-overwrite', 'unarchive', path.join(vars.TEMP_PATH, 'tf2classic.tar.zst'), vars.INSTALL_PATH], check=True) else: - run(['tar', '-I', vars.ZSTD_BINARY, '-xvf', os_path.join(vars.TEMP_PATH, 'tf2classic.tar.zst'), '-C', vars.INSTALL_PATH], check=True) + run(['tar', '-I', vars.ZSTD_BINARY, '-xvf', path.join(vars.TEMP_PATH, 'tf2classic.tar.zst'), '-C', vars.INSTALL_PATH], check=True) diff --git a/setup.py b/setup.py index 2134212..210bf9d 100644 --- a/setup.py +++ b/setup.py @@ -49,33 +49,26 @@ def sourcemods_path(): except Exception: return None -def setup_path(manual_path): +def setup_path(): """ Choose setup path. """ - confirm = False - if sourcemods_path() is not None: - vars.INSTALL_PATH = sourcemods_path().rstrip('\"') - - smodsfound = isinstance(vars.INSTALL_PATH, str) - if smodsfound is True and manual_path is not True: - gui.message('Sourcemods folder was automatically found at: ' + vars.INSTALL_PATH) + path = sourcemods_path() + if path is not None: + gui.message('Sourcemods folder was automatically found at: ' + path) if gui.message_yes_no('It\'s the recommended installation location. Would you like to install TF2Classic there?'): - confirm = True - else: - setup_path(True) + vars.INSTALL_PATH = path.strip('\"') + return + + if gui.message_yes_no('Would you like to extract in ' + getcwd() + '? You must move it to your sourcemods manually.'): + vars.INSTALL_PATH = getcwd() else: - gui.message('WARNING: Steam\'s sourcemods folder has not been found, or you chose not to use it.') - if gui.message_yes_no('Would you like to extract in ' + getcwd() + '? You must move it to your sourcemods manually.'): - vars.INSTALL_PATH = getcwd() - confirm = True + path = gui.message_dir('Please, enter the location in which TF2Classic will be installed to.\n') + if gui.message_yes_no('TF2Classic will be installed in ' + path + '\nDo you accept?'): + vars.INSTALL_PATH = path else: - vars.INSTALL_PATH = gui.message_dir('Please, enter the location in which TF2Classic will be installed to.\n') - - if not confirm: - if not gui.message_yes_no('TF2Classic will be installed in ' + vars.INSTALL_PATH + '\nDo you accept?'): - print('Resetting...\n') - setup_path(False) + gui.message('Resetting...\n') + setup_path() def setup_binaries(): """ diff --git a/tf2c_downloader.py b/tf2c_downloader.py index 9eb7581..d56cc72 100644 --- a/tf2c_downloader.py +++ b/tf2c_downloader.py @@ -2,7 +2,9 @@ Master module. Runs basic checks and then offloads all of the real work to functions defined in other files. """ +import ctypes import os +import signal import traceback from platform import system from shutil import which @@ -22,6 +24,11 @@ run(['wt', argv[0]], check=True) exit() +# Disable QuickEdit so the process doesn't pause when clicked +if system() == 'Windows': + kernel32 = ctypes.windll.kernel32 + kernel32.SetConsoleMode(kernel32.GetStdHandle(-10), (0x4|0x80|0x20|0x2|0x10|0x1|0x00|0x100)) + def sanity_check(): """ This is mainly for Linux, because it's easy to launch it by double-clicking it, which would @@ -32,9 +39,10 @@ def sanity_check(): if not stdin or not stdin.isatty(): print("Looks like we're running in the background. We don't want that, so we're exiting.") exit(1) + try: sanity_check() - setup.setup_path(False) + setup.setup_path() setup.setup_binaries() install.free_space_check() install.tf2c_download() @@ -50,5 +58,4 @@ def sanity_check(): input("Press Enter to exit.") exit(1) - gui.message_end("The installation has successfully completed. Remember to restart Steam!", 0) diff --git a/vars.py b/vars.py index 866d241..2047f71 100644 --- a/vars.py +++ b/vars.py @@ -6,7 +6,10 @@ from platform import system import tempfile -TEMP_PATH = tempfile.gettempdir() +if system() is 'Windows': + TEMP_PATH = tempfile.gettempdir() +else: + TEMP_PATH = "/var/tmp/" ARIA2C_BINARY = None # ZSTD_BINARY is only used on Linux. From 726073b8b626c7a7aaa051e365955506d803e6fc Mon Sep 17 00:00:00 2001 From: Alex-1000 <64156241+Alex-1000@users.noreply.github.com> Date: Sun, 26 Jun 2022 20:59:23 +0300 Subject: [PATCH 03/14] fixing broken fetch/pull github, why you cant just copy from original and put into fork --- README.md | 4 ++-- install.py | 4 +++- setup.py | 35 +++++++++++++++++++++-------------- tf2c_downloader.py | 7 +++---- 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index ab066eb..68f30a4 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ Simple script for downloading and extracting TF2Classic quickly, simply, and eff Requires no third-party libraries except for Rich. If you want to compile, you'll need to install python3-rich on Debian/Ubuntu, or get it through PIP on Windows. -In the Binaries folder of the repository, Aria2 and its relevant dependencies are extracted from: https://github.com/q3aql/aria2-static-builds (aria2-1.36.0-win-64bit-build2.7z) +In the Binaries folder of the repository, Aria2 is extracted from: https://github.com/q3aql/aria2-static-builds (aria2-1.36.0-win-64bit-build2.7z) Arc is extracted from https://github.com/mholt/archiver/releases/download/v3.5.0/arc_3.5.0_windows_amd64.exe -The contents of this folder can be freely replaced with your own builds of these tools, as long as aria2c.exe and pzstd.exe are present. +The contents of this folder can be freely replaced with your own builds of these tools, as long as aria2c.exe and arc.exe are present. diff --git a/install.py b/install.py index 4e94542..f8d5d60 100644 --- a/install.py +++ b/install.py @@ -32,7 +32,9 @@ def tf2c_download(): Download TF2C archive. """ gui.message('Starting the download for TF2 Classic... You may see some errors that are safe to ignore.', 3) - run([vars.ARIA2C_BINARY, '--max-connection-per-server=16', '-UTF2CDownloader2022-06-18', '--max-concurrent-downloads=16', '--optimize-concurrent-downloads=true', '--check-certificate=false', '--check-integrity=true', '--auto-file-renaming=false', '--continue=true', '--console-log-level=error', '--summary-interval=0', '--bt-hash-check-seed=false', '--seed-time=0', '-d' + vars.TEMP_PATH, 'https://wiki.tf2classic.com/misc/tf2classic-latest-zst.meta4'], check=True) + run([vars.ARIA2C_BINARY, '--max-connection-per-server=16', '-UTF2CDownloader2022-06-18', '--max-concurrent-downloads=16', '--optimize-concurrent-downloads=true', '--check-certificate=false', '--check-integrity=true', '--auto-file-renaming=false', '--continue=true', '--console-log-level=error', '--summary-interval=0', '--bt-hash-check-seed=false', '--seed-time=0', + '-d' + vars.TEMP_PATH, + 'https://wiki.tf2classic.com/misc/tf2classic-latest-zst.meta4'], check=True) def tf2c_extract(): """ diff --git a/setup.py b/setup.py index 210bf9d..2134212 100644 --- a/setup.py +++ b/setup.py @@ -49,26 +49,33 @@ def sourcemods_path(): except Exception: return None -def setup_path(): +def setup_path(manual_path): """ Choose setup path. """ - path = sourcemods_path() - if path is not None: - gui.message('Sourcemods folder was automatically found at: ' + path) - if gui.message_yes_no('It\'s the recommended installation location. Would you like to install TF2Classic there?'): - vars.INSTALL_PATH = path.strip('\"') - return + confirm = False + if sourcemods_path() is not None: + vars.INSTALL_PATH = sourcemods_path().rstrip('\"') - if gui.message_yes_no('Would you like to extract in ' + getcwd() + '? You must move it to your sourcemods manually.'): - vars.INSTALL_PATH = getcwd() + smodsfound = isinstance(vars.INSTALL_PATH, str) + if smodsfound is True and manual_path is not True: + gui.message('Sourcemods folder was automatically found at: ' + vars.INSTALL_PATH) + if gui.message_yes_no('It\'s the recommended installation location. Would you like to install TF2Classic there?'): + confirm = True + else: + setup_path(True) else: - path = gui.message_dir('Please, enter the location in which TF2Classic will be installed to.\n') - if gui.message_yes_no('TF2Classic will be installed in ' + path + '\nDo you accept?'): - vars.INSTALL_PATH = path + gui.message('WARNING: Steam\'s sourcemods folder has not been found, or you chose not to use it.') + if gui.message_yes_no('Would you like to extract in ' + getcwd() + '? You must move it to your sourcemods manually.'): + vars.INSTALL_PATH = getcwd() + confirm = True else: - gui.message('Resetting...\n') - setup_path() + vars.INSTALL_PATH = gui.message_dir('Please, enter the location in which TF2Classic will be installed to.\n') + + if not confirm: + if not gui.message_yes_no('TF2Classic will be installed in ' + vars.INSTALL_PATH + '\nDo you accept?'): + print('Resetting...\n') + setup_path(False) def setup_binaries(): """ diff --git a/tf2c_downloader.py b/tf2c_downloader.py index d56cc72..16510d2 100644 --- a/tf2c_downloader.py +++ b/tf2c_downloader.py @@ -2,10 +2,9 @@ Master module. Runs basic checks and then offloads all of the real work to functions defined in other files. """ -import ctypes import os -import signal import traceback +import ctypes from platform import system from shutil import which from subprocess import run @@ -39,10 +38,9 @@ def sanity_check(): if not stdin or not stdin.isatty(): print("Looks like we're running in the background. We don't want that, so we're exiting.") exit(1) - try: sanity_check() - setup.setup_path() + setup.setup_path(False) setup.setup_binaries() install.free_space_check() install.tf2c_download() @@ -58,4 +56,5 @@ def sanity_check(): input("Press Enter to exit.") exit(1) + gui.message_end("The installation has successfully completed. Remember to restart Steam!", 0) From 6ca3a05a3d0b3bc0f3f1a8aea6fe0c4368c9d1bc Mon Sep 17 00:00:00 2001 From: Alex-1000 <64156241+Alex-1000@users.noreply.github.com> Date: Sun, 26 Jun 2022 21:00:37 +0300 Subject: [PATCH 04/14] update 2 --- install.py | 4 +--- setup.py | 35 ++++++++++++++--------------------- tf2c_downloader.py | 7 ++++--- 3 files changed, 19 insertions(+), 27 deletions(-) diff --git a/install.py b/install.py index f8d5d60..4e94542 100644 --- a/install.py +++ b/install.py @@ -32,9 +32,7 @@ def tf2c_download(): Download TF2C archive. """ gui.message('Starting the download for TF2 Classic... You may see some errors that are safe to ignore.', 3) - run([vars.ARIA2C_BINARY, '--max-connection-per-server=16', '-UTF2CDownloader2022-06-18', '--max-concurrent-downloads=16', '--optimize-concurrent-downloads=true', '--check-certificate=false', '--check-integrity=true', '--auto-file-renaming=false', '--continue=true', '--console-log-level=error', '--summary-interval=0', '--bt-hash-check-seed=false', '--seed-time=0', - '-d' + vars.TEMP_PATH, - 'https://wiki.tf2classic.com/misc/tf2classic-latest-zst.meta4'], check=True) + run([vars.ARIA2C_BINARY, '--max-connection-per-server=16', '-UTF2CDownloader2022-06-18', '--max-concurrent-downloads=16', '--optimize-concurrent-downloads=true', '--check-certificate=false', '--check-integrity=true', '--auto-file-renaming=false', '--continue=true', '--console-log-level=error', '--summary-interval=0', '--bt-hash-check-seed=false', '--seed-time=0', '-d' + vars.TEMP_PATH, 'https://wiki.tf2classic.com/misc/tf2classic-latest-zst.meta4'], check=True) def tf2c_extract(): """ diff --git a/setup.py b/setup.py index 2134212..210bf9d 100644 --- a/setup.py +++ b/setup.py @@ -49,33 +49,26 @@ def sourcemods_path(): except Exception: return None -def setup_path(manual_path): +def setup_path(): """ Choose setup path. """ - confirm = False - if sourcemods_path() is not None: - vars.INSTALL_PATH = sourcemods_path().rstrip('\"') - - smodsfound = isinstance(vars.INSTALL_PATH, str) - if smodsfound is True and manual_path is not True: - gui.message('Sourcemods folder was automatically found at: ' + vars.INSTALL_PATH) + path = sourcemods_path() + if path is not None: + gui.message('Sourcemods folder was automatically found at: ' + path) if gui.message_yes_no('It\'s the recommended installation location. Would you like to install TF2Classic there?'): - confirm = True - else: - setup_path(True) + vars.INSTALL_PATH = path.strip('\"') + return + + if gui.message_yes_no('Would you like to extract in ' + getcwd() + '? You must move it to your sourcemods manually.'): + vars.INSTALL_PATH = getcwd() else: - gui.message('WARNING: Steam\'s sourcemods folder has not been found, or you chose not to use it.') - if gui.message_yes_no('Would you like to extract in ' + getcwd() + '? You must move it to your sourcemods manually.'): - vars.INSTALL_PATH = getcwd() - confirm = True + path = gui.message_dir('Please, enter the location in which TF2Classic will be installed to.\n') + if gui.message_yes_no('TF2Classic will be installed in ' + path + '\nDo you accept?'): + vars.INSTALL_PATH = path else: - vars.INSTALL_PATH = gui.message_dir('Please, enter the location in which TF2Classic will be installed to.\n') - - if not confirm: - if not gui.message_yes_no('TF2Classic will be installed in ' + vars.INSTALL_PATH + '\nDo you accept?'): - print('Resetting...\n') - setup_path(False) + gui.message('Resetting...\n') + setup_path() def setup_binaries(): """ diff --git a/tf2c_downloader.py b/tf2c_downloader.py index 16510d2..d56cc72 100644 --- a/tf2c_downloader.py +++ b/tf2c_downloader.py @@ -2,9 +2,10 @@ Master module. Runs basic checks and then offloads all of the real work to functions defined in other files. """ +import ctypes import os +import signal import traceback -import ctypes from platform import system from shutil import which from subprocess import run @@ -38,9 +39,10 @@ def sanity_check(): if not stdin or not stdin.isatty(): print("Looks like we're running in the background. We don't want that, so we're exiting.") exit(1) + try: sanity_check() - setup.setup_path(False) + setup.setup_path() setup.setup_binaries() install.free_space_check() install.tf2c_download() @@ -56,5 +58,4 @@ def sanity_check(): input("Press Enter to exit.") exit(1) - gui.message_end("The installation has successfully completed. Remember to restart Steam!", 0) From aea692106e1fa8ff639fd2ae515be37f3322f8d1 Mon Sep 17 00:00:00 2001 From: Alex-1000 Date: Mon, 1 Aug 2022 22:56:35 +0300 Subject: [PATCH 05/14] Russian translation --- lang.py | 11 +++++++---- langs/ru.py | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 langs/ru.py diff --git a/lang.py b/lang.py index f3dfee0..92c9d1d 100644 --- a/lang.py +++ b/lang.py @@ -1,14 +1,17 @@ +import locale + from langs.en import en -from langs.fr import fr from langs.es import es +from langs.fr import fr from langs.it import it -import locale +from langs.ru import ru langs = { "en": en, "fr": fr, "es": es, - "it": it + "it": it, + "ru": ru } lang = langs["en"] @@ -17,4 +20,4 @@ if locale in langs: lang.update(langs[locale]) elif locale.split("_")[0] in langs: - lang.update(langs[locale.split("_")[0]]) \ No newline at end of file + lang.update(langs[locale.split("_")[0]]) diff --git a/langs/ru.py b/langs/ru.py new file mode 100644 index 0000000..7bc8032 --- /dev/null +++ b/langs/ru.py @@ -0,0 +1,35 @@ +en = { + "running_background": "Похоже, что программа запущена в фоновом режиме. Выходим...", + + "exception_line": "[italic magenta]----- Детали об ошибке над этой линией -----", + "exception": "[bold red]:warning: Программа выдала ошибку. Отправьте снимок экрана в #technical-issues в Discord-сервере TF2C. :warning:[/bold red]", + "exit_safe": "[bold]Вы можете закрыть окно.", + "exit": "Нажмите Enter для выхода.", + + "prompt_valid": {"да": True, "д": True, "yes": True, "y": True, "нет": False, "н": False, "no": False, "n": False}, # all possible choices (yes or no) + "prompt_prompt": {None: " {д/н}", "y": " {Д/н}", "n": " {д/Н}"}, # only replace the "{y/n}" parts. uppercase means "by default" + "prompt_invalid": "[bold blue]Пожалуйста, ответьте 'да' или 'нет' (или 'д'/'н').[/bold blue]", + + "setup_found": "Папка sourcemods была найдена в: %s", + "setup_found_question": "Это рекомендуемое место установки. Вы хотите установить TF2 Classic туда?", + "setup_not_found": "Предупреждение: папка sourcemods не была найдена, или вы решили выбрать место установки самостоятельно.", + "setup_not_found_question": "Вы хотите распаковать игру в %s? Вам придётся переместить её в папку sourcemods вручную.", + "setup_input": "Пожалуйста, укажите место установки игры.\n", + "setup_accept": "TF2 Classic будет установлен в %s\nУстановить?", + "setup_reset": "Перезапуск...\n", + + "setup_missing_aria2": "Вам нужно установить Aria2 для использования этой программы.", + "setup_missing_zstd": "Вам нужно установить Zstd для использования этой программы.", + + "free_space_download": "У вас не хватает места для скачивания TF2 Classic. Необходимо минимум 4.5GB на вашем системном диске.", + "free_space_extract": "У вас не хватает места для распаковки TF2 Classic. Необходимо минимум 12GB на выбраном диске.", + "location_doesnt_exist": "Указаный путь не существует.", + + "starting_download": "Начинаем загрузку TF2 Classic... Вы можете увидеть ошибки, которые можно игнорировать.", + "starting_extract": "Начинаем распаковку архива, пожалуйста подождите.", + + "troubleshoot_blacklist": "Применяем безопасный чёрный список...", + "troubleshoot_blacklist_fail": "Предупреждение: чёрный список не был применён.", + + "success": "Установка успешно завершена. Не забудьте перезапустить Steam!", +} \ No newline at end of file From 69318798cb62d9ffd22480a8846df1e01576c238 Mon Sep 17 00:00:00 2001 From: Alex-1000 Date: Mon, 1 Aug 2022 23:15:11 +0300 Subject: [PATCH 06/14] Fixing desync from fork and origin --- lang.py | 13 +++++++++---- langs/el.py | 35 +++++++++++++++++++++++++++++++++++ langs/hu.py | 35 +++++++++++++++++++++++++++++++++++ langs/pl.py | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 114 insertions(+), 4 deletions(-) create mode 100644 langs/el.py create mode 100644 langs/hu.py create mode 100644 langs/pl.py diff --git a/lang.py b/lang.py index 92c9d1d..2a3d07d 100644 --- a/lang.py +++ b/lang.py @@ -1,16 +1,21 @@ -import locale - from langs.en import en -from langs.es import es from langs.fr import fr +from langs.es import es from langs.it import it +from langs.el import el +from langs.hu import hu +from langs.pl import pl from langs.ru import ru +import locale langs = { "en": en, "fr": fr, "es": es, "it": it, + "el": el, + "hu": hu, + "pl": pl, "ru": ru } @@ -20,4 +25,4 @@ if locale in langs: lang.update(langs[locale]) elif locale.split("_")[0] in langs: - lang.update(langs[locale.split("_")[0]]) + lang.update(langs[locale.split("_")[0]]) \ No newline at end of file diff --git a/langs/el.py b/langs/el.py new file mode 100644 index 0000000..15537a2 --- /dev/null +++ b/langs/el.py @@ -0,0 +1,35 @@ +el = { + "running_background": "Απο ότι φαίνεται λειτουργούμε στο παρασκήνιο. Δέν το θέλουμε αυτό, οπότε σταματάμε.", + + "exception_line": "[italic magenta]----- Λεπτομέρειες της εξαίρεσης πάνω απο αυτήν την γραμμή -----", + "exception": "[bold red]:warning: Το πρόγραμμα απέτυχε. Στείλτε ένα στιγμιότυπο οθόνης στο #technical-issues στο Discord (μόνο σε Αγγλικά). :warning:[/bold red]", + "exit_safe": "[bold]Μπορείτε να κλείσετε το παράθυρο.", + "exit": "Πατήστε Enter για έξοδο.", + + "prompt_valid": {"yes": True, "y": True, "no": False, "n": False, "ναι": True, "ν": True, "οχι": False, "ο": False}, # all possible choices (yes or no) + "prompt_prompt": {None: " {ν/ο}", "y": " {Ν/ο}", "n": " {ν/Ο}"}, # only replace the "{y/n}" parts. uppercase means "by default" + "prompt_invalid": "[bold blue]Παρακαλώ απαντήστε με 'ναι' ή 'οχι' (ή 'ν' ή 'ο').[/bold blue]", + + "setup_found": "Ο Sourcemods φάκελος βρέθηκε αυτόματα στην θέση: %s", + "setup_found_question": "Είναι η συνιστώμενη θέση εγκατάστασης. Θέλετε να εγκαταστήσετε το TF2 Classic εκεί;", + "setup_not_found": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Ο Sourcemods φάκελος του Steam δέν βρέθηκε, ή επιλέξατε να μην το χρησιμοποιήσετε.", + "setup_not_found_question": "Θέλετε να αποσυμπιέσετε στο %s; Θα πρέπει να το μετακινήσετε στον φάκελο sourcemods χειροκίνητα.", + "setup_input": "Παρακαλώ, εισαγάγετε τη θέση στην οποία θα εγκατασταθεί το TF2 Classic.\n", + "setup_accept": "Το TF2 Classic θα εγκατασταθεί στην θέση %s\nΔέχεστε;", + "setup_reset": "Επαναφορά...\n", + + "setup_missing_aria2": "Θα χρειαστεί να εγκαταστήσετε το Aria2 για να χρησιμοποιήσετε αυτό το πρόγραμμα.", + "setup_missing_zstd": "Θα χρειαστεί να εγκαταστήσετε το Zstd για να χρησιμοποιήσετε αυτό το πρόγραμμα.", + + "free_space_download": "Δέν έχετε αρκετό ελεύθερο χώρο για να κατεβάσετε το TF2 Classic. Απαιτείται τουλάχιστον 4,5 GB στον κύριο δίσκο σας.", + "free_space_extract": "Δέν έχετε αρκετό ελεύθερο χώρο για να αποσυμπιέσετε το TF2 Classic. Απαιτείται τουλάχιστον 12 GB στην επιλεγμένη τοποθεσία αποσυμπίεσης.", + "location_doesnt_exist": "Η καθορισμένη θέση αποσυμπίεσης δεν υπάρχει", + + "starting_download": "Έναρξη της λήψης για το TF2 Classic... Ενδέχεται να δείτε ορισμένα σφάλματα τα οποία μπορείτε να αγνοήσετε.", + "starting_extract": "Αποσυμπίεση του ληφθέντος αρχείου, παρακαλώ περιμένετε.", + + "troubleshoot_blacklist": "Εφαρμογή μαύρης λίστας ασφαλείας...", + "troubleshoot_blacklist_fail": "WARNING: αδυναμία εφαρμογής μαύρης λίστας ασφαλείας.", + + "success": "Η εγκατάσταση ολοκληρώθηκε με επιτυχία. Μήν ξεχάσετε να επανεκκινήσετε το Steam!", +} \ No newline at end of file diff --git a/langs/hu.py b/langs/hu.py new file mode 100644 index 0000000..3cb6d78 --- /dev/null +++ b/langs/hu.py @@ -0,0 +1,35 @@ +hu = { + "running_background": "Úgy néz ki, hogy a háttérben futtatod a programot. Ezt mi nem akarjuk, szóval kilépünk.", + + "exception_line": "[italic magenta]----- Kifogás részletei e sor fölött -----", + "exception": "[bold red]:warning: A program sikertelen. Készíts egy képernyőképet és küld el a #technical-issues csatornába a hivatalos Discord szerveren (de csak angolul). :warning:[/bold red]", + "exit_safe": "[bold]Mostmár biztonságban bezárhatod ezt az ablakot.", + "exit": "Kilépéshez nyomd meg az Enter billentyűt.", + + "prompt_valid": {"yes": True, "y": True, "no": False, "igen": True, "i": True, "nem": False, "n": False}, # all possible choices (yes or no) + "prompt_prompt": {None: " {i/n}", "y": " {I/n}", "n": " {i/N}"}, # only replace the "{y/n}" parts. uppercase means "by default" + "prompt_invalid": "[bold blue]Válaszolj kérlek egy 'igen' vagy 'nem'-mel (vagy 'i' vagy 'n').[/bold blue]", + + "setup_found": "A sourcemods mappa automatikusan meglelve itt: %s", + "setup_found_question": "Ez a javasolt telepítési hely. Szeretnéd oda telepíteni a TF2 Classic-ot?", + "setup_not_found": "FIGYELEM: Nem lett megtalálva a Steam sourcemods mappája, vagy te döntöttél úgy, hogy nem használod azt.", + "setup_not_found_question": "Szeretnéd ide kicsomagolni: %s? Sajátkezüleg kell majd betenned a sourcemods mappádba.", + "setup_input": "Add meg a helyet ahova szeretnéd a TF2 Classic-ot telepíteni.\n", + "setup_accept": "A TF2 Classic ide lesz telepítve: %s\nElfogadod?", + "setup_reset": "Újrainicializálás...\n", + + "setup_missing_aria2": "Ehhez a script-hez a következőt kell telepítened: Aria2.", + "setup_missing_zstd": "Ehhez a script-hez a következőt kell telepítened: Zstd.", + + "free_space_download": "Nincs elég tárhelyed, hogy letöltsd a TF2 Classic-ot. 4.5GB minimum tárhely szükséges az elsődleges merevlemezeden.", + "free_space_extract": "Nincs elég tárhelyed, hogy kicsomagold a TF2 Classic-ot. 12GB minimum tárhely szükséges az általad választott kicsomagolási helyen.", + "location_doesnt_exist": "A meghatározott kicsomagolási hely nem létezik.", + + "starting_download": "TF2 Classic letöltésének megkezdése... Lehet, hogy látsz néhány hibát amit nyugodtan mellőzhetsz.", + "starting_extract": "A letöltött archívum kicsomagolása, kérlek várj türelemmel.", + + "troubleshoot_blacklist": "Biztonsági feketelistára helyezés...", + "troubleshoot_blacklist_fail": "FIGYELEM: sikertelen biztonsági feketelistára helyezés.", + + "success": "A telepítés sikeres. Ne felejtsd újraindítani a Steam-et!", +} \ No newline at end of file diff --git a/langs/pl.py b/langs/pl.py new file mode 100644 index 0000000..868b22f --- /dev/null +++ b/langs/pl.py @@ -0,0 +1,35 @@ +pl = { + "running_background": "Wygląda na to, że ten proces działa w tle. Instalacja może przejść niepoprawnie, zatem proces ten zostanie przerwany.", + + "exception_line": "[italic magenta]----- Szczegóły wyjątków znajdują się powyżej tej linii -----", + "exception": "[bold red]:warning: Program został niespodziewanie zatrzymany. Prosimy zamieścić zrzut ekranu na Discordzie w sekcji #technical-issues (tylko po angielsku). :warning:[/bold red]", + "exit_safe": "[bold]Można bezpiecznie zamknąć to okno.", + "exit": "Wciśnij Enter by zakończyć.", + + "prompt_valid": {"yes": True, "y": True, "no": False, "tak": True, "t": True, "nie": False, "n": False}, # all possible choices (yes or no) + "prompt_prompt": {None: " {t/n}", "y": " {T/n}", "n": " {t/N}"}, # only replace the "{y/n}" parts. uppercase means "by default" + "prompt_invalid": "[bold blue]Prosimy odpowiedzieć poleceniem 'tak' lub 'nie' (albo 't' lub 'n').[/bold blue]", + + "setup_found": "Automatycznie znaleziono folder sourcemods w: %s", + "setup_found_question": "Jest to zalecane miejsce instalacji. Czy w tym miejscu ma zostać zainstalowany TF2 Classic?", + "setup_not_found": "UWAGA: Folder Steama \"sourcemods\" nie został znaleziony, lub zrezygnowano z jego użycia.", + "setup_not_found_question": "Czy rozpakować pliki w %s? Po wypakowaniu należy własnoręcznie przenieść całą zawartość do pliku sourcemods.", + "setup_input": "Proszę wprowadzić lokalizację, w której zostanie zainstalowane TF2 Classic.\n", + "setup_accept": "TF2 Classic zostanie zainstalowane w %s\nAkceptować?", + "setup_reset": "Ponowna incjalizacja...\n", + + "setup_missing_aria2": "Do uruchomienia tego skryptu wymagane jest zainstalowanie: Aria2.", + "setup_missing_zstd": "Do uruchomienia tego skryptu wymagane jest zainstalowanie: Zstd.", + + "free_space_download": "Brak wolnego miejsca do pobrania TF2 Classic. Wymagane jest minimum 4.5 GB na dysku głównym.", + "free_space_extract": "Brak wolnego miejsca do rozpakowania TF2 Classic. Wymagane jest minimum 12 GB w wybranym miejscu wydobycia.", + "location_doesnt_exist": "Określona lokalizacja rozpakowania nie istnieje.", + + "starting_download": "Rozpoczęcie pobierania gry TF2 Classic... W trakcie procesu pojawią się błędy, które możn zignorować.", + "starting_extract": "Rozpakowywanie pobranego archiwum, prosimy cierpliwie poczekać.", + + "troubleshoot_blacklist": "Stosowanie czarnej listy bezpieczeństwa...", + "troubleshoot_blacklist_fail": "UWAGA: Nie można zastosować czarnej listy bezpieczeństwa.", + + "success": "Instalacja przebiegła pomyślnie. Prosimy pamiętać o zrestartowaniu Steama!", +} \ No newline at end of file From 3b3a3b991949ebf12b812c51c4954789da60e0da Mon Sep 17 00:00:00 2001 From: Alex-1000 Date: Mon, 1 Aug 2022 23:16:48 +0300 Subject: [PATCH 07/14] setup_path() change and directory check change --- gui.py | 7 +------ install.py | 2 -- setup.py | 29 +++++++++++++++-------------- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/gui.py b/gui.py index 842cc03..bc88312 100644 --- a/gui.py +++ b/gui.py @@ -55,12 +55,7 @@ def message_dir(msg): dir = path.expandvars(dir) if path.isdir(dir): return dir - try: - makedirs(dir) - rmdir(dir) - return dir - except Exception: - pass + message(lang["location_doesnt_exist"]) def message_end(msg, code): """ diff --git a/install.py b/install.py index 945356d..b10f3a0 100644 --- a/install.py +++ b/install.py @@ -23,8 +23,6 @@ def free_space_check(): minimum_free_install_bytes = 12884901888 if disk_usage(vars.TEMP_PATH)[2] < minimum_free_download_bytes: gui.message_end(lang["free_space_download"], 1) - if not path.isdir(vars.INSTALL_PATH): - gui.message_end(lang["location_doesnt_exist"], 1) elif disk_usage(vars.INSTALL_PATH)[2] < minimum_free_install_bytes: gui.message_end(lang["free_space_extract"], 1) diff --git a/setup.py b/setup.py index 5af3320..68cda79 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,6 @@ """ This module is primarily related to helping the rest of the application find what it needs. - This includes the path to the user's sourcemods folder, the binary locations for things like Aria2 depending on their platform, etc. @@ -54,21 +53,23 @@ def setup_path(): """ Choose setup path. """ - path = sourcemods_path() - if path is not None: - gui.message('Sourcemods folder was automatically found at: ' + path) - if gui.message_yes_no('It\'s the recommended installation location. Would you like to install TF2Classic there?'): - vars.INSTALL_PATH = path.strip('\"') + vars.INSTALL_PATH = sourcemods_path().rstrip('\"') + if isinstance(vars.INSTALL_PATH, str): + gui.message(lang["setup_found"] % vars.INSTALL_PATH) + if gui.message_yes_no(lang["setup_found_question"]): return - if gui.message_yes_no('Would you like to extract in ' + getcwd() + '? You must move it to your sourcemods manually.'): - vars.INSTALL_PATH = getcwd() else: - path = gui.message_dir('Please, enter the location in which TF2Classic will be installed to.\n') - if gui.message_yes_no('TF2Classic will be installed in ' + path + '\nDo you accept?'): - vars.INSTALL_PATH = path - else: - gui.message('Resetting...\n') - setup_path() + gui.message(lang["setup_not_found"]) + + current = getcwd() + if gui.message_yes_no(lang["setup_not_found_question"] % current): + vars.INSTALL_PATH = current + else: + # no do-while? + # :civ_megamind: + vars.INSTALL_PATH = gui.message_dir(msg) + while not gui.message_yes_no(lang["setup_accept"] % vars.INSTALL_PATH): + vars.INSTALL_PATH = gui.message_dir(msg) def setup_binaries(): """ From 37ad28e41b80d1494a734ba00f4f35308920796d Mon Sep 17 00:00:00 2001 From: Alex-1000 Date: Tue, 2 Aug 2022 10:22:30 +0300 Subject: [PATCH 08/14] . --- setup.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/setup.py b/setup.py index 68cda79..cf7d0a8 100644 --- a/setup.py +++ b/setup.py @@ -65,8 +65,6 @@ def setup_path(): if gui.message_yes_no(lang["setup_not_found_question"] % current): vars.INSTALL_PATH = current else: - # no do-while? - # :civ_megamind: vars.INSTALL_PATH = gui.message_dir(msg) while not gui.message_yes_no(lang["setup_accept"] % vars.INSTALL_PATH): vars.INSTALL_PATH = gui.message_dir(msg) From cad9bad80c11c5ac261d43f041f323dc0464ac1f Mon Sep 17 00:00:00 2001 From: Alex-1000 Date: Tue, 2 Aug 2022 10:23:33 +0300 Subject: [PATCH 09/14] guess who forgot to change "en" to "ru" --- langs/ru.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/langs/ru.py b/langs/ru.py index 7bc8032..ea1b855 100644 --- a/langs/ru.py +++ b/langs/ru.py @@ -1,4 +1,4 @@ -en = { +ru = { "running_background": "Похоже, что программа запущена в фоновом режиме. Выходим...", "exception_line": "[italic magenta]----- Детали об ошибке над этой линией -----", From 2ac6e989f69aa84052581884ada176378c62eb10 Mon Sep 17 00:00:00 2001 From: Alex <64156241+Alex-1000@users.noreply.github.com> Date: Tue, 2 Aug 2022 14:11:10 +0300 Subject: [PATCH 10/14] Custom directory input fix Forgot to change "msg" to actual text --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index cf7d0a8..74c66c4 100644 --- a/setup.py +++ b/setup.py @@ -65,9 +65,9 @@ def setup_path(): if gui.message_yes_no(lang["setup_not_found_question"] % current): vars.INSTALL_PATH = current else: - vars.INSTALL_PATH = gui.message_dir(msg) + vars.INSTALL_PATH = gui.message_dir(lang["setup_input"]) while not gui.message_yes_no(lang["setup_accept"] % vars.INSTALL_PATH): - vars.INSTALL_PATH = gui.message_dir(msg) + vars.INSTALL_PATH = gui.message_dir(lang["setup_input"]) def setup_binaries(): """ From fbba206aebcfa887b883825262bad276709f9a3c Mon Sep 17 00:00:00 2001 From: Alex-1000 Date: Tue, 2 Aug 2022 14:28:41 +0300 Subject: [PATCH 11/14] Starting replacing selfmade translation with gettext --- gui.py | 26 ++++++++++++++------------ install.py | 8 ++++---- lang.py | 29 ----------------------------- setup.py | 18 +++++++++--------- tf2c_downloader.py | 12 ++++++------ troubleshoot.py | 4 ++-- 6 files changed, 35 insertions(+), 62 deletions(-) delete mode 100644 lang.py diff --git a/gui.py b/gui.py index bc88312..078baca 100644 --- a/gui.py +++ b/gui.py @@ -18,30 +18,32 @@ def message(msg, delay = 0): print("[bold yellow]" + msg) sleep(delay) -def message_yes_no(msg, default = None): +def message_yes_no(msg): """ Show a message to user and get yes/no answer. """ - valid = lang["prompt_valid"] - prompt = lang["prompt_prompt"][default] + # dont know for now how to make it properly, leaving all of pain to future-me + valid_yes = _("yes y").split() + valid_no = _("no n").split() + prompt = _("{y/n}") msg += prompt while True: print(msg) choice = input().lower() - if default is not None and choice == "": - return valid[default] - elif choice in valid: - return valid[choice] + if choice in valid_yes: + return True + elif choice in valid_no: + return False else: - print(lang["prompt_invalid"]) + print("[bold blue]" + _("Please respond with 'yes' or 'no' (or 'y' or 'n').") + "[/bold blue]") def message_input(msg): """ Show a message and get input from user. """ - return input(msg + ' >') + return input(msg + ' > ') def message_dir(msg): """ @@ -55,7 +57,7 @@ def message_dir(msg): dir = path.expandvars(dir) if path.isdir(dir): return dir - message(lang["location_doesnt_exist"]) + message(_("The specified extraction location does not exist.")) def message_end(msg, code): """ @@ -63,7 +65,7 @@ def message_end(msg, code): """ print("[bold green]" + msg) if environ.get("WT_SESSION"): - print(lang["exit_safe"]) + print("[bold]" + _("You are safe to close this window.")) else: - input(lang["exit"]) + input(_("Press Enter to exit.")) exit(code) diff --git a/install.py b/install.py index b10f3a0..cc42eb9 100644 --- a/install.py +++ b/install.py @@ -22,15 +22,15 @@ def free_space_check(): minimum_free_download_bytes = 4831838208 minimum_free_install_bytes = 12884901888 if disk_usage(vars.TEMP_PATH)[2] < minimum_free_download_bytes: - gui.message_end(lang["free_space_download"], 1) + gui.message_end(_("You don't have enough free space to download TF2 Classic. A minimum of 4.5GB on your primary drive is required."), 1) elif disk_usage(vars.INSTALL_PATH)[2] < minimum_free_install_bytes: - gui.message_end(lang["free_space_extract"], 1) + gui.message_end(_("You don't have enough free space to extract TF2 Classic. A minimum of 12GB at your chosen extraction site is required."), 1) def tf2c_download(): """ Download TF2C archive. """ - gui.message(lang["starting_download"], 3) + gui.message(_("Starting the download for TF2 Classic... You may see some errors that are safe to ignore."), 3) run([vars.ARIA2C_BINARY, '--max-connection-per-server=16', '-UTF2CDownloaderGit', '--max-concurrent-downloads=16', '--optimize-concurrent-downloads=true', '--check-certificate=false', '--check-integrity=true', '--auto-file-renaming=false', '--continue=true', '--console-log-level=error', '--summary-interval=0', '--bt-hash-check-seed=false', '--seed-time=0', '-d' + vars.TEMP_PATH, 'https://wiki.tf2classic.com/misc/tf2classic-latest-zst.meta4'], check=True) @@ -39,7 +39,7 @@ def tf2c_extract(): """ Extract archive and delete it. """ - gui.message(lang["starting_extract"], 1) + gui.message(_("Extracting the downloaded archive, please wait patiently."), 1) if system() == 'Windows': run([vars.ARC_BINARY, '-overwrite', 'unarchive', path.join(vars.TEMP_PATH, 'tf2classic.tar.zst'), vars.INSTALL_PATH], check=True) else: diff --git a/lang.py b/lang.py deleted file mode 100644 index 57aa8b4..0000000 --- a/lang.py +++ /dev/null @@ -1,29 +0,0 @@ -from langs.en import en -from langs.fr import fr -from langs.es import es -from langs.it import it -from langs.el import el -from langs.hu import hu -from langs.pl import pl -from langs.ru import ru - -import locale - -langs = { - "en": en, - "fr": fr, - "es": es, - "it": it, - "el": el, - "hu": hu, - "pl": pl, - "ru": ru -} - -lang = langs["en"] - -locale = locale.getdefaultlocale()[0] -if locale in langs: - lang.update(langs[locale]) -elif locale.split("_")[0] in langs: - lang.update(langs[locale.split("_")[0]]) \ No newline at end of file diff --git a/setup.py b/setup.py index cf7d0a8..5a8c28c 100644 --- a/setup.py +++ b/setup.py @@ -55,19 +55,19 @@ def setup_path(): """ vars.INSTALL_PATH = sourcemods_path().rstrip('\"') if isinstance(vars.INSTALL_PATH, str): - gui.message(lang["setup_found"] % vars.INSTALL_PATH) - if gui.message_yes_no(lang["setup_found_question"]): + gui.message(_("Sourcemods folder was automatically found at: %s") % vars.INSTALL_PATH) + if gui.message_yes_no(_("It's the recommended installation location. Would you like to install TF2 Classic there?")): return else: - gui.message(lang["setup_not_found"]) + gui.message(_("WARNING: Steam's sourcemods folder has not been found.")) current = getcwd() - if gui.message_yes_no(lang["setup_not_found_question"] % current): + if gui.message_yes_no(_("Would you like to extract in %s? You must move it to your sourcemods manually.") % current): vars.INSTALL_PATH = current else: - vars.INSTALL_PATH = gui.message_dir(msg) - while not gui.message_yes_no(lang["setup_accept"] % vars.INSTALL_PATH): - vars.INSTALL_PATH = gui.message_dir(msg) + vars.INSTALL_PATH = gui.message_dir(_("Please, enter the location in which TF2 Classic will be installed to.\n")) + while not gui.message_yes_no(_("TF2 Classic will be installed in %s\nDo you accept?") % vars.INSTALL_PATH): + vars.INSTALL_PATH = gui.message_dir() def setup_binaries(): """ @@ -86,11 +86,11 @@ def setup_binaries(): vars.ARC_BINARY = 'Binaries/arc.exe' else: if which('aria2c') is None: - gui.message_end(lang["setup_missing_aria2"], 1) + gui.message_end(_("You need to install Aria2 to use this script."), 1) else: vars.ARIA2C_BINARY = 'aria2c' if which('zstd') is None and which('pzstd') is None: - gui.message_end(lang["setup_missing_zstd"], 1) + gui.message_end(_("You need to install Zstd to use this script."), 1) elif which('zstd') is not None: vars.ZSTD_BINARY = 'zstd' else: diff --git a/tf2c_downloader.py b/tf2c_downloader.py index f64b957..88e826e 100644 --- a/tf2c_downloader.py +++ b/tf2c_downloader.py @@ -39,7 +39,7 @@ def sanity_check(): but it's not a priority right now since Linux users can figure out how to use the terminal. """ if not stdin or not stdin.isatty(): - print(lang["running_background"]) + print(_("Looks like we're running in the background. We don't want that, so we're exiting.")) exit(1) try: @@ -53,12 +53,12 @@ def sanity_check(): except Exception as ex: if ex is not SystemExit: traceback.print_exc() - print(lang["exception_line"]) - print(lang["exception"]) + print("[italic magenta]----- " + _("Exception details above this line") + "-----") + print("[bold red]:warning: " + _("The program has failed. Post a screenshot in #technical-issues on the Discord.") + ":warning:[/bold red]") if os.environ.get("WT_SESSION"): - print(lang["exit_safe"]) + print("[bold]" + _("You are safe to close this window.")) else: - input(lang["exit"]) + input(_("Press Enter to exit.")) exit(1) -gui.message_end(lang["success"], 0) +gui.message_end(_("The installation has successfully completed. Remember to restart Steam!"), 0) diff --git a/troubleshoot.py b/troubleshoot.py index f9aa656..fe06bca 100644 --- a/troubleshoot.py +++ b/troubleshoot.py @@ -4,8 +4,8 @@ import urllib.request def apply_blacklist(): - gui.message(lang["troubleshoot_blacklist"]) + gui.message(_("Applying safety blacklist...")) try: urllib.request.urlretrieve("https://wiki.tf2classic.com/serverlist/blacklist.php", vars.INSTALL_PATH + "/tf2classic/cfg/server_blacklist.txt") except: - gui.message(lang["troubleshoot_blacklist_fail"]) \ No newline at end of file + gui.message(_("WARNING: could not apply safety blacklist.")) \ No newline at end of file From 86c529066ed5fab71a5ec91edf8eaf213851e9e7 Mon Sep 17 00:00:00 2001 From: Alex-1000 Date: Tue, 2 Aug 2022 20:42:34 +0300 Subject: [PATCH 12/14] Moved all translations to .mo/.po (gettext format). Currently compiling script is not handling gettext locales placements --- gui.py | 14 +- install.py | 3 +- langs/el.py | 35 ----- langs/en.py | 35 ----- langs/es.py | 35 ----- langs/fr.py | 35 ----- langs/hu.py | 35 ----- langs/it.py | 35 ----- langs/pl.py | 35 ----- langs/ru.py | 35 ----- locale/el/LC_MESSAGES/tf2c_downloader.mo | Bin 0 -> 4827 bytes locale/el/LC_MESSAGES/tf2c_downloader.po | 166 +++++++++++++++++++++++ locale/en/LC_MESSAGES/tf2c_downloader.mo | Bin 0 -> 3644 bytes locale/en/LC_MESSAGES/tf2c_downloader.po | 152 +++++++++++++++++++++ locale/es/LC_MESSAGES/tf2c_downloader.mo | Bin 0 -> 3781 bytes locale/es/LC_MESSAGES/tf2c_downloader.po | 157 +++++++++++++++++++++ locale/fr/LC_MESSAGES/tf2c_downloader.mo | Bin 0 -> 3952 bytes locale/fr/LC_MESSAGES/tf2c_downloader.po | 159 ++++++++++++++++++++++ locale/hu/LC_MESSAGES/tf2c_downloader.mo | Bin 0 -> 3940 bytes locale/hu/LC_MESSAGES/tf2c_downloader.po | 157 +++++++++++++++++++++ locale/it/LC_MESSAGES/tf2c_downloader.mo | Bin 0 -> 3816 bytes locale/it/LC_MESSAGES/tf2c_downloader.po | 159 ++++++++++++++++++++++ locale/pl/LC_MESSAGES/tf2c_downloader.mo | Bin 0 -> 4034 bytes locale/pl/LC_MESSAGES/tf2c_downloader.po | 161 ++++++++++++++++++++++ locale/ru/LC_MESSAGES/tf2c_downloader.mo | Bin 0 -> 4503 bytes locale/ru/LC_MESSAGES/tf2c_downloader.po | 160 ++++++++++++++++++++++ messages.pot | 125 +++++++++++++++++ setup.py | 5 +- tf2c_downloader.py | 6 +- troubleshoot.py | 3 +- 30 files changed, 1411 insertions(+), 296 deletions(-) delete mode 100644 langs/el.py delete mode 100644 langs/en.py delete mode 100644 langs/es.py delete mode 100644 langs/fr.py delete mode 100644 langs/hu.py delete mode 100644 langs/it.py delete mode 100644 langs/pl.py delete mode 100644 langs/ru.py create mode 100644 locale/el/LC_MESSAGES/tf2c_downloader.mo create mode 100644 locale/el/LC_MESSAGES/tf2c_downloader.po create mode 100644 locale/en/LC_MESSAGES/tf2c_downloader.mo create mode 100644 locale/en/LC_MESSAGES/tf2c_downloader.po create mode 100644 locale/es/LC_MESSAGES/tf2c_downloader.mo create mode 100644 locale/es/LC_MESSAGES/tf2c_downloader.po create mode 100644 locale/fr/LC_MESSAGES/tf2c_downloader.mo create mode 100644 locale/fr/LC_MESSAGES/tf2c_downloader.po create mode 100644 locale/hu/LC_MESSAGES/tf2c_downloader.mo create mode 100644 locale/hu/LC_MESSAGES/tf2c_downloader.po create mode 100644 locale/it/LC_MESSAGES/tf2c_downloader.mo create mode 100644 locale/it/LC_MESSAGES/tf2c_downloader.po create mode 100644 locale/pl/LC_MESSAGES/tf2c_downloader.mo create mode 100644 locale/pl/LC_MESSAGES/tf2c_downloader.po create mode 100644 locale/ru/LC_MESSAGES/tf2c_downloader.mo create mode 100644 locale/ru/LC_MESSAGES/tf2c_downloader.po create mode 100644 messages.pot diff --git a/gui.py b/gui.py index 078baca..1058ee7 100644 --- a/gui.py +++ b/gui.py @@ -3,12 +3,10 @@ asking questions, generally handling any sort of communication or interactivity with the user. """ -from os import environ, makedirs, path, rmdir +import os from sys import exit from time import sleep from rich import print -from lang import lang - def message(msg, delay = 0): """ @@ -26,7 +24,7 @@ def message_yes_no(msg): valid_yes = _("yes y").split() valid_no = _("no n").split() prompt = _("{y/n}") - msg += prompt + msg += ' ' + prompt while True: print(msg) @@ -52,10 +50,10 @@ def message_dir(msg): while True: dir = input(msg + ": ") if dir.count("~") > 0: - dir = path.expanduser(dir) + dir = os.path.expanduser(dir) if dir.count("$") > 0: - dir = path.expandvars(dir) - if path.isdir(dir): + dir = os.path.expandvars(dir) + if os.path.isdir(dir): return dir message(_("The specified extraction location does not exist.")) @@ -64,7 +62,7 @@ def message_end(msg, code): Show a message and exit. """ print("[bold green]" + msg) - if environ.get("WT_SESSION"): + if os.environ.get("WT_SESSION"): print("[bold]" + _("You are safe to close this window.")) else: input(_("Press Enter to exit.")) diff --git a/install.py b/install.py index cc42eb9..e8af8c5 100644 --- a/install.py +++ b/install.py @@ -5,9 +5,8 @@ """ from os import path from platform import system -from shutil import disk_usage, rmtree +from shutil import disk_usage from subprocess import run -from lang import lang import gui import vars diff --git a/langs/el.py b/langs/el.py deleted file mode 100644 index 15537a2..0000000 --- a/langs/el.py +++ /dev/null @@ -1,35 +0,0 @@ -el = { - "running_background": "Απο ότι φαίνεται λειτουργούμε στο παρασκήνιο. Δέν το θέλουμε αυτό, οπότε σταματάμε.", - - "exception_line": "[italic magenta]----- Λεπτομέρειες της εξαίρεσης πάνω απο αυτήν την γραμμή -----", - "exception": "[bold red]:warning: Το πρόγραμμα απέτυχε. Στείλτε ένα στιγμιότυπο οθόνης στο #technical-issues στο Discord (μόνο σε Αγγλικά). :warning:[/bold red]", - "exit_safe": "[bold]Μπορείτε να κλείσετε το παράθυρο.", - "exit": "Πατήστε Enter για έξοδο.", - - "prompt_valid": {"yes": True, "y": True, "no": False, "n": False, "ναι": True, "ν": True, "οχι": False, "ο": False}, # all possible choices (yes or no) - "prompt_prompt": {None: " {ν/ο}", "y": " {Ν/ο}", "n": " {ν/Ο}"}, # only replace the "{y/n}" parts. uppercase means "by default" - "prompt_invalid": "[bold blue]Παρακαλώ απαντήστε με 'ναι' ή 'οχι' (ή 'ν' ή 'ο').[/bold blue]", - - "setup_found": "Ο Sourcemods φάκελος βρέθηκε αυτόματα στην θέση: %s", - "setup_found_question": "Είναι η συνιστώμενη θέση εγκατάστασης. Θέλετε να εγκαταστήσετε το TF2 Classic εκεί;", - "setup_not_found": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Ο Sourcemods φάκελος του Steam δέν βρέθηκε, ή επιλέξατε να μην το χρησιμοποιήσετε.", - "setup_not_found_question": "Θέλετε να αποσυμπιέσετε στο %s; Θα πρέπει να το μετακινήσετε στον φάκελο sourcemods χειροκίνητα.", - "setup_input": "Παρακαλώ, εισαγάγετε τη θέση στην οποία θα εγκατασταθεί το TF2 Classic.\n", - "setup_accept": "Το TF2 Classic θα εγκατασταθεί στην θέση %s\nΔέχεστε;", - "setup_reset": "Επαναφορά...\n", - - "setup_missing_aria2": "Θα χρειαστεί να εγκαταστήσετε το Aria2 για να χρησιμοποιήσετε αυτό το πρόγραμμα.", - "setup_missing_zstd": "Θα χρειαστεί να εγκαταστήσετε το Zstd για να χρησιμοποιήσετε αυτό το πρόγραμμα.", - - "free_space_download": "Δέν έχετε αρκετό ελεύθερο χώρο για να κατεβάσετε το TF2 Classic. Απαιτείται τουλάχιστον 4,5 GB στον κύριο δίσκο σας.", - "free_space_extract": "Δέν έχετε αρκετό ελεύθερο χώρο για να αποσυμπιέσετε το TF2 Classic. Απαιτείται τουλάχιστον 12 GB στην επιλεγμένη τοποθεσία αποσυμπίεσης.", - "location_doesnt_exist": "Η καθορισμένη θέση αποσυμπίεσης δεν υπάρχει", - - "starting_download": "Έναρξη της λήψης για το TF2 Classic... Ενδέχεται να δείτε ορισμένα σφάλματα τα οποία μπορείτε να αγνοήσετε.", - "starting_extract": "Αποσυμπίεση του ληφθέντος αρχείου, παρακαλώ περιμένετε.", - - "troubleshoot_blacklist": "Εφαρμογή μαύρης λίστας ασφαλείας...", - "troubleshoot_blacklist_fail": "WARNING: αδυναμία εφαρμογής μαύρης λίστας ασφαλείας.", - - "success": "Η εγκατάσταση ολοκληρώθηκε με επιτυχία. Μήν ξεχάσετε να επανεκκινήσετε το Steam!", -} \ No newline at end of file diff --git a/langs/en.py b/langs/en.py deleted file mode 100644 index c6faa81..0000000 --- a/langs/en.py +++ /dev/null @@ -1,35 +0,0 @@ -en = { - "running_background": "Looks like we're running in the background. We don't want that, so we're exiting.", - - "exception_line": "[italic magenta]----- Exception details above this line -----", - "exception": "[bold red]:warning: The program has failed. Post a screenshot in #technical-issues on the Discord. :warning:[/bold red]", - "exit_safe": "[bold]You are safe to close this window.", - "exit": "Press Enter to exit.", - - "prompt_valid": {"yes": True, "y": True, "no": False, "n": False}, # all possible choices (yes or no) - "prompt_prompt": {None: " {y/n}", "y": " {Y/n}", "n": " {y/N}"}, # only replace the "{y/n}" parts. uppercase means "by default" - "prompt_invalid": "[bold blue]Please respond with 'yes' or 'no' (or 'y' or 'n').[/bold blue]", - - "setup_found": "Sourcemods folder was automatically found at: %s", - "setup_found_question": "It's the recommended installation location. Would you like to install TF2 Classic there?", - "setup_not_found": "WARNING: Steam's sourcemods folder has not been found, or you chose not to use it.", - "setup_not_found_question": "Would you like to extract in %s? You must move it to your sourcemods manually.", - "setup_input": "Please, enter the location in which TF2 Classic will be installed to.\n", - "setup_accept": "TF2 Classic will be installed in %s\nDo you accept?", - "setup_reset": "Reinitialising...\n", - - "setup_missing_aria2": "You need to install Aria2 to use this script.", - "setup_missing_zstd": "You need to install Zstd to use this script.", - - "free_space_download": "You don't have enough free space to download TF2 Classic. A minimum of 4.5GB on your primary drive is required.", - "free_space_extract": "You don't have enough free space to extract TF2 Classic. A minimum of 12GB at your chosen extraction site is required.", - "location_doesnt_exist": "The specified extraction location does not exist.", - - "starting_download": "Starting the download for TF2 Classic... You may see some errors that are safe to ignore.", - "starting_extract": "Extracting the downloaded archive, please wait patiently.", - - "troubleshoot_blacklist": "Applying safety blacklist...", - "troubleshoot_blacklist_fail": "WARNING: could not apply safety blacklist.", - - "success": "The installation has successfully completed. Remember to restart Steam!", -} \ No newline at end of file diff --git a/langs/es.py b/langs/es.py deleted file mode 100644 index dc8adc6..0000000 --- a/langs/es.py +++ /dev/null @@ -1,35 +0,0 @@ -es = { - "running_background": "Parece que estamos corriendo en segundo plano. No queremos eso, así que vamos a salir", - - "exception_line": "[italic magenta]----- Detalles de la excepción arriba de esta línea -----", - "exception": "[bold red]:warning: El programa ha fallado. Publique una captura de pantalla en #technical-issues en Discord (solo en inglés). :warning:[/bold red]", - "exit_safe": "[bold]Puede cerrar esta ventana.", - "exit": "Presiona Enter para salir.", - - "prompt_valid": {"yes": True, "y": True, "si": True, "sí": True, "s": True, "no": False, "n": False}, # all possible choices (yes or no) - "prompt_prompt": {None: " {s/n}", "y": " {S/n}", "n": " {s/N}"}, # only replace the "{y/n}" parts. uppercase means "by default" - "prompt_invalid": "[bold blue]Por favor, responda con 'sí' o 'no' (o 's' o 'n').[/bold blue]", - - "setup_found": "La carpeta Sourcemods se encontró automáticamente en: %s", - "setup_found_question": "Es la ubicación de instalación recomendada. ¿Le gustaría instalar TF2 Classic allí?", - "setup_not_found": "ADVERTENCIA: No se ha encontrado la carpeta sourcemods de Steam o usted decidió no usarla.", - "setup_not_found_question": "¿Te gustaría extraer en %s? Debes moverlo a tus sourcemods manualmente.", - "setup_input": "Por favor, ingrese la ubicación en la que se instalará TF2 Classic.\n", - "setup_accept": "TF2 Classic se instalará en %s\n¿Aceptas?", - "setup_reset": "Restableciendo...\n", - - "setup_missing_aria2": "Necesitas instalar Aria2 para usar este script.", - "setup_missing_zstd": "Necesitas instalar Zstd para usar este script.", - - "free_space_download": "No tienes suficiente espacio libre para descargar TF2 Classic. Se requiere un mínimo de 4.5GB en tu disco principal.", - "free_space_extract": "No tienes suficiente espacio libre para extraer TF2 Classic. Se requiere un mínimo de 12GB en el sitio de extracción elegido.", - "location_doesnt_exist": "La ubicación de extracción especificada no existe.", - - "starting_download": "Iniciando la descarga de TF2 Classic... Es posible que veas algunos errores que puedes ignorar.", - "starting_extract": "Extrayendo el archivo descargado, espere pacientemente.", - - "troubleshoot_blacklist": "Aplicando lista negra de seguridad…", - "troubleshoot_blacklist_fail": "ADVERTENCIA: no se pudo aplicar la lista negra de seguridad.", - - "success": "La instalación se completó con éxito. ¡Recuerda reiniciar Steam!", -} \ No newline at end of file diff --git a/langs/fr.py b/langs/fr.py deleted file mode 100644 index 35bd369..0000000 --- a/langs/fr.py +++ /dev/null @@ -1,35 +0,0 @@ -fr = { - "running_background": "On dirait qu'on est en train de tourner en arrière plan. On ne veut pas ça, donc on sort.", - - "exception_line": "[italic magenta]----- Détails des exceptions au dessus de cette ligne -----", - "exception": "[bold red]:warning: Le programme a échoué. Postez un screenshot dans #technical-issues sur le Discord (en anglais seulement). :warning:[/bold red]", - "exit_safe": "[bold]Vous pouvez fermer cette fenêtre.", - "exit": "Appuyez sur Entrée pour sortir.", - - "prompt_valid": {"yes": True, "y": True, "no": False, "oui": True, "o": True, "non": False, "n": False}, # all possible choices (yes or no) - "prompt_prompt": {None: " {o/n}", "y": " {O/n}", "n": " {o/N}"}, # only replace the "{y/n}" parts. uppercase means "by default" - "prompt_invalid": "[bold blue]Répondez avec 'oui' ou 'non' ('o' ou 'n').[/bold blue]", - - "setup_found": "Le dossier sourcemods a été automatiquement trouvé ici : %s", - "setup_found_question": "C'est l'endroit d'installation recommendé. Voulez-vous installer TF2 Classic ici ?", - "setup_not_found": "ATTENTION : Le dossier sourcemods de Steam n'a pas été trouvé, ou alors vous avez choisi de ne pas l'utiliser.", - "setup_not_found_question": "Voulez-vous l'extraire dans %s ? Vous devez ensuite le déplacer dans votre dossier sourcemods manuellement.", - "setup_input": "Veuillez entrez l'emplacement du dossier où va être installer TF2 Classic.\n", - "setup_accept": "TF2 Classic va être installer ici : %s\nEs-ce que vous acceptez ?", - "setup_reset": "Réinitialisation...\n", - - "setup_missing_aria2": "Vous devez installer Aria2 pour utiliser ce script.", - "setup_missing_zstd": "Vous devez installer Zstd pour utiliser ce script.", - - "free_space_download": "Vous n'avez pas assez d'espace libre pour télécharger TF2 Classic. Vous devez avoir 4,5 Go de libre au minimum sur votre disque dur principale.", - "free_space_extract": "Vous n'avez pas assez d'espace libre pour extraire TF2 Classic. Vous devez avoir 12 Go de libre au minimum sur l'emplacement d'installation.", - "location_doesnt_exist": "L'emplacement d'extraction spécifié n'existe pas.", - - "starting_download": "Téléchargement de TF2 Classic... Vous pouvez voir certaines erreurs qui peuvent être parfaitement ignorées.", - "starting_extract": "Extraction de l'archive téléchargée, veuillez patentier.", - - "troubleshoot_blacklist": "Application de la liste noir de sécurité...", - "troubleshoot_blacklist_fail": "ATTENTION : impossible d'appliquer la liste noir de sécurité.", - - "success": "L'installation est terminée. N'oubliez pas de redémarrer Steam !", -} \ No newline at end of file diff --git a/langs/hu.py b/langs/hu.py deleted file mode 100644 index 3cb6d78..0000000 --- a/langs/hu.py +++ /dev/null @@ -1,35 +0,0 @@ -hu = { - "running_background": "Úgy néz ki, hogy a háttérben futtatod a programot. Ezt mi nem akarjuk, szóval kilépünk.", - - "exception_line": "[italic magenta]----- Kifogás részletei e sor fölött -----", - "exception": "[bold red]:warning: A program sikertelen. Készíts egy képernyőképet és küld el a #technical-issues csatornába a hivatalos Discord szerveren (de csak angolul). :warning:[/bold red]", - "exit_safe": "[bold]Mostmár biztonságban bezárhatod ezt az ablakot.", - "exit": "Kilépéshez nyomd meg az Enter billentyűt.", - - "prompt_valid": {"yes": True, "y": True, "no": False, "igen": True, "i": True, "nem": False, "n": False}, # all possible choices (yes or no) - "prompt_prompt": {None: " {i/n}", "y": " {I/n}", "n": " {i/N}"}, # only replace the "{y/n}" parts. uppercase means "by default" - "prompt_invalid": "[bold blue]Válaszolj kérlek egy 'igen' vagy 'nem'-mel (vagy 'i' vagy 'n').[/bold blue]", - - "setup_found": "A sourcemods mappa automatikusan meglelve itt: %s", - "setup_found_question": "Ez a javasolt telepítési hely. Szeretnéd oda telepíteni a TF2 Classic-ot?", - "setup_not_found": "FIGYELEM: Nem lett megtalálva a Steam sourcemods mappája, vagy te döntöttél úgy, hogy nem használod azt.", - "setup_not_found_question": "Szeretnéd ide kicsomagolni: %s? Sajátkezüleg kell majd betenned a sourcemods mappádba.", - "setup_input": "Add meg a helyet ahova szeretnéd a TF2 Classic-ot telepíteni.\n", - "setup_accept": "A TF2 Classic ide lesz telepítve: %s\nElfogadod?", - "setup_reset": "Újrainicializálás...\n", - - "setup_missing_aria2": "Ehhez a script-hez a következőt kell telepítened: Aria2.", - "setup_missing_zstd": "Ehhez a script-hez a következőt kell telepítened: Zstd.", - - "free_space_download": "Nincs elég tárhelyed, hogy letöltsd a TF2 Classic-ot. 4.5GB minimum tárhely szükséges az elsődleges merevlemezeden.", - "free_space_extract": "Nincs elég tárhelyed, hogy kicsomagold a TF2 Classic-ot. 12GB minimum tárhely szükséges az általad választott kicsomagolási helyen.", - "location_doesnt_exist": "A meghatározott kicsomagolási hely nem létezik.", - - "starting_download": "TF2 Classic letöltésének megkezdése... Lehet, hogy látsz néhány hibát amit nyugodtan mellőzhetsz.", - "starting_extract": "A letöltött archívum kicsomagolása, kérlek várj türelemmel.", - - "troubleshoot_blacklist": "Biztonsági feketelistára helyezés...", - "troubleshoot_blacklist_fail": "FIGYELEM: sikertelen biztonsági feketelistára helyezés.", - - "success": "A telepítés sikeres. Ne felejtsd újraindítani a Steam-et!", -} \ No newline at end of file diff --git a/langs/it.py b/langs/it.py deleted file mode 100644 index 2132f87..0000000 --- a/langs/it.py +++ /dev/null @@ -1,35 +0,0 @@ -it = { - "running_background": "Sembra che stiamo lavorando in background. Non lo vogliamo, quindi stiamo uscendo.", - - "exception_line": "[italic magenta]----- Dettagli dell'eccezione sopra questa riga -----", - "exception": "[bold red]:warning: Il programma ha fallito. Posta uno screenshot su #technical-issues nel Discord (in inglese soltanto). :warning:[/bold red]", - "exit_safe": "[bold]È possibile chiudere questa finestra.", - "exit": "Premi Enter per uscire.", - - "prompt_valid": {"yes": True, "y": True, "sì": True, "si": True, "s": True, "no": False, "n": False}, # all possible choices (yes or no) - "prompt_prompt": {None: " {s/n}", "y": " {S/n}", "n": " {s/N}"}, # only replace the "{y/n}" parts. uppercase means "by default" - "prompt_invalid": "[bold blue]Per favore, rispondi con 'sì' o 'no' (o 's' o 'n').[/bold blue]", - - "setup_found": "La cartella sourcemods fu trovata automaticamente in: %s", - "setup_found_question": "È la posizione di installazione consigliata. Desideri installare TF2 Classic lì?", - "setup_not_found": "ATTENZIONE: La cartella sourcemods di Steam non è stata trovata, oppure hai scelto di non usarla.", - "setup_not_found_question": "Desideri estrarre in %s? Devi spostarlo manualmente sui tuoi sourcemods.", - "setup_input": "Per favore, inserire la posizione in cui verrà installato TF2 Classic.\n", - "setup_accept": "TF2 Classic sarà installato in %s\nAccetti?", - "setup_reset": "Reinstallazione...\n", - - "setup_missing_aria2": "Hai bisogno di installare Aria2 per usare questo script.", - "setup_missing_zstd": "Hai bisogno di installare Zstd per usare questo script.", - - "free_space_download": "Non hai abbastanza spazio libero per scaricare TF2 Classic. È richiesto un minimo di 4,5 GB sull'unità principale.", - "free_space_extract": "Non hai abbastanza spazio libero per estrarre TF2 Classic. È richiesto un minimo di 12 GB nel sito di estrazione scelto.", - "location_doesnt_exist": "Il percorso di estrazione specificato non esiste.", - - "starting_download": "Avvio del download per TF2 Classic... È possibile che vengano visualizzati alcuni errori che è possibile ignorare.", - "starting_extract": "Estrazione dell'archivio scaricato, attendi pazientemente.", - - "troubleshoot_blacklist": "Applicando la lista nera di sicurezza...", - "troubleshoot_blacklist_fail": "ATTENZIONE: impossibile applicare la lista nera di sicurezza.", - - "success": "L'installazione è stata completata con successo. Ricorda di riavviare Steam!", -} \ No newline at end of file diff --git a/langs/pl.py b/langs/pl.py deleted file mode 100644 index 868b22f..0000000 --- a/langs/pl.py +++ /dev/null @@ -1,35 +0,0 @@ -pl = { - "running_background": "Wygląda na to, że ten proces działa w tle. Instalacja może przejść niepoprawnie, zatem proces ten zostanie przerwany.", - - "exception_line": "[italic magenta]----- Szczegóły wyjątków znajdują się powyżej tej linii -----", - "exception": "[bold red]:warning: Program został niespodziewanie zatrzymany. Prosimy zamieścić zrzut ekranu na Discordzie w sekcji #technical-issues (tylko po angielsku). :warning:[/bold red]", - "exit_safe": "[bold]Można bezpiecznie zamknąć to okno.", - "exit": "Wciśnij Enter by zakończyć.", - - "prompt_valid": {"yes": True, "y": True, "no": False, "tak": True, "t": True, "nie": False, "n": False}, # all possible choices (yes or no) - "prompt_prompt": {None: " {t/n}", "y": " {T/n}", "n": " {t/N}"}, # only replace the "{y/n}" parts. uppercase means "by default" - "prompt_invalid": "[bold blue]Prosimy odpowiedzieć poleceniem 'tak' lub 'nie' (albo 't' lub 'n').[/bold blue]", - - "setup_found": "Automatycznie znaleziono folder sourcemods w: %s", - "setup_found_question": "Jest to zalecane miejsce instalacji. Czy w tym miejscu ma zostać zainstalowany TF2 Classic?", - "setup_not_found": "UWAGA: Folder Steama \"sourcemods\" nie został znaleziony, lub zrezygnowano z jego użycia.", - "setup_not_found_question": "Czy rozpakować pliki w %s? Po wypakowaniu należy własnoręcznie przenieść całą zawartość do pliku sourcemods.", - "setup_input": "Proszę wprowadzić lokalizację, w której zostanie zainstalowane TF2 Classic.\n", - "setup_accept": "TF2 Classic zostanie zainstalowane w %s\nAkceptować?", - "setup_reset": "Ponowna incjalizacja...\n", - - "setup_missing_aria2": "Do uruchomienia tego skryptu wymagane jest zainstalowanie: Aria2.", - "setup_missing_zstd": "Do uruchomienia tego skryptu wymagane jest zainstalowanie: Zstd.", - - "free_space_download": "Brak wolnego miejsca do pobrania TF2 Classic. Wymagane jest minimum 4.5 GB na dysku głównym.", - "free_space_extract": "Brak wolnego miejsca do rozpakowania TF2 Classic. Wymagane jest minimum 12 GB w wybranym miejscu wydobycia.", - "location_doesnt_exist": "Określona lokalizacja rozpakowania nie istnieje.", - - "starting_download": "Rozpoczęcie pobierania gry TF2 Classic... W trakcie procesu pojawią się błędy, które możn zignorować.", - "starting_extract": "Rozpakowywanie pobranego archiwum, prosimy cierpliwie poczekać.", - - "troubleshoot_blacklist": "Stosowanie czarnej listy bezpieczeństwa...", - "troubleshoot_blacklist_fail": "UWAGA: Nie można zastosować czarnej listy bezpieczeństwa.", - - "success": "Instalacja przebiegła pomyślnie. Prosimy pamiętać o zrestartowaniu Steama!", -} \ No newline at end of file diff --git a/langs/ru.py b/langs/ru.py deleted file mode 100644 index ea1b855..0000000 --- a/langs/ru.py +++ /dev/null @@ -1,35 +0,0 @@ -ru = { - "running_background": "Похоже, что программа запущена в фоновом режиме. Выходим...", - - "exception_line": "[italic magenta]----- Детали об ошибке над этой линией -----", - "exception": "[bold red]:warning: Программа выдала ошибку. Отправьте снимок экрана в #technical-issues в Discord-сервере TF2C. :warning:[/bold red]", - "exit_safe": "[bold]Вы можете закрыть окно.", - "exit": "Нажмите Enter для выхода.", - - "prompt_valid": {"да": True, "д": True, "yes": True, "y": True, "нет": False, "н": False, "no": False, "n": False}, # all possible choices (yes or no) - "prompt_prompt": {None: " {д/н}", "y": " {Д/н}", "n": " {д/Н}"}, # only replace the "{y/n}" parts. uppercase means "by default" - "prompt_invalid": "[bold blue]Пожалуйста, ответьте 'да' или 'нет' (или 'д'/'н').[/bold blue]", - - "setup_found": "Папка sourcemods была найдена в: %s", - "setup_found_question": "Это рекомендуемое место установки. Вы хотите установить TF2 Classic туда?", - "setup_not_found": "Предупреждение: папка sourcemods не была найдена, или вы решили выбрать место установки самостоятельно.", - "setup_not_found_question": "Вы хотите распаковать игру в %s? Вам придётся переместить её в папку sourcemods вручную.", - "setup_input": "Пожалуйста, укажите место установки игры.\n", - "setup_accept": "TF2 Classic будет установлен в %s\nУстановить?", - "setup_reset": "Перезапуск...\n", - - "setup_missing_aria2": "Вам нужно установить Aria2 для использования этой программы.", - "setup_missing_zstd": "Вам нужно установить Zstd для использования этой программы.", - - "free_space_download": "У вас не хватает места для скачивания TF2 Classic. Необходимо минимум 4.5GB на вашем системном диске.", - "free_space_extract": "У вас не хватает места для распаковки TF2 Classic. Необходимо минимум 12GB на выбраном диске.", - "location_doesnt_exist": "Указаный путь не существует.", - - "starting_download": "Начинаем загрузку TF2 Classic... Вы можете увидеть ошибки, которые можно игнорировать.", - "starting_extract": "Начинаем распаковку архива, пожалуйста подождите.", - - "troubleshoot_blacklist": "Применяем безопасный чёрный список...", - "troubleshoot_blacklist_fail": "Предупреждение: чёрный список не был применён.", - - "success": "Установка успешно завершена. Не забудьте перезапустить Steam!", -} \ No newline at end of file diff --git a/locale/el/LC_MESSAGES/tf2c_downloader.mo b/locale/el/LC_MESSAGES/tf2c_downloader.mo new file mode 100644 index 0000000000000000000000000000000000000000..b16af4fcb391168c9758f46c4380e7e9c3dd1472 GIT binary patch literal 4827 zcmb`JU2Ggz6~`~Md>JUv^3e(&Za~(i;N95U22xvAnl>Mb)CQBd^y2|Ep1t-C*_~Nt zX5+4+3MXkukdmN^MvX+IB0(!E>_m>Ua@HU96Dm(L4~SQILE?=kc;N+p=gzD>jw4D% z$6Ehq?%aFsIsfxN=gyxWy#K1=dW7HC`2CgNAiw#K@Q>@sk7nZsz+F850DJHSO)(M4uR!QD1{0263A5b!yFB`n^;bQPcr`cCzW!*KY=sgcRr=m z&%rmrYv7&%r6#~XfF1CWPb*ade*qo`SHU~r1D{dq1o$2(>%aP0rQQL52g5py zx8PggeVA+m}W1@7hBtl zE!4yOFu8e=7KLeh5sJNppReTi(55hHuP^f-I_!n}cK?U+=ROFhP^7-ZPx2~0ky51& zv|5dh=g;WKnKp4pPcz3iG+>;=BAnb`3fk#?qnQ%1*iFVYRqH_V7b z$Bo56TsOKF%=(SMshOH~LbvXnGDEu6FivFjtmDPH<;0%x<3^{Vj>e_Pt_h7BG@Hhk zMV=qUPNTsr_G|>My{YKugLb2)J3*UGPqKZ`pQtAfSM}2kCyG2*jD=>udL{@?ig!$$ zHKow#uO{~EUDFI|k)943HSEtiWTqVlP55%*ufq%C(@s392P1VNcETMg zVoF$afqd&1VYumZbYu)PG>tZ47=)50Cnli`A`(mgj30!iqKfqI41q`oqk)5g&79+k zmiDVjWU?*Ib)1jdyp5viw)l=5&`fN|&vDZ<%_(6p&`=?9=o7JVn!Bu>Rv65LPE(7C zY4j;eCV~iGb>xP|_)$HGh4630#;yCpP1%d0wuv)%&Krc;JZfO^7G8@>88r-RjJkSd3L# z9X(RnJMcm|pAdwj)QYJgwrb@u9E{joY|?$@-M~bn9a1lcgRmKmYQJS4qw(q(9bMjx z@AmbsaXs?r*k*L2+B61Kay9*FvY4Jp){>26DY>D!Sxhf8u$-RN$!c;lJ(s@95D$yo zGMT|{a#M!n*hzkwbkjMeY_M{Hb={=L$XU&hHPKDpWz9`_lb*9f>0C0OtfxN{i*w0_ zziRd0|FER|HSPWmw5jAx zT{y|f#k|dukcZxG!NvlcEX$zAB63bI<)kfU39+8$;;{#Pa#7e}<-4M`yjWI|#>K2| zGADSkO&@adBh+==S`dx%-ipD>?6!ny1Hmu!4TG7&tqXuV1+(w<$maN(|VNFT~ z)?r~&v2gL5?Jm6^>mrC^^zxk{GPLenwV?GkibYZ=C|neYLafyJ87gs;W>FXf%t;Zz z_yth_<8eDHcsyv!P_r4SFYGT4z&yIuk; z)NAo8EejZ;ilsE*KE$kn8{L{La2&i|He$@&$DcTa=2ZiMy>< r!v^+<$a>DsJ_G&#k3aT1`9pQbr+JB(0M)Ui*b-Eyll48x#w+SSjC1$3 literal 0 HcmV?d00001 diff --git a/locale/el/LC_MESSAGES/tf2c_downloader.po b/locale/el/LC_MESSAGES/tf2c_downloader.po new file mode 100644 index 0000000..0f96670 --- /dev/null +++ b/locale/el/LC_MESSAGES/tf2c_downloader.po @@ -0,0 +1,166 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2022-08-02 18:36+0300\n" +"PO-Revision-Date: 2022-08-02 19:56+0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 2.3\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: el\n" + +# Possible agreeing answers for yes/no questions. Split by spaces. +#: gui.py:26 +msgid "yes y" +msgstr "y ναι ν" + +# Possible denying answers for yes/no questions. Split by spaces. +#: gui.py:27 +msgid "no n" +msgstr "n οχι ο" + +# Addition to yes/no questions. +#: gui.py:28 +msgid "{y/n}" +msgstr "{ν/ο}" + +#: gui.py:39 +msgid "Please respond with 'yes' or 'no' (or 'y' or 'n')." +msgstr "Παρακαλώ απαντήστε με 'ναι' ή 'οχι' (ή 'ν' ή 'ο')." + +#: gui.py:60 +msgid "The specified extraction location does not exist." +msgstr "Η καθορισμένη θέση αποσυμπίεσης δεν υπάρχει." + +#: gui.py:68 tf2c_downloader.py:59 +msgid "You are safe to close this window." +msgstr "Μπορείτε να κλείσετε το παράθυρο." + +#: gui.py:70 tf2c_downloader.py:61 +msgid "Press Enter to exit." +msgstr "Πατήστε Enter για έξοδο." + +#: install.py:25 +msgid "" +"You don't have enough free space to download TF2 Classic. A minimum of 4.5GB " +"on your primary drive is required." +msgstr "" +"Δέν έχετε αρκετό ελεύθερο χώρο για να κατεβάσετε το TF2 Classic. Απαιτείται " +"τουλάχιστον 4,5 GB στον κύριο δίσκο σας." + +#: install.py:27 +msgid "" +"You don't have enough free space to extract TF2 Classic. A minimum of 12GB " +"at your chosen extraction site is required." +msgstr "" +"Δέν έχετε αρκετό ελεύθερο χώρο για να αποσυμπιέσετε το TF2 Classic. " +"Απαιτείται τουλάχιστον 12 GB στην επιλεγμένη τοποθεσία αποσυμπίεσης." + +#: install.py:33 +msgid "" +"Starting the download for TF2 Classic... You may see some errors that are " +"safe to ignore." +msgstr "" +"Έναρξη της λήψης για το TF2 Classic... Ενδέχεται να δείτε ορισμένα σφάλματα " +"τα οποία μπορείτε να αγνοήσετε." + +#: install.py:42 +msgid "Extracting the downloaded archive, please wait patiently." +msgstr "Αποσυμπίεση του ληφθέντος αρχείου, παρακαλώ περιμένετε." + +# %s is directory. +#: setup.py:58 +msgid "Sourcemods folder was automatically found at: %s" +msgstr "Ο Sourcemods φάκελος βρέθηκε αυτόματα στην θέση: %s" + +#: setup.py:59 +msgid "" +"It's the recommended installation location. Would you like to install TF2 " +"Classic there?" +msgstr "" +"Είναι η συνιστώμενη θέση εγκατάστασης. Θέλετε να εγκαταστήσετε το TF2 " +"Classic εκεί;" + +#: setup.py:62 +#, fuzzy +msgid "WARNING: Steam's sourcemods folder has not been found." +msgstr "" +"ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Ο Sourcemods φάκελος του Steam δέν βρέθηκε, ή επιλέξατε να " +"μην το χρησιμοποιήσετε." + +# %s is directory. +#: setup.py:65 +msgid "" +"Would you like to extract in %s? You must move it to your sourcemods " +"manually." +msgstr "" +"Θέλετε να αποσυμπιέσετε στο %s; Θα πρέπει να το μετακινήσετε στον φάκελο " +"sourcemods χειροκίνητα." + +#: setup.py:68 +msgid "Please, enter the location in which TF2 Classic will be installed to.\n" +msgstr "" +"Παρακαλώ, εισαγάγετε τη θέση στην οποία θα εγκατασταθεί το TF2 Classic.\n" + +# %s is directory. +#: setup.py:69 +msgid "" +"TF2 Classic will be installed in %s\n" +"Do you accept?" +msgstr "" +"Το TF2 Classic θα εγκατασταθεί στην θέση %s\n" +"Δέχεστε;" + +#: setup.py:89 +msgid "You need to install Aria2 to use this script." +msgstr "" +"Θα χρειαστεί να εγκαταστήσετε το Aria2 για να χρησιμοποιήσετε αυτό το " +"πρόγραμμα." + +#: setup.py:93 +msgid "You need to install Zstd to use this script." +msgstr "" +"Θα χρειαστεί να εγκαταστήσετε το Zstd για να χρησιμοποιήσετε αυτό το " +"πρόγραμμα." + +#: tf2c_downloader.py:42 +msgid "" +"Looks like we're running in the background. We don't want that, so we're " +"exiting." +msgstr "" +"Απο ότι φαίνεται λειτουργούμε στο παρασκήνιο. Δέν το θέλουμε αυτό, οπότε " +"σταματάμε." + +#: tf2c_downloader.py:56 +msgid "Exception details above this line" +msgstr "Λεπτομέρειες της εξαίρεσης πάνω απο αυτήν την γραμμή" + +#: tf2c_downloader.py:57 +msgid "" +"The program has failed. Post a screenshot in #technical-issues on the " +"Discord." +msgstr "" +"Το πρόγραμμα απέτυχε. Στείλτε ένα στιγμιότυπο οθόνης στο #technical-issues " +"στο Discord (μόνο σε Αγγλικά)." + +#: tf2c_downloader.py:64 +msgid "The installation has successfully completed. Remember to restart Steam!" +msgstr "" +"Η εγκατάσταση ολοκληρώθηκε με επιτυχία. Μήν ξεχάσετε να επανεκκινήσετε το " +"Steam!" + +#: troubleshoot.py:7 +msgid "Applying safety blacklist..." +msgstr "Εφαρμογή μαύρης λίστας ασφαλείας..." + +#: troubleshoot.py:11 +msgid "WARNING: could not apply safety blacklist." +msgstr "WARNING: αδυναμία εφαρμογής μαύρης λίστας ασφαλείας." diff --git a/locale/en/LC_MESSAGES/tf2c_downloader.mo b/locale/en/LC_MESSAGES/tf2c_downloader.mo new file mode 100644 index 0000000000000000000000000000000000000000..dbf1502983c5f30ede8fb959754ea40367ce9813 GIT binary patch literal 3644 zcmeH}O>f*p7{>=FZ_9h3Kr0SUsG@CY>~6NSO1DH++9pw?w4`mI4Hq=AXLpC%GiGL- zt%djmNWcL;02jmoE}W5&IB?(scO)*HkU(5H0sqI|r5l1oKR_(a{%p_N^M77E`_sV# z9}8SZ&|X0M6>S#nt9$T+YvbPL{Z()V&jvgTehA(KzXPv=NADA&3zpyt_!;;N_&eAE z4;&C;3p@?-xDUWp@Eh<7*t%bcd2kCn1HK2o#Qh-m{|3GYzVd(&7JL)j0lx<$aOFWE z=D+}AN%0AYDdN*HKL?LN)0ZIY{PCei&mSP`Ir4C$XA@*SUw~}qUm)x0wi-PZ$a>xf zSGAz@Aly=4 z*j_+F9n0oT^UJ=4Ys9l?htS|wflv#vR1{gI&49e@t5DH)CX-v4_92dAv3xsGMbOqz zs)E#+C%J8R6osMolxd?dA~=}@ULXt=rFLX8D^rz{bjeWfs5vS!CB34N)PV{av@#*9 zVzCz5zMkV$V)I-Xo}`TrGRrUuduBGNZ(_P(%PghJme}+bwzrdkw7Jryi<$IZC%l+b z=f%3Ux7a!i9I3WbPo~Tf#41;BJ5j@CjD|WH?y`NPvy8UYL>F8U zY}^tX*wfQ;vxp_OC>Gak=@OOO)KlMPDb^oJM5YWjhrbf|uR;g(kqkYW_2PPvZcm6X z#7&!kc+(aH_2VbZ}_cffa#%Vp3g-8@k zGguE%KzWE8OV_TfU0Lll1|gaKp181GJYyTCG$EOqmefhj-I8l?Zvl$EX+O4$CC&Qt zO}t9z&ABR3UvLwu#7&!$OH*=6#Db$c9mFKFsLQ&RN7|rtn;}g>3?)`n#+HL2_2Ei5 zM<#XbCpEq+d1#4pZFFAdWc&1Te0uc)ySO%{a5|T+qSWDgK=^Vv^>(Qpf>oRJfBQ`| zPvu&?d%O8Ac0-2NyCp-YGSdB_r@{ph~<`oiy*FgzZ}@3DH^_y{??chpk7gjaQ>l-OHmd@w1UTztkx6aN zQ8JXytFZXm=1R11XPlG9_mzv5O=44g-g>mKtwU>78RcL}8eOP*R8#{Mc(J&sXg)sO zx*3fJSl2^|sT9f9jZeWqkG*+Ke6+c*wULz$Wwv5n?t5g4`q3|T&*328p2cH^W)^Aw m__=@7^^j<-{gY__Bx(-w{gY__B)Y4UVgDq;pT@gCiT(xyG*k!x literal 0 HcmV?d00001 diff --git a/locale/en/LC_MESSAGES/tf2c_downloader.po b/locale/en/LC_MESSAGES/tf2c_downloader.po new file mode 100644 index 0000000..42621f0 --- /dev/null +++ b/locale/en/LC_MESSAGES/tf2c_downloader.po @@ -0,0 +1,152 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2022-08-02 18:36+0300\n" +"PO-Revision-Date: 2022-08-02 18:39+0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 2.3\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: en\n" + +#: gui.py:26 +msgid "yes y" +msgstr "yes y" + +#: gui.py:27 +msgid "no n" +msgstr "no n" + +#: gui.py:28 +msgid "{y/n}" +msgstr "{y/n}" + +#: gui.py:39 +msgid "Please respond with 'yes' or 'no' (or 'y' or 'n')." +msgstr "Please respond with 'yes' or 'no' (or 'y' or 'n')." + +#: gui.py:60 +msgid "The specified extraction location does not exist." +msgstr "The specified extraction location does not exist." + +#: gui.py:68 tf2c_downloader.py:59 +msgid "You are safe to close this window." +msgstr "You are safe to close this window." + +#: gui.py:70 tf2c_downloader.py:61 +msgid "Press Enter to exit." +msgstr "Press Enter to exit." + +#: install.py:25 +msgid "" +"You don't have enough free space to download TF2 Classic. A minimum of 4.5GB " +"on your primary drive is required." +msgstr "" +"You don't have enough free space to download TF2 Classic. A minimum of 4.5GB " +"on your primary drive is required." + +#: install.py:27 +msgid "" +"You don't have enough free space to extract TF2 Classic. A minimum of 12GB " +"at your chosen extraction site is required." +msgstr "" +"You don't have enough free space to extract TF2 Classic. A minimum of 12GB " +"at your chosen extraction site is required." + +#: install.py:33 +msgid "" +"Starting the download for TF2 Classic... You may see some errors that are " +"safe to ignore." +msgstr "" +"Starting the download for TF2 Classic... You may see some errors that are " +"safe to ignore." + +#: install.py:42 +msgid "Extracting the downloaded archive, please wait patiently." +msgstr "Extracting the downloaded archive, please wait patiently." + +#: setup.py:58 +msgid "Sourcemods folder was automatically found at: %s" +msgstr "Sourcemods folder was automatically found at: %s" + +#: setup.py:59 +msgid "" +"It's the recommended installation location. Would you like to install TF2 " +"Classic there?" +msgstr "" +"It's the recommended installation location. Would you like to install TF2 " +"Classic there?" + +#: setup.py:62 +msgid "WARNING: Steam's sourcemods folder has not been found." +msgstr "WARNING: Steam's sourcemods folder has not been found." + +#: setup.py:65 +msgid "" +"Would you like to extract in %s? You must move it to your sourcemods " +"manually." +msgstr "" +"Would you like to extract in %s? You must move it to your sourcemods " +"manually." + +#: setup.py:68 +msgid "Please, enter the location in which TF2 Classic will be installed to.\n" +msgstr "" +"Please, enter the location in which TF2 Classic will be installed to.\n" + +#: setup.py:69 +msgid "" +"TF2 Classic will be installed in %s\n" +"Do you accept?" +msgstr "" +"TF2 Classic will be installed in %s\n" +"Do you accept?" + +#: setup.py:89 +msgid "You need to install Aria2 to use this script." +msgstr "You need to install Aria2 to use this script." + +#: setup.py:93 +msgid "You need to install Zstd to use this script." +msgstr "You need to install Zstd to use this script." + +#: tf2c_downloader.py:42 +msgid "" +"Looks like we're running in the background. We don't want that, so we're " +"exiting." +msgstr "" +"Looks like we're running in the background. We don't want that, so we're " +"exiting." + +#: tf2c_downloader.py:56 +msgid "Exception details above this line" +msgstr "Exception details above this line" + +#: tf2c_downloader.py:57 +msgid "" +"The program has failed. Post a screenshot in #technical-issues on the " +"Discord." +msgstr "" +"The program has failed. Post a screenshot in #technical-issues on the " +"Discord." + +#: tf2c_downloader.py:64 +msgid "The installation has successfully completed. Remember to restart Steam!" +msgstr "" +"The installation has successfully completed. Remember to restart Steam!" + +#: troubleshoot.py:7 +msgid "Applying safety blacklist..." +msgstr "Applying safety blacklist..." + +#: troubleshoot.py:11 +msgid "WARNING: could not apply safety blacklist." +msgstr "WARNING: could not apply safety blacklist." diff --git a/locale/es/LC_MESSAGES/tf2c_downloader.mo b/locale/es/LC_MESSAGES/tf2c_downloader.mo new file mode 100644 index 0000000000000000000000000000000000000000..d28ada3c76ad9ab4e06e1ac8cad6e5d0931e2741 GIT binary patch literal 3781 zcma);O^+N$8OJMN-iDVzc#k-giL7;kXS}m0WSFfz91rDfd~gAkSy)qxP&_rUjPs%?);wao_N;l03-GMyStux>Usb7 z-<~@4j^g(;*EhKS!F7h~Pfzg2Z|5WJ`&YozJbUmv;4i?}z(0epfX{qXsa3EBuYtb; zzXbjZTn0~_QtA$P5fr(fgV(`Ba2xD>OsN&{4)|^GXW(X#k<8a#_nzXQ+k{;!`@>OAI>by=#ii3{aSOU6k$|f?C!q`5}xLVISN;rT()o8f3blOsjqN-nTxP0Qmxc_Sr#+r z$2yrkTg~*SFxlP0rD`x3sLi)BTUIW3o!iQ|B55-U`&L&ImvrI0MWTu(t3*LHu{sY2 zz6d6_xi&GIxP5z0mxVRS>I35{U7E^SUlp@~+NzdPvnSdtOsCe%Cg)RSiUKLlEJD`Y z4D{_#7rCB=nnUk$e3%RB-D|7*YGG1xnJ9~PP2C9Lu2_fQfnADL$J%=_(D~-P5e|-H zsC|xNG1)IwSm!HNO?6JE(CxEtIdN>Dc3KajO=a-8K5*4UFU@RP(jn?4AC~l4xtVp( zOV7@?oYOdKV{`1>8!_Wx;`|YxWhW$T)hUbC`ZNiZ1pJxGW)m;5 z>ARF_n>6($1-s!=7GjPkJfzZQZqE^X+m-b~6;dc{^XMZBw1>LAesg|cfgo!SRi>6GCucagg zO0v6{#HB;*5rQPh9ES&d2m>%6(o3$->le%#6`r%|EJY1ss?{9*=^ zs~&T#w@s7HYf-O9XI3SE^*kt)kSj^F#O+b(*Ha}edQ#X2?G>{@&(zzq^Zv)QaQKnU zs{U5qf7QmsU>oY*&iDE^?Y@(z{)VaSP_HhpuJ)HN^_N$<9WKA{t>p{L%e@=Mk83lw z{atFFeJ^jly!lYg%3!&7H831})!&_!XsHO+`LZz1U)I^g#AK^0-`~B~zw}Tp8lU!T z>~H!krLwGgLisD0TyrYozLAp%*sa@On9SM9WuM= zbV5#VLp)5QaUET5a-pORh^Q!tFAIes%}kZd9lhr%?dV3$1{oB(IJ)nxX$fiuyD&YA zj+6qMQ)c4WEe!lYI`=e1+2dv0h8y(TvUefZ#p)nhu* z#H0IWE_iIdYRo>mzovF*K^p1Jn)X6|8WIB!(_0gLar7JV4#?I5C&ai5UKT$7IO zH@o+ny-Ye&xCrAg&iBlIi05Qd3Q-vpd%c7_#5CtAp4+E}r5^5~64=(nbirvFi71Gz zEOqY3qkG3%zhx;Z*>prz8uHdzbpsPPpe>YH%FkEv=)IP>j_wI_HL+)@VXZCZ zwQK7^vf3t0(!MwdAT2UghU7*?8`OQiHi-4O_7XASFN#GxC~J!r?S#4v0b5Y>h**c<-joNEfk>mU)N+aZXs9h3@#uKv?98 z@0^@HJN2k=Vqi@KGgDS{iMUzvNg^`D<1zfj%Z|JB*%S(@+moPiarAED^8C!3)o2lrHqt@);$+zVYhj&E3uIt6S?ssXM&H&Mr}yDy1+_<^tEDy`f}kj0Rw+ z=4j7pNzq*=6ASZ*Zr-E2tWjy2rjMffL%UubKG37Rym=?yy~t-^qjFc@9c z$EdjFzpkryqy}_GS&)}zOzhL{#$zE4%eN`2QcY}{Ss=54c9)4XYDPqpnYI#-HTOW@ z;yY7lO-4!W^_1!3rZQ+cGQ`-b*13FcPzKItt~AB}f9l-lg`)j$XEuz;k&Hap4+kDC zfx?a*#izEJMM%&x^X~45uxVn+o`i|^@3`, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2022-08-02 18:36+0300\n" +"PO-Revision-Date: 2022-08-02 20:07+0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 2.3\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" + +# Possible agreeing answers for yes/no questions. Split by spaces. +#: gui.py:26 +msgid "yes y" +msgstr "y si sí s" + +# Possible denying answers for yes/no questions. Split by spaces. +#: gui.py:27 +msgid "no n" +msgstr "no n" + +# Addition to yes/no questions. +#: gui.py:28 +msgid "{y/n}" +msgstr "{s/n}" + +#: gui.py:39 +msgid "Please respond with 'yes' or 'no' (or 'y' or 'n')." +msgstr "Por favor, responda con 'sí' o 'no' (o 's' o 'n')." + +#: gui.py:60 +msgid "The specified extraction location does not exist." +msgstr "La ubicación de extracción especificada no existe." + +#: gui.py:68 tf2c_downloader.py:59 +msgid "You are safe to close this window." +msgstr "Puede cerrar esta ventana." + +#: gui.py:70 tf2c_downloader.py:61 +msgid "Press Enter to exit." +msgstr "Presiona Enter para salir." + +#: install.py:25 +msgid "" +"You don't have enough free space to download TF2 Classic. A minimum of 4.5GB " +"on your primary drive is required." +msgstr "" +"No tienes suficiente espacio libre para descargar TF2 Classic. Se requiere " +"un mínimo de 4.5GB en tu disco principal." + +#: install.py:27 +msgid "" +"You don't have enough free space to extract TF2 Classic. A minimum of 12GB " +"at your chosen extraction site is required." +msgstr "" +"No tienes suficiente espacio libre para extraer TF2 Classic. Se requiere un " +"mínimo de 12GB en el sitio de extracción elegido." + +#: install.py:33 +msgid "" +"Starting the download for TF2 Classic... You may see some errors that are " +"safe to ignore." +msgstr "" +"Iniciando la descarga de TF2 Classic... Es posible que veas algunos errores " +"que puedes ignorar." + +#: install.py:42 +msgid "Extracting the downloaded archive, please wait patiently." +msgstr "Extrayendo el archivo descargado, espere pacientemente." + +# %s is directory. +#: setup.py:58 +msgid "Sourcemods folder was automatically found at: %s" +msgstr "La carpeta Sourcemods se encontró automáticamente en: %s" + +#: setup.py:59 +msgid "" +"It's the recommended installation location. Would you like to install TF2 " +"Classic there?" +msgstr "" +"Es la ubicación de instalación recomendada. ¿Le gustaría instalar TF2 " +"Classic allí?" + +#: setup.py:62 +msgid "WARNING: Steam's sourcemods folder has not been found." +msgstr "" +"ADVERTENCIA: No se ha encontrado la carpeta sourcemods de Steam o usted " +"decidió no usarla." + +# %s is directory. +#: setup.py:65 +msgid "" +"Would you like to extract in %s? You must move it to your sourcemods " +"manually." +msgstr "" +"¿Te gustaría extraer en %s? Debes moverlo a tus sourcemods manualmente." + +#: setup.py:68 +msgid "Please, enter the location in which TF2 Classic will be installed to.\n" +msgstr "Por favor, ingrese la ubicación en la que se instalará TF2 Classic.\n" + +# %s is directory. +#: setup.py:69 +msgid "" +"TF2 Classic will be installed in %s\n" +"Do you accept?" +msgstr "" +"TF2 Classic se instalará en %s\n" +"¿Aceptas?" + +#: setup.py:89 +msgid "You need to install Aria2 to use this script." +msgstr "Necesitas instalar Aria2 para usar este script." + +#: setup.py:93 +msgid "You need to install Zstd to use this script." +msgstr "Necesitas instalar Zstd para usar este script." + +#: tf2c_downloader.py:42 +msgid "" +"Looks like we're running in the background. We don't want that, so we're " +"exiting." +msgstr "" +"Parece que estamos corriendo en segundo plano. No queremos eso, así que " +"vamos a salir." + +#: tf2c_downloader.py:56 +msgid "Exception details above this line" +msgstr "Detalles de la excepción arriba de esta línea" + +#: tf2c_downloader.py:57 +msgid "" +"The program has failed. Post a screenshot in #technical-issues on the " +"Discord." +msgstr "" +"El programa ha fallado. Publique una captura de pantalla en #technical-" +"issues en Discord (solo en inglés)." + +#: tf2c_downloader.py:64 +msgid "The installation has successfully completed. Remember to restart Steam!" +msgstr "La instalación se completó con éxito. ¡Recuerda reiniciar Steam!" + +#: troubleshoot.py:7 +msgid "Applying safety blacklist..." +msgstr "Aplicando lista negra de seguridad..." + +#: troubleshoot.py:11 +msgid "WARNING: could not apply safety blacklist." +msgstr "ADVERTENCIA: no se pudo aplicar la lista negra de seguridad." diff --git a/locale/fr/LC_MESSAGES/tf2c_downloader.mo b/locale/fr/LC_MESSAGES/tf2c_downloader.mo new file mode 100644 index 0000000000000000000000000000000000000000..a90a16c81a3dbbc17c0e61e89024e7856a735215 GIT binary patch literal 3952 zcma);&2Jn@8O93;%QAc{EZ>Mjg_Si4>zTDD8 z`}AL*KlKyE=Zjol;`$rc64&qE#}}XN_c#CF0Z()9z*oQ@g0F*r1n+<^d_buISb>}1 zJK(3me}F6CsZ&Zl0MCQ6?g!v?@DJb?*!iGRtKb9htKj#*ugG&yp8p;EGWfM;l=9%W z!72DBum^5_NU3G81Tm?82C_x{yv1LEU1It*DC__7Y~$CnA6Duj_pgBWzzX~(_#XHo zxYSYV7I+8L;7`FuT8EzX1}CdY(%@Qa_HUKWtTB;9`mTME#Fa zlu3QE{f*1@NAmRf_BUx%pK5=94kSJG2e%ZV)U|B>X}%@5q)2_1>oZ*98>J>0MUl^} z8|j$rnsTOxd6GWNZ7lo!zS?**HAQK?)0rs~n@61t{nY4kY@^PtGpr~>l9pni92=ea zJ(v3=Gnr08I<`}@tc%jQa_m(C!4H`Ws>Kt;>_Hq z^^d-O%~yG*XTIXlhaB(c3-!+CKwr(17;P%Xf>~ELy?-d)v2f3HgVCXKP8_tZK5s~X zqu?u-VOU&t-4gFy$#OZ1f?#6dU8eVJIo92oiCyi3?mFMqXXMAM zz3-l#Z&}s^YeIeOJQ{IhZ*0@?5#RT0p6j8R$3-ei-|whx&Ww7aG2*p&)K~X>6;divcR7f29UTKoa>Do>a{3s+7Ehcv1r)=5w5npvogE20SeJKflp)~2( zNp5;J#>zwuzl5;YY)pN~h=iM1nAGlCl5bjCFR&1zu+3qQD$pM4waa(6Zfsp&YaD{i z@mO8NFWE7~m8K*M+tQlU@;H$mJl=rnIPF`%B&4Od-qfoi-idT2{Y9GSlCbE?Byp8c zqOYX7i$zRxPhZx(yk{M)+bn4sVw_;nIA4v%dY4p^oFuJlKkxA);~DM=*~n8z@%o(*HVd9`gd%`bUpj9dH^9txrqGMCBGM z7;SmNvCh;@Hs_+g9BeX>1XlB;Kp|UDXvy1?tG^LTY0=}0o!3q=8}v-QJ$uQ0mlpPK zn6&KO$a?ophzzzh-Pyj~yKAOa?t0gf(yZyh%3#o2xzJk~@N;c-^~IHQD=VFwi5peP z$n16<8@r)=Nd6Sa(sU<0M2=Ui$jZX79q|bs=$a z*M#1NOMS+8ThkYYw(MLt&ICNkdRJy^x|oejDaQK6Ot1FOcV6$c3w&6k#Y_g-2K{q5 z7&%*PGPLDcXFIO~ZMNydB(7;!)VJ}{;37gGPcEHt`c=Jp_Tpi1YY?nc3lR<4s*TPQ zMtG!f&f9?e=y77B`=U(O4)z;C%1E`D%alw(*3#iowxkjRW=0D_1u1!wcUyVV z*vqj@u0{v@sMXX|jAHYaNELatCiKZVF{Fj7a58h$=Qdrm5>~u!_6giFh z;1|iVh*&E97JY!QcMtYOs0e~4PIcE;7HO(PsvKI?MX>5S5vu$1cnLPJgD9E4v^t7R zq@>d$t~lZkeygX6KKLcePL2${;%%auVI?wyHZVv^ba4VwUX^Tu2$=ySw!G2$xWnn)d6E9(AO?J|1t1ih1rVvio_I(17?uQw#hj5xweL?r?u_US8W4d#&~dFrJVPN1_$u3?BsPU)}( zLNa(KY;OkBu5mT{+9l*h&XZVqpXFD^*r`P~w?pZE>7#{lg`I`5(h|S%IjM>N^746o z-Phx;Ho$D0YqYSTb>BvzZN?wyv`cM~, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2022-08-02 18:36+0300\n" +"PO-Revision-Date: 2022-08-02 20:11+0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 2.3\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Language: fr\n" + +# Possible agreeing answers for yes/no questions. Split by spaces. +#: gui.py:26 +msgid "yes y" +msgstr "y oui o" + +# Possible denying answers for yes/no questions. Split by spaces. +#: gui.py:27 +msgid "no n" +msgstr "non n" + +# Addition to yes/no questions. +#: gui.py:28 +msgid "{y/n}" +msgstr "{o/n}" + +#: gui.py:39 +msgid "Please respond with 'yes' or 'no' (or 'y' or 'n')." +msgstr "Répondez avec 'oui' ou 'non' ('o' ou 'n')." + +#: gui.py:60 +msgid "The specified extraction location does not exist." +msgstr "L'emplacement d'extraction spécifié n'existe pas." + +#: gui.py:68 tf2c_downloader.py:59 +msgid "You are safe to close this window." +msgstr "Vous pouvez fermer cette fenêtre." + +#: gui.py:70 tf2c_downloader.py:61 +msgid "Press Enter to exit." +msgstr "Appuyez sur Entrée pour sortir." + +#: install.py:25 +msgid "" +"You don't have enough free space to download TF2 Classic. A minimum of 4.5GB " +"on your primary drive is required." +msgstr "" +"Vous n'avez pas assez d'espace libre pour télécharger TF2 Classic. Vous " +"devez avoir 4,5 Go de libre au minimum sur votre disque dur principale." + +#: install.py:27 +msgid "" +"You don't have enough free space to extract TF2 Classic. A minimum of 12GB " +"at your chosen extraction site is required." +msgstr "" +"Vous n'avez pas assez d'espace libre pour extraire TF2 Classic. Vous devez " +"avoir 12 Go de libre au minimum sur l'emplacement d'installation." + +#: install.py:33 +msgid "" +"Starting the download for TF2 Classic... You may see some errors that are " +"safe to ignore." +msgstr "" +"Téléchargement de TF2 Classic... Vous pouvez voir certaines erreurs qui " +"peuvent être parfaitement ignorées." + +#: install.py:42 +msgid "Extracting the downloaded archive, please wait patiently." +msgstr "Extraction de l'archive téléchargée, veuillez patentier." + +# %s is directory. +#: setup.py:58 +msgid "Sourcemods folder was automatically found at: %s" +msgstr "Le dossier sourcemods a été automatiquement trouvé ici : %s" + +#: setup.py:59 +msgid "" +"It's the recommended installation location. Would you like to install TF2 " +"Classic there?" +msgstr "" +"C'est l'endroit d'installation recommendé. Voulez-vous installer TF2 Classic " +"ici ?" + +#: setup.py:62 +msgid "WARNING: Steam's sourcemods folder has not been found." +msgstr "" +"ATTENTION : Le dossier sourcemods de Steam n'a pas été trouvé, ou alors vous " +"avez choisi de ne pas l'utiliser." + +# %s is directory. +#: setup.py:65 +msgid "" +"Would you like to extract in %s? You must move it to your sourcemods " +"manually." +msgstr "" +"Voulez-vous l'extraire dans %s ? Vous devez ensuite le déplacer dans votre " +"dossier sourcemods manuellement." + +#: setup.py:68 +msgid "Please, enter the location in which TF2 Classic will be installed to.\n" +msgstr "" +"Veuillez entrez l'emplacement du dossier où va être installer TF2 Classic.\n" + +# %s is directory. +#: setup.py:69 +msgid "" +"TF2 Classic will be installed in %s\n" +"Do you accept?" +msgstr "" +"TF2 Classic va être installer ici : %s\n" +"Es-ce que vous acceptez ?" + +#: setup.py:89 +msgid "You need to install Aria2 to use this script." +msgstr "Vous devez installer Aria2 pour utiliser ce script." + +#: setup.py:93 +msgid "You need to install Zstd to use this script." +msgstr "Vous devez installer Zstd pour utiliser ce script." + +#: tf2c_downloader.py:42 +msgid "" +"Looks like we're running in the background. We don't want that, so we're " +"exiting." +msgstr "" +"On dirait qu'on est en train de tourner en arrière plan. On ne veut pas ça, " +"donc on sort." + +#: tf2c_downloader.py:56 +msgid "Exception details above this line" +msgstr "Détails des exceptions au dessus de cette ligne" + +#: tf2c_downloader.py:57 +msgid "" +"The program has failed. Post a screenshot in #technical-issues on the " +"Discord." +msgstr "" +"Le programme a échoué. Postez un screenshot dans #technical-issues sur le " +"Discord (en anglais seulement)." + +#: tf2c_downloader.py:64 +msgid "The installation has successfully completed. Remember to restart Steam!" +msgstr "L'installation est terminée. N'oubliez pas de redémarrer Steam !" + +#: troubleshoot.py:7 +msgid "Applying safety blacklist..." +msgstr "Application de la liste noir de sécurité..." + +#: troubleshoot.py:11 +msgid "WARNING: could not apply safety blacklist." +msgstr "ATTENTION : impossible d'appliquer la liste noir de sécurité." diff --git a/locale/hu/LC_MESSAGES/tf2c_downloader.mo b/locale/hu/LC_MESSAGES/tf2c_downloader.mo new file mode 100644 index 0000000000000000000000000000000000000000..241f3c0738f2ca3bb96762a753397678a7c8ffa9 GIT binary patch literal 3940 zcmbVO&yO5O6)uQ@F#HZ7K*Zsh$jky1J|0 z&+on0e|zT44+VbD(Tr0hu`k|r_Wyjp2gY#zYhE!@E-6Fz*m4TJSD^$ zumElWe-3;W_)p*p@XQ$@?gK9XdEa+|+rZxeZvk5$5MmX0ANV!kJHRjVdmz962k?u) zZ+uV)3;Y&v0{kPe1Kj$M5X-;-gh;Uu#1Zkc8U6ye1fPBdY~%S~pPtHl>cc`@!TL+U z9iRrj3H%Lk1NdA^h;IV#0a^Z!fo$jRfkWWGfb3uV5g{%Ee*pYG@XtW@Q+;%5?~j08 zte^gv5N`ml0{Q(2;9r2e|JhGW{dgG&lf|pE^_xIW(KERC_dG7B zXnr^y z9InscLRbY-ji8OkS*gu{yzHw`QZJM7DAPVfQ6x6siq$x1Yba4c>dceu*@>c%YEPLq z3Oj<6abN)<@K%Op@^*Gky`|Z)NbF8MaLSLZNoY@pl-i~8ZL*Hq z#=fPW-Im(F={CrEcHMcCpNO+dcsJ|djUlDtv~ zL#{|UXC0?W1|$>@L6Ro?17n?v#A5hQy8utm`PMbtWKPD+rFC%^G&zyx6vq1kZ@upq zY&+-x&IE=0+*Y~DdmKSa2nG8=cY>1n*+$OT*@2Tev4}qS$wzjrhppser|nqNzAm#LeO};NbW+{w8nl6-jkY+2 zS7tGTUWX^BHL5AHITvZeX}QJ$EapK0h4dJS=D0n+`wbtsL{D!vmW)7epi;bDzGS|G z61GDXhtBn+^O|xVjjc=-rL~o{wa&`L&dM5YyXRNGvT}Z9rFB!9 zK_LgKa~GV)xt;4fo5x~Sqm|ZGi{@ZL=WaQMlz?EpG|r?pmncr9^D10^_3l>Z;_*Hw zjqfYh*)*|D(B8Uqv8O|8TN&kGNz%Dec4=G=RA6DzxTMwSLhD{64rZ9^#jJ^s@WGE-n+YEJu=i~a_ z0FAn_CZanPrcE&QK|(f>M>~|!IJm&ojz!a}e=;Zudn=f*OsT~RUe)^n5?zm*LlFW3 zh?Y&Wre;G#n-xl1gM2y3k#xgigz;3>zn;hpg0lKxTt70SNW50>V+K|>8y>l&prWk@ z%Cu=B`5r>r9k@nI)3rW&!SiY(NhntXwu)noprv+#E_&?b<4!Glj7fE4YR-XARYj(> z`Al9ln_fK(IPkPQ{3R-C<79&xkLA($8Wmm|HYHP8)6=FSY$2dWxjpdpfkF1Ld8DcY zxlugCZmLvaj5k3>o`Z)y^#OuyN=kJPPe|sVuPKXxO+uqB%MKq@IOZ!hZc&*|6cj?n zoB|V+8K&B11{TW1ChIsbe+LuDPPq}LPF&e##`*U98JC7LuldlMB=;3 z`uV(T5<7vNhL+$Uc8>_H#%4vvWZ;luSkI14JpCEpehXpZe8ELzjNTd<@De)S+~-yxu|UZJEVdJDd@M<{V|OPd%;MkMhC&AYh#k~w{+ zT?_ literal 0 HcmV?d00001 diff --git a/locale/hu/LC_MESSAGES/tf2c_downloader.po b/locale/hu/LC_MESSAGES/tf2c_downloader.po new file mode 100644 index 0000000..01f2969 --- /dev/null +++ b/locale/hu/LC_MESSAGES/tf2c_downloader.po @@ -0,0 +1,157 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2022-08-02 18:36+0300\n" +"PO-Revision-Date: 2022-08-02 20:31+0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 2.3\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: hu\n" + +# Possible agreeing answers for yes/no questions. Split by spaces. +#: gui.py:26 +msgid "yes y" +msgstr "y igen i" + +# Possible denying answers for yes/no questions. Split by spaces. +#: gui.py:27 +msgid "no n" +msgstr "nem n" + +# Addition to yes/no questions. +#: gui.py:28 +msgid "{y/n}" +msgstr "{i/n}" + +#: gui.py:39 +msgid "Please respond with 'yes' or 'no' (or 'y' or 'n')." +msgstr "Válaszolj kérlek egy 'igen' vagy 'nem'-mel (vagy 'i' vagy 'n')." + +#: gui.py:60 +msgid "The specified extraction location does not exist." +msgstr "A meghatározott kicsomagolási hely nem létezik." + +#: gui.py:68 tf2c_downloader.py:59 +msgid "You are safe to close this window." +msgstr "Mostmár biztonságban bezárhatod ezt az ablakot." + +#: gui.py:70 tf2c_downloader.py:61 +msgid "Press Enter to exit." +msgstr "Kilépéshez nyomd meg az Enter billentyűt." + +#: install.py:25 +msgid "" +"You don't have enough free space to download TF2 Classic. A minimum of 4.5GB " +"on your primary drive is required." +msgstr "" +"Nincs elég tárhelyed, hogy letöltsd a TF2 Classic-ot. 4.5GB minimum tárhely " +"szükséges az elsődleges merevlemezeden." + +#: install.py:27 +msgid "" +"You don't have enough free space to extract TF2 Classic. A minimum of 12GB " +"at your chosen extraction site is required." +msgstr "" +"Nincs elég tárhelyed, hogy kicsomagold a TF2 Classic-ot. 12GB minimum " +"tárhely szükséges az általad választott kicsomagolási helyen." + +#: install.py:33 +msgid "" +"Starting the download for TF2 Classic... You may see some errors that are " +"safe to ignore." +msgstr "" +"TF2 Classic letöltésének megkezdése... Lehet, hogy látsz néhány hibát amit " +"nyugodtan mellőzhetsz." + +#: install.py:42 +msgid "Extracting the downloaded archive, please wait patiently." +msgstr "A letöltött archívum kicsomagolása, kérlek várj türelemmel." + +# %s is directory. +#: setup.py:58 +msgid "Sourcemods folder was automatically found at: %s" +msgstr "A sourcemods mappa automatikusan meglelve itt: %s" + +#: setup.py:59 +msgid "" +"It's the recommended installation location. Would you like to install TF2 " +"Classic there?" +msgstr "" +"Ez a javasolt telepítési hely. Szeretnéd oda telepíteni a TF2 Classic-ot?" + +#: setup.py:62 +msgid "WARNING: Steam's sourcemods folder has not been found." +msgstr "" +"FIGYELEM: Nem lett megtalálva a Steam sourcemods mappája, vagy te döntöttél " +"úgy, hogy nem használod azt." + +# %s is directory. +#: setup.py:65 +msgid "" +"Would you like to extract in %s? You must move it to your sourcemods " +"manually." +msgstr "" +"Szeretnéd ide kicsomagolni: %s? Sajátkezüleg kell majd betenned a sourcemods " +"mappádba." + +#: setup.py:68 +msgid "Please, enter the location in which TF2 Classic will be installed to.\n" +msgstr "Add meg a helyet ahova szeretnéd a TF2 Classic-ot telepíteni.\n" + +# %s is directory. +#: setup.py:69 +msgid "" +"TF2 Classic will be installed in %s\n" +"Do you accept?" +msgstr "" +"A TF2 Classic ide lesz telepítve: %s\n" +"Elfogadod?" + +#: setup.py:89 +msgid "You need to install Aria2 to use this script." +msgstr "Ehhez a script-hez a következőt kell telepítened: Aria2." + +#: setup.py:93 +msgid "You need to install Zstd to use this script." +msgstr "Ehhez a script-hez a következőt kell telepítened: Zstd." + +#: tf2c_downloader.py:42 +msgid "" +"Looks like we're running in the background. We don't want that, so we're " +"exiting." +msgstr "" +"Úgy néz ki, hogy a háttérben futtatod a programot. Ezt mi nem akarjuk, " +"szóval kilépünk." + +#: tf2c_downloader.py:56 +msgid "Exception details above this line" +msgstr "Kifogás részletei e sor fölött" + +#: tf2c_downloader.py:57 +msgid "" +"The program has failed. Post a screenshot in #technical-issues on the " +"Discord." +msgstr "" +"A program sikertelen. Készíts egy képernyőképet és küld el a #technical-" +"issues csatornába a hivatalos Discord szerveren (de csak angolul)." + +#: tf2c_downloader.py:64 +msgid "The installation has successfully completed. Remember to restart Steam!" +msgstr "A telepítés sikeres. Ne felejtsd újraindítani a Steam-et!" + +#: troubleshoot.py:7 +msgid "Applying safety blacklist..." +msgstr "Biztonsági feketelistára helyezés..." + +#: troubleshoot.py:11 +msgid "WARNING: could not apply safety blacklist." +msgstr "FIGYELEM: sikertelen biztonsági feketelistára helyezés." diff --git a/locale/it/LC_MESSAGES/tf2c_downloader.mo b/locale/it/LC_MESSAGES/tf2c_downloader.mo new file mode 100644 index 0000000000000000000000000000000000000000..025316389e7eaebb417fc627b347106a44af5593 GIT binary patch literal 3816 zcma);&5s;M8O94R0fvu2_(mMcL}qNVGud6+V8&S1CcAc4vez4XA#pCKrl)qMaCcRw zs(Lo#2ysP12rgU^96&kb#5pH?K}d)jmq2Vu z=FD#d*EhJo$^CEcbKLKIgdeW`kGB8644&oPg5L*!4ZaHg6?_?d_G3b9f(>{Bd<*;% z_+M}xJaa~f``~3T?fVsY6Z|u{2lhTL#0GdD{4V$l@H=T8OzZyvzXkr_DIpyAV{i`s z9UOo+J|V;!7(qme--8?xf9&vW@H{^KDIx#A`$-`#fM-4>#0VUMcR|zPJK!bWpY93q z61WY175pW51^fdT!S}%Dzy*gYpd2~WN-N8n1%W&2P2n`|IN;w#)=<|eFyR12|H*X6?4sSN5+ z$Aui1s(4VE5QoE|*mC{9| zr1Hhg%=MbAORa*IN6JK5t7x>1B0mh}E3PRg za^V`3K0v)&Zj=W%Hsy<@3c(afnAg|EE$1F2>)3dt`(8`mSepzqHtQSX;MBXuP7s_- zw*828HnOVXnhdTxr{6Hiv7y*+J@7iz&Q9c!i8I+>=+KwW%f5Aec|JWXy7&Ht<&ias zv)X61OK*}HM>A8*PS}2A%2JN?(l0_0-LNP2(HZ1UE5ylU(NNrTjW2ZNCP5y$a)SIL zMP{1lD&kcTzXc2UCsiEDb3xpT%AZORTl}gCibuqIkHUkqvql2Wr zQo(MUP&hxq6JA2C3v*})zV6C;r3xt&j#=c91=>TrvUPWFckkw?HHcykr}C2QN+-sc z(xznPSdoi5EvwXnryEe5F8j`|%ejz8Gc_5h_UccTLPqMN}|4-l2=apI;o>aH7i8d-UYb$1WWmhv8O#A?~R_7*L z)}q|@bH{hGHY5cXI-^LRLB4sK`XMHJ_6lQg!?xA(Pxyt*{iSAuqv<8TdJx zb8V-J#-pJab%rvDMyj%CtZ5mHm=N?wZ>^j&iNTnLCpj#r_c@#gZEuSji_!3H(O*(m zTNQ|;*l?)htoG3^`OLv!Ch&~!v(>)>E# z@3q}Kdpjffgj^yhJCV;FN1;pansjwdzv2@mTj&z`97rk}B3!DIDoph_orwx*%(ft( zGy|9bUAtvxJiBwAuG5EeG$M{Kh0^gYlen)fu|Pq`#<6@{k-5ts>*jm4p^5c!gdFmL zn}RhIsU4FqYCLA%Df^JRPV<5eHhi79T&3Mi;rwd7rfOx>%nYKS3)|9Uj>o07%M#)W zeDw4w)kv#Bm9{XoD#^l!QhFSK52COBFo, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2022-08-02 18:36+0300\n" +"PO-Revision-Date: 2022-08-02 20:35+0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 2.3\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: it\n" + +# Possible agreeing answers for yes/no questions. Split by spaces. +#: gui.py:26 +msgid "yes y" +msgstr "y si s" + +# Possible denying answers for yes/no questions. Split by spaces. +#: gui.py:27 +msgid "no n" +msgstr "no n" + +# Addition to yes/no questions. +#: gui.py:28 +msgid "{y/n}" +msgstr "{s/n}" + +#: gui.py:39 +msgid "Please respond with 'yes' or 'no' (or 'y' or 'n')." +msgstr "Per favore, rispondi con 'sì' o 'no' (o 's' o 'n')." + +#: gui.py:60 +msgid "The specified extraction location does not exist." +msgstr "Il percorso di estrazione specificato non esiste." + +#: gui.py:68 tf2c_downloader.py:59 +msgid "You are safe to close this window." +msgstr "È possibile chiudere questa finestra." + +#: gui.py:70 tf2c_downloader.py:61 +msgid "Press Enter to exit." +msgstr "Premi Enter per uscire." + +#: install.py:25 +msgid "" +"You don't have enough free space to download TF2 Classic. A minimum of 4.5GB " +"on your primary drive is required." +msgstr "" +"Non hai abbastanza spazio libero per scaricare TF2 Classic. È richiesto un " +"minimo di 4,5 GB sull'unità principale." + +#: install.py:27 +msgid "" +"You don't have enough free space to extract TF2 Classic. A minimum of 12GB " +"at your chosen extraction site is required." +msgstr "" +"Non hai abbastanza spazio libero per estrarre TF2 Classic. È richiesto un " +"minimo di 12 GB nel sito di estrazione scelto." + +#: install.py:33 +msgid "" +"Starting the download for TF2 Classic... You may see some errors that are " +"safe to ignore." +msgstr "" +"Avvio del download per TF2 Classic... È possibile che vengano visualizzati " +"alcuni errori che è possibile ignorare." + +#: install.py:42 +msgid "Extracting the downloaded archive, please wait patiently." +msgstr "Estrazione dell'archivio scaricato, attendi pazientemente." + +# %s is directory. +#: setup.py:58 +msgid "Sourcemods folder was automatically found at: %s" +msgstr "La cartella sourcemods fu trovata automaticamente in: %s" + +#: setup.py:59 +msgid "" +"It's the recommended installation location. Would you like to install TF2 " +"Classic there?" +msgstr "" +"È la posizione di installazione consigliata. Desideri installare TF2 Classic " +"lì?" + +#: setup.py:62 +msgid "WARNING: Steam's sourcemods folder has not been found." +msgstr "" +"ATTENZIONE: La cartella sourcemods di Steam non è stata trovata, oppure hai " +"scelto di non usarla." + +# %s is directory. +#: setup.py:65 +msgid "" +"Would you like to extract in %s? You must move it to your sourcemods " +"manually." +msgstr "" +"Desideri estrarre in %s? Devi spostarlo manualmente sui tuoi sourcemods." + +#: setup.py:68 +msgid "Please, enter the location in which TF2 Classic will be installed to.\n" +msgstr "" +"Per favore, inserire la posizione in cui verrà installato TF2 Classic.\n" + +# %s is directory. +#: setup.py:69 +msgid "" +"TF2 Classic will be installed in %s\n" +"Do you accept?" +msgstr "" +"TF2 Classic sarà installato in %s\n" +"Accetti?" + +#: setup.py:89 +msgid "You need to install Aria2 to use this script." +msgstr "Hai bisogno di installare Aria2 per usare questo script." + +#: setup.py:93 +msgid "You need to install Zstd to use this script." +msgstr "Hai bisogno di installare Zstd per usare questo script." + +#: tf2c_downloader.py:42 +msgid "" +"Looks like we're running in the background. We don't want that, so we're " +"exiting." +msgstr "" +"Sembra che stiamo lavorando in background. Non lo vogliamo, quindi stiamo " +"uscendo." + +#: tf2c_downloader.py:56 +msgid "Exception details above this line" +msgstr "Dettagli dell'eccezione sopra questa riga" + +#: tf2c_downloader.py:57 +msgid "" +"The program has failed. Post a screenshot in #technical-issues on the " +"Discord." +msgstr "" +"Il programma ha fallito. Posta uno screenshot su #technical-issues nel " +"Discord (in inglese soltanto)." + +#: tf2c_downloader.py:64 +msgid "The installation has successfully completed. Remember to restart Steam!" +msgstr "" +"L'installazione è stata completata con successo. Ricorda di riavviare Steam!" + +#: troubleshoot.py:7 +msgid "Applying safety blacklist..." +msgstr "Applicando la lista nera di sicurezza..." + +#: troubleshoot.py:11 +msgid "WARNING: could not apply safety blacklist." +msgstr "ATTENZIONE: impossibile applicare la lista nera di sicurezza." diff --git a/locale/pl/LC_MESSAGES/tf2c_downloader.mo b/locale/pl/LC_MESSAGES/tf2c_downloader.mo new file mode 100644 index 0000000000000000000000000000000000000000..bcea86f2859571f1a1c8c7354c4e19e866cd5c6a GIT binary patch literal 4034 zcmbtWON<;x87{!QhIa@AP=v~kHtWSZo!POC%-EaF`mx3+b~g5gjgbY^bl1+*baz!# zRqalzyT!0!Saa<;($0{PRJ4x-nnq$%84r%5J#?jfA!3I%qD=uNIhRas{a4` z-}RSgj{J<__a$7<jO*R z7VwwAXMz6!_JBu@Fm@Ao8c6GY47?2d1MnKK^FhYefH#3(1^x*575WaO?|%m#1D^X3 zV+Qyg;BDZafL-9$hZ$Q1dLTryp98Ul{bGi{0t(pl8{i4NfA*t{odLcAd<9qoZvlS? zyaRl$!`MaOPl4OOKLfuET=`gQ&)0!Do@?MK;9r5n^ZAd1J1_;3J^uuf+?7v&JMafU z;{6!71RQ*lv2O#v3rvB(2W|pSe5&P@1IdnG13{hrcJ}-TNFjO#7yT%HP!)aGv#~~MeNdBu`IkYnkUi=l{qek=C7L zW62X!>CA{kCS2HftZvIyUSv`@$t$5eFN9Z8`>c-G6~FAl9xG#$=Tg%qrJWa9hE>p+ znK;};eAkp&!fR7PX$tjbzL4*1_4$QNIHzI~X5|KZ)tHpnVPPegt>m`Ung}W#^bKL) z$eL0o5KNTyvIjfu@m2U$?#yhTd`ppG5!-Gpu+kMqC%jUA%$IBFmbtNfS({~koNnsb z^YY4k%PNPl(gwA2YlucQR`K{L?v=_iK9qC2;0kY|4%>!K$1k-)3@1hryJ1Qj%iJW6 z@0l!t{7N7)r8hbJ6~liuKEOUM{D3bxcEbyMC`4Fd7bzg#{3bk{i<&zr;f7ptX|1so zCgBlKyhM@&_m8x(GGdGFKWqXlU2>g^CPYreluH|I2Wj$Dn8zURN_=&0uO#kB2jq;G zh|hJI%X~;4G#suVJNOMRMSe8MDXbY;k#iEUhy0{1+s1(_cd?aHyRq@)@E5#{$C`Z8 zRnC>tapV^z>_z2bV-r|{2Uo~g?I}24&eD1z3y~<;rXdeeKzXp;&Fj~$T)RAI2_c!? zp|}t)+A#!`HY5w%;*iwzSx^lgEi*Z5P(!#8=Zw93nzn>~Ii zI(_*(xj2w1tjdM0d1BEII68-w-z$|xumYw3rf+WZLas$mt6S?s8!|L#i^s4^FGkQQ z|1N5^3`I82MZRg3=#vA>xl@orsz9L0Z~wmfTh3F79$u^s*9^UZ*X&OHlKwtQ*i2;X zyH}F#H>GuGYy;leeyw|5-d6O~y(qjK@P4n~@Al4gdwtvvPOY8jo$U2GuL?aX#YlE{ zkn`Ag^~%*tPsFT6z0L)L=AeCdr!FAH!&xsCnNa#HkH^9~>DS-b+3KEovd#+a_N47z z(y>X<-Uj^4Q2EYfsig&zq+5TLgZDT-FRk@nUhnf4UktbB)=$yx zaeCc5x7O!xza8H9US2!3f-P&<(qB1y;1&?gI%sdk88mPudE5xAf+pIH29Kl152tr)Ue%NRdp>>qu;PstlcdBWcWVDWFHBWWA3=@}vb0j{x@iiL z;(e>AFhdwEN2Z-~RheVZS>sfW{-vZXGF5?3VW2J*`#+4>H_*N)V;Ygk7+X;nK?HWTOUc%HvHCXHZavEO?!G6_YqwfH$;q)ae|M~*cLkzrsyumnJ5kGg8NIXpNLA$vuilL zyMI5aS7!!=7{IlPW-5#)dJ7WY%iM})>t;$rHEh~o3t^@3fZ~XPUYNX|KFDAvhT|+& zg~*ZTA*+y)v&l+%rOI}kiK7(PFkFMXr*|neaQ>n2wk3e%uuYBeQa_Q~K(3rVh$(!H zZAuKw6n;Yg6!TGw{fMQLDH8r&=JIi0XQ=^cj@GAS=F$?!sn=2qv6+FGCs`r5ofTz> z1O*ah518O&^2YAw<;?-#Y7a=^%pmx!V^89G>lj(odKcCmqyXYVsS2kwH6j9A;UPYu zQZJ{E>R5>b;n%RA3J9zk^uf@DVEBJ-LX2wsfH+kOj;abSp@F`Qvu7RpOb7*~C3Nx% zadgNIWM9Zv3NOfqij7g($gD, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2022-08-02 18:36+0300\n" +"PO-Revision-Date: 2022-08-02 20:41+0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 2.3\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 " +"|| n%100>14) ? 1 : 2);\n" +"Language: pl\n" + +# Possible agreeing answers for yes/no questions. Split by spaces. +#: gui.py:26 +msgid "yes y" +msgstr "y tak t" + +# Possible denying answers for yes/no questions. Split by spaces. +#: gui.py:27 +msgid "no n" +msgstr "nie n" + +# Addition to yes/no questions. +#: gui.py:28 +msgid "{y/n}" +msgstr "{t/n}" + +#: gui.py:39 +msgid "Please respond with 'yes' or 'no' (or 'y' or 'n')." +msgstr "Prosimy odpowiedzieć poleceniem 'tak' lub 'nie' (albo 't' lub 'n')." + +#: gui.py:60 +msgid "The specified extraction location does not exist." +msgstr "Określona lokalizacja rozpakowania nie istnieje." + +#: gui.py:68 tf2c_downloader.py:59 +msgid "You are safe to close this window." +msgstr "Można bezpiecznie zamknąć to okno." + +#: gui.py:70 tf2c_downloader.py:61 +msgid "Press Enter to exit." +msgstr "Wciśnij Enter by zakończyć." + +#: install.py:25 +msgid "" +"You don't have enough free space to download TF2 Classic. A minimum of 4.5GB " +"on your primary drive is required." +msgstr "" +"Brak wolnego miejsca do pobrania TF2 Classic. Wymagane jest minimum 4.5 GB " +"na dysku głównym." + +#: install.py:27 +msgid "" +"You don't have enough free space to extract TF2 Classic. A minimum of 12GB " +"at your chosen extraction site is required." +msgstr "" +"Brak wolnego miejsca do rozpakowania TF2 Classic. Wymagane jest minimum 12 " +"GB w wybranym miejscu wydobycia." + +#: install.py:33 +msgid "" +"Starting the download for TF2 Classic... You may see some errors that are " +"safe to ignore." +msgstr "" +"Rozpoczęcie pobierania gry TF2 Classic... W trakcie procesu pojawią się " +"błędy, które możn zignorować." + +#: install.py:42 +msgid "Extracting the downloaded archive, please wait patiently." +msgstr "Rozpakowywanie pobranego archiwum, prosimy cierpliwie poczekać." + +# %s is directory. +#: setup.py:58 +msgid "Sourcemods folder was automatically found at: %s" +msgstr "Automatycznie znaleziono folder sourcemods w: %s" + +#: setup.py:59 +msgid "" +"It's the recommended installation location. Would you like to install TF2 " +"Classic there?" +msgstr "" +"Jest to zalecane miejsce instalacji. Czy w tym miejscu ma zostać " +"zainstalowany TF2 Classic?" + +#: setup.py:62 +msgid "WARNING: Steam's sourcemods folder has not been found." +msgstr "" +"UWAGA: Folder Steama \\\"sourcemods\\\" nie został znaleziony, lub " +"zrezygnowano z jego użycia." + +# %s is directory. +#: setup.py:65 +msgid "" +"Would you like to extract in %s? You must move it to your sourcemods " +"manually." +msgstr "" +"Czy rozpakować pliki w %s? Po wypakowaniu należy własnoręcznie przenieść " +"całą zawartość do pliku sourcemods." + +#: setup.py:68 +msgid "Please, enter the location in which TF2 Classic will be installed to.\n" +msgstr "" +"Proszę wprowadzić lokalizację, w której zostanie zainstalowane TF2 Classic.\n" + +# %s is directory. +#: setup.py:69 +msgid "" +"TF2 Classic will be installed in %s\n" +"Do you accept?" +msgstr "" +"TF2 Classic zostanie zainstalowane w %s\n" +"Akceptować?" + +#: setup.py:89 +msgid "You need to install Aria2 to use this script." +msgstr "Do uruchomienia tego skryptu wymagane jest zainstalowanie: Aria2." + +#: setup.py:93 +msgid "You need to install Zstd to use this script." +msgstr "Do uruchomienia tego skryptu wymagane jest zainstalowanie: Zstd." + +#: tf2c_downloader.py:42 +msgid "" +"Looks like we're running in the background. We don't want that, so we're " +"exiting." +msgstr "" +"Wygląda na to, że ten proces działa w tle. Instalacja może przejść " +"niepoprawnie, zatem proces ten zostanie przerwany." + +#: tf2c_downloader.py:56 +msgid "Exception details above this line" +msgstr "Szczegóły wyjątków znajdują się powyżej tej linii" + +#: tf2c_downloader.py:57 +msgid "" +"The program has failed. Post a screenshot in #technical-issues on the " +"Discord." +msgstr "" +"Program został niespodziewanie zatrzymany. Prosimy zamieścić zrzut ekranu na " +"Discordzie w sekcji #technical-issues (tylko po angielsku)." + +#: tf2c_downloader.py:64 +msgid "The installation has successfully completed. Remember to restart Steam!" +msgstr "" +"Instalacja przebiegła pomyślnie. Prosimy pamiętać o zrestartowaniu Steama!" + +#: troubleshoot.py:7 +msgid "Applying safety blacklist..." +msgstr "Stosowanie czarnej listy bezpieczeństwa..." + +#: troubleshoot.py:11 +msgid "WARNING: could not apply safety blacklist." +msgstr "UWAGA: Nie można zastosować czarnej listy bezpieczeństwa." diff --git a/locale/ru/LC_MESSAGES/tf2c_downloader.mo b/locale/ru/LC_MESSAGES/tf2c_downloader.mo new file mode 100644 index 0000000000000000000000000000000000000000..e726123aa4ee4af18aa428c2a4234e0496e26205 GIT binary patch literal 4503 zcmbuB-)|gO6~`}-^20!Z@*DNxhAQ0#yqonVfz*j>rTL{uO>h&JHWd;Y&t7{c*`2%0 z%*I)@k&>Dypaeqr@qk1?5D6hfCEIvg$8j8qM_!ou2Y7&25aN|5KIhJCvi7z_6)Vkt zXYP-4zUQ3pxif!#V%yIYzb|n;$@LGe9bD`05Fp|ghckl$ydq1kwPH+L-1HK9V1pFI#3_SlarCQ(ycmo{$c)o5Ol>Gb~d z{V=V*$c0IT8TX@1iY@L(NbVjBi^l z6UwF_j1#ZfWEDP})^|4*{j%*e>$+<@I6a4Z+h3@skJj{|rWeP7FUBG>sa~-5oUmiz zyeUOSN1ZSff=^qY(NO!~|hpnre=Zlsm z)ig5MROSZc;|{ZNJlhfO$N|kHhWeZ`Ez_Ej3|dVpBo2K#F`?{UL%n?P)XC!~kB#Sq5OX|K7vUv4W}uRnWMG@`L@m>v^x$vgsyLd7wEtBJ-V25K$~g z=~4drF%M|1vf15O4R0vadGi}Y6%JM~4w83p8yeSSeJ$#PQQ*}ift`L*kWkR3(2}>U zt6z;1Y0=@uq1B<{Y|vfxT6b4?kruXRjh~c{*UR5DQOvl}IGdf!Ztj7&8<5gl{XMy+^Uhi&&5Pwd{$nJzOE&xAY1suL4q`st^&+*Y?wjE(6@ zUDYh-`MHT&f9k-*9=UZpst3ku`t{fIEzgbZ*~ykMw$yg+C$t#iLWsA3jYvvA*zz=e z&+{wgVy@|8<=%0dJ=p>HTyuyUg&l^p4K1 zW;a<`JX~gOmAQ>{OWg6N^jxisvB5z?(rgSan9zAbU9ti7BoYbvMa1wP8UZtlN;$<;xAiB?_`(7cRsk{ zCRQN#M%sheo8nSqvgeGsFw+%w5hzRH#*j0>s)gJV)STONwW8A>XV)~2H?ZSuZe7J- zc73p`H3JLjO1d~nZrR6PsP;xBgTf`f51Wnjj}j)%*M<4p+}_9i_n}3ubh@mw@3JT- zvO!H;1aA>PbaPhDFoCA)t^&B)ni29Ow3nqe*>&!Ex+KI(nq5+<5)PQ-P5fYBrL>Dt zc^M1&VT**e23eRmd;c?g;)XD@YrK=C%IsP%_T?{U$lT3t5N&p?h-T6GB^lyn@IX$N zP~lxkjcDl(JNub(FY6%@xs;0Y1@1&Zg9jlmZC6+5xZ1c-Sh);g47-XB2zZr5qC{40 zNHn=*NwHz7X7butlEK2lCS0IVeJzM81T;NiET#+3Y5gyDY6FqL6_5r&?ZH25-vNe&qDS zz;_p=yF?bRlHi5xhXt!mz2W3SA?Z_>c}gq7W9ey# zy5pX0A{0muwx-i9(ph?Vyh)RBZph+voeHlPUrG$fNr^cTJxAnatcji_de}*RqHA*k2Vm0jt*i|W5~ Cuk~U8 literal 0 HcmV?d00001 diff --git a/locale/ru/LC_MESSAGES/tf2c_downloader.po b/locale/ru/LC_MESSAGES/tf2c_downloader.po new file mode 100644 index 0000000..16e9c30 --- /dev/null +++ b/locale/ru/LC_MESSAGES/tf2c_downloader.po @@ -0,0 +1,160 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-08-02 14:40+0300\n" +"PO-Revision-Date: 2022-08-02 19:57+0300\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Last-Translator: \n" +"Language-Team: \n" +"X-Generator: Poedit 2.3\n" + +# Possible agreeing answers for yes/no questions. +# Split by spaces. +#: gui.py:26 +msgid "yes y" +msgstr "y да д" + +# Possible denying answers for yes/no questions. +# Split by spaces. +#: gui.py:27 +msgid "no n" +msgstr "n нет н" + +# Addition to yes/no questions. +#: gui.py:28 +msgid "{y/n}" +msgstr "{д/н}" + +#: gui.py:39 +msgid "Please respond with 'yes' or 'no' (or 'y' or 'n')." +msgstr "Пожалуйста, ответьте 'да' или 'нет' (или 'д'/'н')." + +#: gui.py:60 +msgid "The specified extraction location does not exist." +msgstr "Указаный путь не существует." + +#: gui.py:68 tf2c_downloader.py:59 +msgid "You are safe to close this window." +msgstr "Вы можете закрыть окно." + +#: gui.py:70 tf2c_downloader.py:61 +msgid "Press Enter to exit." +msgstr "Нажмите Enter для выхода." + +#: install.py:25 +msgid "" +"You don't have enough free space to download TF2 Classic. A minimum of 4.5GB " +"on your primary drive is required." +msgstr "" +"У вас не хватает места для скачивания TF2 Classic. Необходимо минимум 4.5GB " +"на вашем системном диске." + +#: install.py:27 +msgid "" +"You don't have enough free space to extract TF2 Classic. A minimum of 12GB " +"at your chosen extraction site is required." +msgstr "" +"У вас не хватает места для распаковки TF2 Classic. Необходимо минимум 12GB " +"на выбраном диске." + +#: install.py:33 +msgid "" +"Starting the download for TF2 Classic... You may see some errors that are " +"safe to ignore." +msgstr "" +"Начинаем загрузку TF2 Classic... Вы можете увидеть ошибки, которые можно " +"игнорировать." + +#: install.py:42 +msgid "Extracting the downloaded archive, please wait patiently." +msgstr "Начинаем распаковку архива, пожалуйста подождите." + +# %s is directory. +#: setup.py:58 +#, python-format +msgid "Sourcemods folder was automatically found at: %s" +msgstr "Папка sourcemods была найдена в: %s" + +#: setup.py:59 +msgid "" +"It's the recommended installation location. Would you like to install TF2 " +"Classic there?" +msgstr "" +"Это рекомендуемое место установки. Вы хотите установить TF2 Classic туда?" + +#: setup.py:62 +msgid "WARNING: Steam's sourcemods folder has not been found." +msgstr "Предупреждение: папка sourcemods не была найдена." + +# %s is directory. +#: setup.py:65 +#, python-format +msgid "" +"Would you like to extract in %s? You must move it to your sourcemods " +"manually." +msgstr "" +"Вы хотите распаковать игру в %s? Вам придётся переместить её в папку " +"sourcemods вручную." + +#: setup.py:68 +msgid "Please, enter the location in which TF2 Classic will be installed to.\n" +msgstr "Пожалуйста, укажите место установки игры.\n" + +# %s is directory. +#: setup.py:69 +#, python-format +msgid "" +"TF2 Classic will be installed in %s\n" +"Do you accept?" +msgstr "" +"TF2 Classic будет установлен в %s\n" +"Установить?" + +#: setup.py:89 +msgid "You need to install Aria2 to use this script." +msgstr "Вам нужно установить Aria2 для использования этой программы." + +#: setup.py:93 +msgid "You need to install Zstd to use this script." +msgstr "Вам нужно установить Zstd для использования этой программы." + +#: tf2c_downloader.py:42 +msgid "" +"Looks like we're running in the background. We don't want that, so we're " +"exiting." +msgstr "Похоже, что программа запущена в фоновом режиме. Выходим..." + +#: tf2c_downloader.py:56 +msgid "Exception details above this line" +msgstr "Детали об ошибке над этой линией" + +#: tf2c_downloader.py:57 +msgid "" +"The program has failed. Post a screenshot in #technical-issues on the " +"Discord." +msgstr "" +"Программа выдала ошибку. Отправьте снимок экрана в #technical-issues в " +"Discord-сервере TF2C." + +#: tf2c_downloader.py:64 +msgid "The installation has successfully completed. Remember to restart Steam!" +msgstr "Установка успешно завершена. Не забудьте перезапустить Steam!" + +#: troubleshoot.py:7 +msgid "Applying safety blacklist..." +msgstr "Применяем безопасный чёрный список..." + +#: troubleshoot.py:11 +msgid "WARNING: could not apply safety blacklist." +msgstr "Предупреждение: чёрный список не был применён." diff --git a/messages.pot b/messages.pot new file mode 100644 index 0000000..bc0707e --- /dev/null +++ b/messages.pot @@ -0,0 +1,125 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2022-08-02 18:36+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + +# Possible agreeing answers for yes/no questions. Split by spaces. +#: gui.py:26 +msgid "yes y" +msgstr "" + +# Possible denying answers for yes/no questions. Split by spaces. +#: gui.py:27 +msgid "no n" +msgstr "" + +# Addition to yes/no questions. +#: gui.py:28 +msgid "{y/n}" +msgstr "" + +#: gui.py:39 +msgid "Please respond with 'yes' or 'no' (or 'y' or 'n')." +msgstr "" + +#: gui.py:60 +msgid "The specified extraction location does not exist." +msgstr "" + +#: gui.py:68 tf2c_downloader.py:59 +msgid "You are safe to close this window." +msgstr "" + +#: gui.py:70 tf2c_downloader.py:61 +msgid "Press Enter to exit." +msgstr "" + +#: install.py:25 +msgid "You don't have enough free space to download TF2 Classic. A minimum of 4.5GB on your primary drive is required." +msgstr "" + +#: install.py:27 +msgid "You don't have enough free space to extract TF2 Classic. A minimum of 12GB at your chosen extraction site is required." +msgstr "" + +#: install.py:33 +msgid "Starting the download for TF2 Classic... You may see some errors that are safe to ignore." +msgstr "" + +#: install.py:42 +msgid "Extracting the downloaded archive, please wait patiently." +msgstr "" + +# %s is directory. +#: setup.py:58 +msgid "Sourcemods folder was automatically found at: %s" +msgstr "" + +#: setup.py:59 +msgid "It's the recommended installation location. Would you like to install TF2 Classic there?" +msgstr "" + +#: setup.py:62 +msgid "WARNING: Steam's sourcemods folder has not been found." +msgstr "" + +# %s is directory. +#: setup.py:65 +msgid "Would you like to extract in %s? You must move it to your sourcemods manually." +msgstr "" + +#: setup.py:68 +msgid "" +"Please, enter the location in which TF2 Classic will be installed to.\n" +msgstr "" + +# %s is directory. +#: setup.py:69 +msgid "" +"TF2 Classic will be installed in %s\n" +"Do you accept?" +msgstr "" + +#: setup.py:89 +msgid "You need to install Aria2 to use this script." +msgstr "" + +#: setup.py:93 +msgid "You need to install Zstd to use this script." +msgstr "" + +#: tf2c_downloader.py:42 +msgid "Looks like we're running in the background. We don't want that, so we're exiting." +msgstr "" + +#: tf2c_downloader.py:56 +msgid "Exception details above this line" +msgstr "" + +#: tf2c_downloader.py:57 +msgid "The program has failed. Post a screenshot in #technical-issues on the Discord." +msgstr "" + +#: tf2c_downloader.py:64 +msgid "The installation has successfully completed. Remember to restart Steam!" +msgstr "" + +#: troubleshoot.py:7 +msgid "Applying safety blacklist..." +msgstr "" + +#: troubleshoot.py:11 +msgid "WARNING: could not apply safety blacklist." +msgstr "" + diff --git a/setup.py b/setup.py index 5a8c28c..e082beb 100644 --- a/setup.py +++ b/setup.py @@ -6,17 +6,16 @@ depending on their platform, etc. """ import sys +import gettext from os import environ, getcwd, path from platform import system from shutil import which from rich import print -from lang import lang import gui import vars if system() == 'Windows': import winreg - REGISTRY = 0 REGISTRY_KEY = 0 @@ -67,7 +66,7 @@ def setup_path(): else: vars.INSTALL_PATH = gui.message_dir(_("Please, enter the location in which TF2 Classic will be installed to.\n")) while not gui.message_yes_no(_("TF2 Classic will be installed in %s\nDo you accept?") % vars.INSTALL_PATH): - vars.INSTALL_PATH = gui.message_dir() + vars.INSTALL_PATH = gui.message_dir(_("Please, enter the location in which TF2 Classic will be installed to.\n")) def setup_binaries(): """ diff --git a/tf2c_downloader.py b/tf2c_downloader.py index 88e826e..4c91d83 100644 --- a/tf2c_downloader.py +++ b/tf2c_downloader.py @@ -6,12 +6,12 @@ import os import signal import traceback +import gettext from platform import system from shutil import which from subprocess import run from sys import argv, exit, stdin from rich import print -from lang import lang import gui import install import setup @@ -31,6 +31,10 @@ kernel32 = ctypes.windll.kernel32 kernel32.SetConsoleMode(kernel32.GetStdHandle(-10), (0x4|0x80|0x20|0x2|0x10|0x1|0x00|0x100)) +# Setting up gettext localization system +lang = gettext.translation('tf2c_downloader', './locale') +lang.install() + def sanity_check(): """ This is mainly for Linux, because it's easy to launch it by double-clicking it, which would diff --git a/troubleshoot.py b/troubleshoot.py index fe06bca..0c7a455 100644 --- a/troubleshoot.py +++ b/troubleshoot.py @@ -1,4 +1,3 @@ -from lang import lang import vars import gui import urllib.request @@ -8,4 +7,4 @@ def apply_blacklist(): try: urllib.request.urlretrieve("https://wiki.tf2classic.com/serverlist/blacklist.php", vars.INSTALL_PATH + "/tf2classic/cfg/server_blacklist.txt") except: - gui.message(_("WARNING: could not apply safety blacklist.")) \ No newline at end of file + gui.message(_("WARNING: could not apply safety blacklist.")) From 604e621345d05b6678bc32e7386fd68975450116 Mon Sep 17 00:00:00 2001 From: Alex-1000 Date: Tue, 2 Aug 2022 20:54:50 +0300 Subject: [PATCH 13/14] Fixing naming issues (main file name, and so the .spec file name changed from TF2CDownloader to tf2c_downloader) --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index f9a81d4..5486839 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -TF2CDownloader.spec +tf2c_downloader.spec build dist __pycache__ From 2d66293ab1fee62d61686fbf30d59d3351e8d8fa Mon Sep 17 00:00:00 2001 From: Alex <64156241+Alex-1000@users.noreply.github.com> Date: Tue, 2 Aug 2022 21:06:20 +0300 Subject: [PATCH 14/14] Removing old code --- tf2c_downloader.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tf2c_downloader.py b/tf2c_downloader.py index 4c91d83..b11208e 100644 --- a/tf2c_downloader.py +++ b/tf2c_downloader.py @@ -4,7 +4,6 @@ """ import ctypes import os -import signal import traceback import gettext from platform import system