Compare commits

...

14 Commits
v1.4.0 ... main

Author SHA1 Message Date
690a14b77c
(l10n) Update Italian and Spanish Translations
These translations were written by the typical contributors, they just are not being submitted via a pull request and I entered them in manually instead.
2025-06-24 13:00:09 -04:00
草莓蛋糕
07f7392ed1
(l10n) Update Norwegian Translations (#37) 2025-06-18 16:04:23 -04:00
DDinghoya
24a8b2b0bc
(l10n) Update Korean Translations (#36) 2025-06-12 13:36:43 -04:00
63800eac77
(l10n) Minor fix for translation source files 2025-06-05 09:05:51 -04:00
Gloria Goertz
a8dfcd3fe1
(l10n) Update German Translations (#35) 2025-06-05 08:59:37 -04:00
rougets
5ac3f4d385
(l10n) Update French Translations (#34) 2025-06-05 08:59:07 -04:00
N•I•L
b7e6929405
Updated Romanian Translations (#33) 2025-06-05 08:58:19 -04:00
dd189f31b1
Updated config to use Application Support on macOS
NUSGet will now also create .config if it doesn't exist on Linux, though I really can't see that ever happening.
2025-06-05 08:50:51 -04:00
27680626fa
Update translation files 2025-05-31 00:19:12 -04:00
cffa8f79ff
Fix background of theme options QMenu 2025-05-27 21:08:24 -04:00
109e3dc25a
Allow setting theme color theme from the menu bar
This functions essentially the same as the language selector. The language selector now also checks the currently set option on launch, and both the language and theme selectors spawn a popup prompting the user to restart NUSGet after selecting a new value.
2025-05-27 14:44:48 -04:00
db6dc65791
Work in progress language selection support
Still need to add a popup telling you that NUSGet needs to be restarted after changing the language, and having it load the selected language in the selection menu so that it's checked on launch.
2025-05-26 21:50:04 -04:00
e8d6a19d03
Disable debug line that was setting progress bar to busy on launch 2025-05-25 01:02:57 -04:00
811e2ef01f
Added progress bar to show download progress 2025-05-25 00:58:55 -04:00
21 changed files with 1516 additions and 667 deletions

137
NUSGet.py
View File

@ -22,21 +22,23 @@ import sys
import webbrowser
from importlib.metadata import version
from PySide6.QtGui import QIcon
from PySide6.QtGui import QActionGroup, QIcon
from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox, QFileDialog, QListView
from PySide6.QtCore import QRunnable, Slot, QThreadPool, Signal, QObject, QLibraryInfo, QTranslator, QLocale
from PySide6.QtCore import QRunnable, Slot, QThreadPool, Signal, QObject, QLibraryInfo
from qt.py.ui_AboutDialog import AboutNUSGet
from qt.py.ui_MainMenu import Ui_MainWindow
from modules.config import *
from modules.core import *
from modules.theme import is_dark_theme
from modules.language import *
from modules.theme import *
from modules.tree import NUSGetTreeModel, TIDFilterProxyModel
from modules.download_batch import run_nus_download_batch
from modules.download_wii import run_nus_download_wii
from modules.download_dsi import run_nus_download_dsi
nusget_version = "1.4.0"
nusget_version = "1.4.1"
regions = {"World": ["41"], "USA/NTSC": ["45"], "Europe/PAL": ["50"], "Japan": ["4A"], "Korea": ["4B"], "China": ["43"],
"Australia/NZ": ["55"]}
@ -45,7 +47,7 @@ regions = {"World": ["41"], "USA/NTSC": ["45"], "Europe/PAL": ["50"], "Japan": [
# Signals needed for the worker used for threading the downloads.
class WorkerSignals(QObject):
result = Signal(object)
progress = Signal(str)
progress = Signal(int, int, str)
# Worker class used to thread the downloads.
@ -81,9 +83,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.ui.download_btn.clicked.connect(self.download_btn_pressed)
self.ui.script_btn.clicked.connect(self.script_btn_pressed)
self.ui.custom_out_dir_btn.clicked.connect(self.choose_output_dir)
# About and About Qt Buttons
self.ui.actionAbout.triggered.connect(self.about_nusget)
self.ui.actionAbout_Qt.triggered.connect(lambda: QMessageBox.aboutQt(self))
self.ui.pack_archive_checkbox.toggled.connect(
lambda: connect_is_enabled_to_checkbox([self.ui.archive_file_entry], self.ui.pack_archive_checkbox))
self.ui.custom_out_dir_checkbox.toggled.connect(
@ -126,19 +125,65 @@ class MainWindow(QMainWindow, Ui_MainWindow):
dropdown_delegate = ComboBoxItemDelegate()
self.ui.console_select_dropdown.setItemDelegate(dropdown_delegate)
self.ui.console_select_dropdown.currentIndexChanged.connect(self.selected_console_changed)
# Fix the annoying background on the help menu items.
self.ui.menuHelp.setWindowFlags(self.ui.menuHelp.windowFlags() | Qt.FramelessWindowHint)
self.ui.menuHelp.setWindowFlags(self.ui.menuHelp.windowFlags() | Qt.NoDropShadowWindowHint)
self.ui.menuHelp.setAttribute(Qt.WA_TranslucentBackground)
# ------------
# Options Menu
# ------------
# Fix the annoying background on the option menu items and submenus.
fixup_qmenu_background(self.ui.menu_options)
fixup_qmenu_background(self.ui.menu_options_language)
fixup_qmenu_background(self.ui.menu_options_theme)
# Build a QActionGroup so that the language options function like radio buttons, because selecting multiple
# languages at once makes no sense.
language_group = QActionGroup(self)
language_group.setExclusive(True)
current_language = ""
try:
current_language = config_data["language"]
except KeyError:
pass
for action in self.ui.menu_options_language.actions():
language_group.addAction(action)
if current_language != "":
if LANGS[current_language] == action.text():
action.setChecked(True)
# There is no language set, so check the system language option.
if current_language == "":
self.ui.action_language_system.setChecked(True)
language_group.triggered.connect(lambda lang=action: self.change_language(lang.text()))
# Another QActionGroup used for the theme selector.
theme_group = QActionGroup(self)
theme_group.setExclusive(True)
for action in self.ui.menu_options_theme.actions():
theme_group.addAction(action)
self.ui.action_theme_system.triggered.connect(lambda: self.change_theme("system"))
self.ui.action_theme_light.triggered.connect(lambda: self.change_theme("light"))
self.ui.action_theme_dark.triggered.connect(lambda: self.change_theme("dark"))
try:
match config_data["theme"]:
case "light":
self.ui.action_theme_light.setChecked(True)
case "dark":
self.ui.action_theme_dark.setChecked(True)
case _:
self.ui.action_theme_system.setChecked(True)
except KeyError:
self.ui.action_theme_system.setChecked(True)
# ---------
# Help Menu
# ---------
# Same fix for help menu items.
fixup_qmenu_background(self.ui.menu_help)
self.ui.action_about.triggered.connect(self.about_nusget)
self.ui.action_about_qt.triggered.connect(lambda: QMessageBox.aboutQt(self))
# Save some light/dark theme values for later, including the appropriately colored info icon.
if is_dark_theme():
if is_dark_theme(config_data):
bg_color = "#2b2b2b"
icon = QIcon(os.path.join(os.path.dirname(__file__), "resources", "information_white.svg"))
else:
bg_color = "#e3e3e3"
icon = QIcon(os.path.join(os.path.dirname(__file__), "resources", "information_black.svg"))
self.ui.actionAbout.setIcon(icon)
self.ui.actionAbout_Qt.setIcon(icon)
self.ui.action_about.setIcon(icon)
self.ui.action_about_qt.setIcon(icon)
# Title tree loading code. Now powered by Models:tm:
wii_model = NUSGetTreeModel(wii_database, root_name="Wii Titles")
vwii_model = NUSGetTreeModel(vwii_database, root_name="vWii Titles")
@ -230,6 +275,18 @@ class MainWindow(QMainWindow, Ui_MainWindow):
return
self.ui.patch_ios_checkbox.setEnabled(False)
def download_progress_update(self, done, total, log_text):
if done == 0 and total == 0:
self.ui.progress_bar.setRange(0, 0)
elif done == -1 and total == -1:
pass
else:
self.ui.progress_bar.setRange(0, total)
self.ui.progress_bar.setValue(done)
# Pass the text on to the log text updater, if it was provided.
if log_text:
self.update_log_text(log_text)
def update_log_text(self, new_text):
# This method primarily exists to be the handler for the progress signal emitted by the worker thread.
self.log_text += new_text + "\n"
@ -385,7 +442,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.ui.pack_vwii_mode_checkbox.isChecked(), self.ui.patch_ios_checkbox.isChecked(),
self.ui.archive_file_entry.text())
worker.signals.result.connect(self.check_download_result)
worker.signals.progress.connect(self.update_log_text)
worker.signals.progress.connect(self.download_progress_update)
self.threadpool.start(worker)
def check_download_result(self, result):
@ -552,7 +609,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.ui.use_wiiu_nus_checkbox.isChecked(), self.ui.use_local_checkbox.isChecked(),
self.ui.pack_vwii_mode_checkbox.isChecked(), self.ui.patch_ios_checkbox.isChecked())
worker.signals.result.connect(self.check_batch_result)
worker.signals.progress.connect(self.update_log_text)
worker.signals.progress.connect(self.download_progress_update)
self.threadpool.start(worker)
def choose_output_dir(self):
@ -595,6 +652,26 @@ class MainWindow(QMainWindow, Ui_MainWindow):
about_box = AboutNUSGet([nusget_version, version("libWiiPy"), version("libTWLPy")])
about_box.exec()
def change_language(self, new_lang):
set_language(config_data, new_lang)
msg_box = QMessageBox()
msg_box.setIcon(QMessageBox.Icon.Warning)
msg_box.setStandardButtons(QMessageBox.StandardButton.Ok)
msg_box.setDefaultButton(QMessageBox.StandardButton.Ok)
msg_box.setWindowTitle(app.translate("MainWindow", "Restart Required"))
msg_box.setText(app.translate("MainWindow", "NUSGet must be restarted for the selected language to take effect."))
msg_box.exec()
def change_theme(self, new_theme):
set_theme(config_data, new_theme)
msg_box = QMessageBox()
msg_box.setIcon(QMessageBox.Icon.Warning)
msg_box.setStandardButtons(QMessageBox.StandardButton.Ok)
msg_box.setDefaultButton(QMessageBox.StandardButton.Ok)
msg_box.setWindowTitle(app.translate("MainWindow", "Restart Required"))
msg_box.setText(app.translate("MainWindow", "NUSGet must be restarted for the selected theme to take effect."))
msg_box.exec()
if __name__ == "__main__":
app = QApplication(sys.argv)
@ -657,16 +734,10 @@ if __name__ == "__main__":
# NUSGet look nice and pretty.
app.setStyle("fusion")
theme_sheet = "style_dark.qss"
try:
# Check for an environment variable overriding the theme. This is mostly for theme testing but would also allow
# you to force a theme.
if os.environ["THEME"].lower() == "light":
theme_sheet = "style_light.qss"
except KeyError:
if is_dark_theme():
theme_sheet = "style_dark.qss"
else:
theme_sheet = "style_light.qss"
if is_dark_theme(config_data):
theme_sheet = "style_dark.qss"
else:
theme_sheet = "style_light.qss"
stylesheet = open(os.path.join(os.path.dirname(__file__), "resources", theme_sheet)).read()
image_path_prefix = pathlib.Path(os.path.join(os.path.dirname(__file__), "resources")).resolve().as_posix()
stylesheet = stylesheet.replace("{IMAGE_PREFIX}", image_path_prefix)
@ -677,16 +748,10 @@ if __name__ == "__main__":
translator = QTranslator(app)
if translator.load(QLocale.system(), 'qtbase', '_', path):
app.installTranslator(translator)
translator = QTranslator(app)
# Get the translation path, and call get_language() to find the appropriate translations to load based on the
# settings and system language.
path = os.path.join(os.path.dirname(__file__), "resources", "translations")
# Unix-likes and Windows handle this differently, apparently. Unix-likes will try `nusget_xx_XX.qm` and then fall
# back on just `nusget_xx.qm` if the region-specific translation for the language can't be found. On Windows, no
# such fallback exists, and so this code manually implements that fallback, since for languages like Spanish NUSGet
# doesn't use region-specific translations.
locale = QLocale.system()
if not translator.load(QLocale.system(), 'nusget', '_', path):
base_locale = QLocale(locale.language())
translator.load(base_locale, 'nusget', '_', path)
translator = get_language(QTranslator(app), config_data, path)
app.installTranslator(translator)
window = MainWindow()

32
modules/config.py Normal file
View File

@ -0,0 +1,32 @@
# "modules/config.py", licensed under the MIT license
# Copyright 2024-2025 NinjaCheetah & Contributors
import os
import json
import pathlib
import platform
def get_config_file() -> pathlib.Path:
if platform.system() == "Windows":
config_dir = pathlib.Path(os.environ.get('APPDATA'), "NUSGet")
elif platform.system() == "Darwin":
config_dir = pathlib.Path(os.environ['HOME'], "Library", "Application Support", "NUSGet")
else:
if os.environ.get('XDG_CONFIG_HOME'):
config_dir = pathlib.Path(os.environ.get('XDG_CONFIG_HOME'), "NUSGet")
else:
config_dir = pathlib.Path(os.environ['HOME'], ".config", "NUSGet")
config_dir.mkdir(exist_ok=True, parents=True)
return config_dir.joinpath("config.json")
def save_config(config_data: dict) -> None:
config_file = get_config_file()
print(f"writing data: {config_data}")
open(config_file, "w").write(json.dumps(config_data, indent=4))
def update_setting(config_data: dict, setting: str, value: any) -> None:
config_data[setting] = value
save_config(config_data)

View File

@ -1,15 +1,12 @@
# "modules/core.py", licensed under the MIT license
# Copyright 2024-2025 NinjaCheetah & Contributors
import os
import json
import pathlib
import requests
from dataclasses import dataclass
from typing import List
from PySide6.QtCore import Qt, QSize
from PySide6.QtWidgets import QStyledItemDelegate, QSizePolicy
from PySide6.QtWidgets import QStyledItemDelegate
# This is required to make the dropdown look correct with the custom styling. A little fuzzy on the why, but it has to
@ -63,6 +60,13 @@ def connect_is_enabled_to_checkbox(items, chkbox):
item.setEnabled(False)
def fixup_qmenu_background(menu):
# These fixes are required to not have a square background poking out from behind the rounded corners of a QMenu.
menu.setWindowFlags(menu.windowFlags() | Qt.FramelessWindowHint)
menu.setWindowFlags(menu.windowFlags() | Qt.NoDropShadowWindowHint)
menu.setAttribute(Qt.WA_TranslucentBackground)
def check_nusget_updates(app, current_version: str, progress_callback=None) -> str | None:
# Simple function to make a request to the GitHub API and then check if the latest available version is newer.
gh_api_request = requests.get(url="https://api.github.com/repos/NinjaCheetah/NUSGet/releases/latest", stream=True)
@ -81,25 +85,3 @@ def check_nusget_updates(app, current_version: str, progress_callback=None) -> s
return new_version
progress_callback.emit(app.translate("MainWindow", "\n\nYou're running the latest release of NUSGet."))
return None
def get_config_file() -> pathlib.Path:
config_dir = pathlib.Path(os.path.join(
os.environ.get('APPDATA') or
os.environ.get('XDG_CONFIG_HOME') or
os.path.join(os.environ['HOME'], '.config'),
"NUSGet"
))
config_dir.mkdir(exist_ok=True)
return config_dir.joinpath("config.json")
def save_config(config_data: dict) -> None:
config_file = get_config_file()
print(f"writing data: {config_data}")
open(config_file, "w").write(json.dumps(config_data))
def update_setting(config_data: dict, setting: str, value: any) -> None:
config_data[setting] = value
save_config(config_data)

View File

@ -53,5 +53,5 @@ def run_nus_download_batch(out_folder: pathlib.Path, titles: List[BatchTitleData
# failed title.
result = 1
failed_titles.append(title.tid)
progress_callback.emit(f"Batch download finished.")
progress_callback.emit(0, 1, f"Batch download finished.")
return BatchResults(result, warning_titles, failed_titles)

View File

@ -29,10 +29,10 @@ def run_nus_download_dsi(out_folder: pathlib.Path, tid: str, version: str, pack_
title_dir.mkdir(exist_ok=True)
# Announce the title being downloaded, and the version if applicable.
if title_version is not None:
progress_callback.emit(f"Downloading title {tid} v{title_version}, please wait...")
progress_callback.emit(0, 0, f"Downloading title {tid} v{title_version}, please wait...")
else:
progress_callback.emit(f"Downloading title {tid} vLatest, please wait...")
progress_callback.emit(" - Downloading and parsing TMD...")
progress_callback.emit(0, 0, f"Downloading title {tid} vLatest, please wait...")
progress_callback.emit(-1, -1, " - Downloading and parsing TMD...")
# Download a specific TMD version if a version was specified, otherwise just download the latest TMD.
try:
if title_version is not None:
@ -50,17 +50,17 @@ def run_nus_download_dsi(out_folder: pathlib.Path, tid: str, version: str, pack_
version_dir.joinpath(f"tmd.{title_version}").write_bytes(title.tmd.dump())
# Use a local ticket, if one exists and "use local files" is enabled.
if use_local_chkbox and version_dir.joinpath("tik").exists():
progress_callback.emit(" - Parsing local copy of Ticket...")
progress_callback.emit(-1, -1, " - Parsing local copy of Ticket...")
title.load_ticket(version_dir.joinpath("tik").read_bytes())
else:
progress_callback.emit(" - Downloading and parsing Ticket...")
progress_callback.emit(-1, -1, " - Downloading and parsing Ticket...")
try:
title.load_ticket(libTWLPy.download_ticket(tid))
version_dir.joinpath("tik").write_bytes(title.ticket.dump())
except ValueError:
# If libTWLPy returns an error, then no ticket is available. Log this, and disable options requiring a
# ticket so that they aren't attempted later.
progress_callback.emit(" - No Ticket is available!")
progress_callback.emit(-1, -1, " - No Ticket is available!")
pack_tad_enabled = False
decrypt_contents_enabled = False
# Load the content record from the TMD, and download the content it lists. DSi titles only have one content.
@ -68,13 +68,13 @@ def run_nus_download_dsi(out_folder: pathlib.Path, tid: str, version: str, pack_
content_file_name = f"{title.tmd.content_record.content_id:08X}"
# Check for a local copy of the current content if "use local files" is enabled, and use it.
if use_local_chkbox and version_dir.joinpath(content_file_name).exists():
progress_callback.emit(" - Using local copy of content")
progress_callback.emit(-1, -1, " - Using local copy of content")
content = version_dir.joinpath(content_file_name).read_bytes()
else:
progress_callback.emit(f" - Downloading content (Content ID: {title.tmd.content_record.content_id}, Size: "
progress_callback.emit(-1, -1, f" - Downloading content (Content ID: {title.tmd.content_record.content_id}, Size: "
f"{title.tmd.content_record.content_size} bytes)...")
content = libTWLPy.download_content(tid, title.tmd.content_record.content_id)
progress_callback.emit(" - Done!")
progress_callback.emit(-1, -1, " - Done!")
# If keep encrypted contents is on, write out the content after its downloaded.
if keep_enc_chkbox is True:
version_dir.joinpath(content_file_name).write_bytes(content)
@ -82,7 +82,7 @@ def run_nus_download_dsi(out_folder: pathlib.Path, tid: str, version: str, pack_
# If decrypt local contents is still true, decrypt the content and write out the decrypted file.
if decrypt_contents_enabled is True:
try:
progress_callback.emit(f" - Decrypting content (Content ID: {title.tmd.content_record.content_id})...")
progress_callback.emit(-1, -1, f" - Decrypting content (Content ID: {title.tmd.content_record.content_id})...")
dec_content = title.get_content()
content_file_name = f"{title.tmd.content_record.content_id:08X}.app"
version_dir.joinpath(content_file_name).write_bytes(dec_content)
@ -93,10 +93,10 @@ def run_nus_download_dsi(out_folder: pathlib.Path, tid: str, version: str, pack_
# If pack TAD is still true, pack the TMD, ticket, and content into a TAD.
if pack_tad_enabled is True:
# Get the TAD certificate chain, courtesy of libTWLPy.
progress_callback.emit(" - Building certificate...")
progress_callback.emit(-1, -1, " - Building certificate...")
title.tad.set_cert_data(libTWLPy.download_cert())
# Use a typed TAD name if there is one, and auto generate one based on the TID and version if there isn't.
progress_callback.emit("Packing TAD...")
progress_callback.emit(-1, -1, "Packing TAD...")
if tad_file_name != "" and tad_file_name is not None:
# Batch downloads may insert -vLatest, so if it did we can fill in the real number now.
tad_file_name = tad_file_name.replace("-vLatest", f"-v{title_version}")
@ -110,7 +110,7 @@ def run_nus_download_dsi(out_folder: pathlib.Path, tid: str, version: str, pack_
tad_file_name = tad_file_name.translate({ord(c): None for c in '/\\:*"?<>|'})
# Have libTWLPy dump the TAD, and write that data out.
version_dir.joinpath(tad_file_name).write_bytes(title.dump_tad())
progress_callback.emit("Download complete!")
progress_callback.emit(0, 1, "Download complete!")
# This is where the variables come in. If the state of these variables doesn't match the user's choice by this
# point, it means that they enabled decryption or TAD packing for a title that doesn't have a ticket. Return
# code 1 so that a warning popup is shown informing them of this.

View File

@ -9,6 +9,8 @@ import libWiiPy
def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_wad_chkbox: bool, keep_enc_chkbox: bool,
decrypt_contents_chkbox: bool, wiiu_nus_chkbox: bool, use_local_chkbox: bool,
repack_vwii_chkbox: bool, patch_ios: bool, wad_file_name: str, progress_callback=None):
def progress_update(done, total):
progress_callback.emit(done, total, None)
# Actual NUS download function that runs in a separate thread.
# Immediately knock out any invalidly formatted Title IDs.
if len(tid) != 16:
@ -31,16 +33,16 @@ def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_
title_dir.mkdir(exist_ok=True)
# Announce the title being downloaded, and the version if applicable.
if title_version is not None:
progress_callback.emit(f"Downloading title {tid} v{title_version}, please wait...")
progress_callback.emit(0, 0, f"Downloading title {tid} v{title_version}, please wait...")
else:
progress_callback.emit(f"Downloading title {tid} vLatest, please wait...")
progress_callback.emit(" - Downloading and parsing TMD...")
progress_callback.emit(-1, -1, f"Downloading title {tid} vLatest, please wait...")
progress_callback.emit(-1, -1, " - Downloading and parsing TMD...")
# Download a specific TMD version if a version was specified, otherwise just download the latest TMD.
try:
if title_version is not None:
title.load_tmd(libWiiPy.title.download_tmd(tid, title_version, wiiu_endpoint=wiiu_nus_enabled))
title.load_tmd(libWiiPy.title.download_tmd(tid, title_version, wiiu_endpoint=wiiu_nus_enabled, progress=progress_update))
else:
title.load_tmd(libWiiPy.title.download_tmd(tid, wiiu_endpoint=wiiu_nus_enabled))
title.load_tmd(libWiiPy.title.download_tmd(tid, wiiu_endpoint=wiiu_nus_enabled, progress=progress_update))
title_version = title.tmd.title_version
# If libWiiPy returns an error, that means that either the TID or version doesn't exist, so return code -2.
except ValueError:
@ -52,17 +54,17 @@ def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_
version_dir.joinpath(f"tmd.{title_version}").write_bytes(title.tmd.dump())
# Use a local ticket, if one exists and "use local files" is enabled.
if use_local_chkbox and version_dir.joinpath("tik").exists():
progress_callback.emit(" - Parsing local copy of Ticket...")
progress_callback.emit(-1, -1, " - Parsing local copy of Ticket...")
title.load_ticket(version_dir.joinpath("tik").read_bytes())
else:
progress_callback.emit(" - Downloading and parsing Ticket...")
progress_callback.emit(-1, -1, " - Downloading and parsing Ticket...")
try:
title.load_ticket(libWiiPy.title.download_ticket(tid, wiiu_endpoint=wiiu_nus_enabled))
title.load_ticket(libWiiPy.title.download_ticket(tid, wiiu_endpoint=wiiu_nus_enabled, progress=progress_update))
version_dir.joinpath("tik").write_bytes(title.ticket.dump())
except ValueError:
# If libWiiPy returns an error, then no ticket is available. Log this, and disable options requiring a
# ticket so that they aren't attempted later.
progress_callback.emit(" - No Ticket is available!")
progress_callback.emit(0, 0, " - No Ticket is available!")
pack_wad_enabled = False
decrypt_contents_enabled = False
# Load the content records from the TMD, and begin iterating over the records.
@ -73,15 +75,15 @@ def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_
content_file_name = f"{title.tmd.content_records[content].content_id:08X}"
# Check for a local copy of the current content if "use local files" is enabled, and use it.
if use_local_chkbox is True and version_dir.joinpath(content_file_name).exists():
progress_callback.emit(f" - Using local copy of content {content + 1} of {len(title.tmd.content_records)}")
progress_callback.emit(-1, -1, f" - Using local copy of content {content + 1} of {len(title.tmd.content_records)}")
content_list.append(version_dir.joinpath(content_file_name).read_bytes())
else:
progress_callback.emit(f" - Downloading content {content + 1} of {len(title.tmd.content_records)} "
progress_callback.emit(0, 0, f" - Downloading content {content + 1} of {len(title.tmd.content_records)} "
f"(Content ID: {title.tmd.content_records[content].content_id}, Size: "
f"{title.tmd.content_records[content].content_size} bytes)...")
content_list.append(libWiiPy.title.download_content(tid, title.tmd.content_records[content].content_id,
wiiu_endpoint=wiiu_nus_enabled))
progress_callback.emit(" - Done!")
wiiu_endpoint=wiiu_nus_enabled, progress=progress_update))
progress_callback.emit(-1, -1, " - Done!")
# If keep encrypted contents is on, write out each content after its downloaded.
if keep_enc_chkbox is True:
version_dir.joinpath(content_file_name).write_bytes(content_list[content])
@ -90,7 +92,7 @@ def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_
if decrypt_contents_enabled is True:
try:
for content in range(len(title.tmd.content_records)):
progress_callback.emit(f" - Decrypting content {content + 1} of {len(title.tmd.content_records)} "
progress_callback.emit(-1, -1, f" - Decrypting content {content + 1} of {len(title.tmd.content_records)} "
f"(Content ID: {title.tmd.content_records[content].content_id})...")
dec_content = title.get_content_by_index(content)
content_file_name = f"{title.tmd.content_records[content].content_id:08X}.app"
@ -105,15 +107,15 @@ def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_
# re-encrypted with the common key instead of the vWii key, so that the title can be installed from within
# vWii mode. (vWii mode does not have access to the vWii key, only Wii U mode has that.)
if repack_vwii_chkbox is True and (tid[3] == "7" or tid[7] == "7"):
progress_callback.emit(" - Re-encrypting Title Key with the common key...")
progress_callback.emit(-1, -1, " - Re-encrypting Title Key with the common key...")
title_key_common = libWiiPy.title.encrypt_title_key(title.ticket.get_title_key(), 0, title.tmd.title_id)
title.ticket.common_key_index = 0
title.ticket.title_key_enc = title_key_common
# Get the WAD certificate chain, courtesy of libWiiPy.
progress_callback.emit(" - Building certificate...")
progress_callback.emit(-1, -1, " - Building certificate...")
title.load_cert_chain(libWiiPy.title.download_cert_chain(wiiu_endpoint=wiiu_nus_enabled))
# Use a typed WAD name if there is one, and auto generate one based on the TID and version if there isn't.
progress_callback.emit(" - Packing WAD...")
progress_callback.emit(-1, -1, " - Packing WAD...")
if wad_file_name != "" and wad_file_name is not None:
# Batch downloads may insert -vLatest, so if it did we can fill in the real number now.
wad_file_name = wad_file_name.replace("-vLatest", f"-v{title_version}")
@ -123,14 +125,14 @@ def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_
wad_file_name = f"{tid}-v{title_version}.wad"
# If enabled (after we make sure it's an IOS), apply all main IOS patches.
if patch_ios and (tid[:8] == "00000001" and int(tid[-2:], 16) > 2):
progress_callback.emit(" - Patching IOS...")
progress_callback.emit(-1, -1, " - Patching IOS...")
ios_patcher = libWiiPy.title.IOSPatcher()
ios_patcher.load(title)
patch_count = ios_patcher.patch_all()
if patch_count > 0:
progress_callback.emit(f" - Applied {patch_count} patches!")
progress_callback.emit(-1, -1, f" - Applied {patch_count} patches!")
else:
progress_callback.emit(" - No patches could be applied! Is this a stub IOS?")
progress_callback.emit(-1, -1, " - No patches could be applied! Is this a stub IOS?")
title = ios_patcher.dump()
# Append "-PATCHED" to the end of the WAD file name to make it clear that it was modified.
wad_file_name = wad_file_name[:-4] + "-PATCHED" + wad_file_name[-4:]
@ -140,7 +142,7 @@ def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_
wad_file_name = wad_file_name.translate({ord(c): None for c in '/\\:*"?<>|'})
# Have libWiiPy dump the WAD, and write that data out.
version_dir.joinpath(wad_file_name).write_bytes(title.dump_wad())
progress_callback.emit("Download complete!")
progress_callback.emit(0, 1, "Download complete!")
# This is where the variables come in. If the state of these variables doesn't match the user's choice by this
# point, it means that they enabled decryption or WAD packing for a title that doesn't have a ticket. Return
# code 1 so that a warning popup is shown informing them of this.

79
modules/language.py Normal file
View File

@ -0,0 +1,79 @@
# "modules/language.py", licensed under the MIT license
# Copyright 2024-2025 NinjaCheetah & Contributors
from modules.config import update_setting
from PySide6.QtCore import QLocale, QTranslator
LANGS = {
"en": "English",
"es": "Español",
"de": "Deutsch",
"fr": "Français",
"it": "Italiano",
"no": "Norsk",
"ro": "Românǎ",
"ko": "한국어",
}
def set_language(config_data: dict, lang: str) -> None:
# Match the selected language. These names will NOT be translated since they represent each language in that
# language, but the "System (Default)" option will, so that will match the default case.
match lang:
case "English":
print("setting language to English")
update_setting(config_data, "language", "en")
case "Español":
print("setting language to Spanish")
update_setting(config_data, "language", "es")
case "Deutsch":
print("setting language to German")
update_setting(config_data, "language", "de")
case "Français":
print("setting language to French")
update_setting(config_data, "language", "fr")
case "Italiano":
print("setting language to Italian")
update_setting(config_data, "language", "it")
case "Norsk":
print("setting language to Norwegian")
update_setting(config_data, "language", "no")
case "Română":
print("setting language to Romanian")
update_setting(config_data, "language", "ro")
case "한국어":
print("setting language to Korean")
update_setting(config_data, "language", "ko")
case _:
print("setting language to system (default)")
update_setting(config_data, "language", "")
def get_language(translator: QTranslator, config_data: dict, path: str) -> QTranslator:
try:
lang = config_data["language"]
except KeyError:
lang = ""
# A specific language was set in the app's settings.
if lang != "":
# If the target language is English, then return an empty translator because that's the default.
if lang == "en":
return translator
if translator.load(QLocale(lang), 'nusget', '_', path):
return translator
else:
# If we get here, then the saved language is invalid, so clear it and run again to use the system language.
update_setting(config_data, "language", "")
return get_language(translator, config_data, path)
else:
# Unix-likes and Windows handle this differently, apparently. Unix-likes will try `nusget_xx_XX.qm` and then
# fall back on just `nusget_xx.qm` if the region-specific translation for the language can't be found. On
# Windows, no such fallback exists, and so this code manually implements that fallback, since for languages like
# Spanish NUSGet doesn't use region-specific translations.
locale = QLocale.system()
if not translator.load(QLocale.system(), 'nusget', '_', path):
base_locale = QLocale(locale.language())
translator.load(base_locale, 'nusget', '_', path)
return translator

View File

@ -1,9 +1,13 @@
# "modules/theme.py", licensed under the MIT license
# Copyright 2024-2025 NinjaCheetah & Contributors
import os
import platform
import subprocess
from modules.config import update_setting
def is_dark_theme_windows():
# This has to be here so that Python doesn't try to import it on non-Windows.
import winreg
@ -16,6 +20,7 @@ def is_dark_theme_windows():
except Exception:
return False
def is_dark_theme_macos():
# macOS is weird. If the dark theme is on, then `defaults read -g AppleInterfaceStyle` returns "Dark". If the light
# theme is on, then trying to read this key fails and returns an error instead.
@ -28,6 +33,7 @@ def is_dark_theme_macos():
except Exception:
return False
def is_dark_theme_linux():
try:
import subprocess
@ -42,7 +48,36 @@ def is_dark_theme_linux():
except Exception:
return False
def is_dark_theme():
def is_dark_theme(config_data: dict):
# Theming priority order:
# 1. `THEME` environment variable
# 2. Theme saved in config.json
# 3. The system theme
# 4. Light, if all else fails (though personally I'd prefer dark)
#
# First, check for an environment variable overriding the theme, and use that if it exists.
try:
if os.environ["THEME"].lower() == "light":
return False
elif os.environ["THEME"].lower() == "dark":
return True
else:
print(f"Unknown theme specified: \"{os.environ['THEME']}\"")
except KeyError:
pass
# If the theme wasn't overridden, read the user's preference in config.json.
try:
match config_data["theme"]:
case "light":
return False
case "dark":
return True
case _:
pass
except KeyError:
pass
# If a theme wasn't set (or the theme is "system"), then check for the system theme.
system = platform.system()
if system == "Windows":
return is_dark_theme_windows()
@ -50,3 +85,16 @@ def is_dark_theme():
return is_dark_theme_macos()
else:
return is_dark_theme_linux()
def set_theme(config_data: dict, theme: str) -> None:
match theme:
case "light":
print("setting theme to light")
update_setting(config_data, "theme", "light")
case "dark":
print("setting theme to dark")
update_setting(config_data, "theme", "dark")
case _:
print("setting theme to system (default)")
update_setting(config_data, "theme", "")

View File

@ -18,9 +18,9 @@ from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
QTransform)
from PySide6.QtWidgets import (QApplication, QComboBox, QHBoxLayout, QHeaderView,
QLabel, QLayout, QLineEdit, QMainWindow,
QMenu, QMenuBar, QPushButton, QSizePolicy,
QSpacerItem, QTabWidget, QTextBrowser, QTreeView,
QVBoxLayout, QWidget)
QMenu, QMenuBar, QProgressBar, QPushButton,
QSizePolicy, QSpacerItem, QTabWidget, QTextBrowser,
QTreeView, QVBoxLayout, QWidget)
from qt.py.ui_WrapCheckboxWidget import WrapCheckboxWidget
@ -31,15 +31,60 @@ class Ui_MainWindow(object):
MainWindow.resize(1010, 675)
MainWindow.setMinimumSize(QSize(1010, 675))
MainWindow.setMaximumSize(QSize(1010, 675))
self.actionAbout = QAction(MainWindow)
self.actionAbout.setObjectName(u"actionAbout")
self.action_about = QAction(MainWindow)
self.action_about.setObjectName(u"action_about")
icon = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.HelpAbout))
self.actionAbout.setIcon(icon)
self.actionAbout.setMenuRole(QAction.MenuRole.ApplicationSpecificRole)
self.actionAbout_Qt = QAction(MainWindow)
self.actionAbout_Qt.setObjectName(u"actionAbout_Qt")
self.actionAbout_Qt.setIcon(icon)
self.actionAbout_Qt.setMenuRole(QAction.MenuRole.ApplicationSpecificRole)
self.action_about.setIcon(icon)
self.action_about.setMenuRole(QAction.MenuRole.ApplicationSpecificRole)
self.action_about_qt = QAction(MainWindow)
self.action_about_qt.setObjectName(u"action_about_qt")
self.action_about_qt.setIcon(icon)
self.action_about_qt.setMenuRole(QAction.MenuRole.ApplicationSpecificRole)
self.action_language_system = QAction(MainWindow)
self.action_language_system.setObjectName(u"action_language_system")
self.action_language_system.setCheckable(True)
self.action_language_system.setChecked(False)
self.action_language_english = QAction(MainWindow)
self.action_language_english.setObjectName(u"action_language_english")
self.action_language_english.setCheckable(True)
self.action_language_english.setText(u"English")
self.action_language_spanish = QAction(MainWindow)
self.action_language_spanish.setObjectName(u"action_language_spanish")
self.action_language_spanish.setCheckable(True)
self.action_language_spanish.setText(u"Espa\u00f1ol")
self.action_language_german = QAction(MainWindow)
self.action_language_german.setObjectName(u"action_language_german")
self.action_language_german.setCheckable(True)
self.action_language_german.setText(u"Deutsch")
self.action_language_french = QAction(MainWindow)
self.action_language_french.setObjectName(u"action_language_french")
self.action_language_french.setCheckable(True)
self.action_language_french.setText(u"Fran\u00e7ais")
self.action_language_italian = QAction(MainWindow)
self.action_language_italian.setObjectName(u"action_language_italian")
self.action_language_italian.setCheckable(True)
self.action_language_italian.setText(u"Italiano")
self.action_language_norwegian = QAction(MainWindow)
self.action_language_norwegian.setObjectName(u"action_language_norwegian")
self.action_language_norwegian.setCheckable(True)
self.action_language_norwegian.setText(u"Norsk")
self.action_language_romanian = QAction(MainWindow)
self.action_language_romanian.setObjectName(u"action_language_romanian")
self.action_language_romanian.setCheckable(True)
self.action_language_romanian.setText(u"Rom\u00e2n\u0103")
self.action_language_korean = QAction(MainWindow)
self.action_language_korean.setObjectName(u"action_language_korean")
self.action_language_korean.setCheckable(True)
self.action_language_korean.setText(u"\ud55c\uad6d\uc5b4")
self.action_theme_system = QAction(MainWindow)
self.action_theme_system.setObjectName(u"action_theme_system")
self.action_theme_system.setCheckable(True)
self.action_theme_light = QAction(MainWindow)
self.action_theme_light.setObjectName(u"action_theme_light")
self.action_theme_light.setCheckable(True)
self.action_theme_dark = QAction(MainWindow)
self.action_theme_dark.setObjectName(u"action_theme_dark")
self.action_theme_dark.setCheckable(True)
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.horizontalLayout_3 = QHBoxLayout(self.centralwidget)
@ -308,10 +353,18 @@ class Ui_MainWindow(object):
self.log_text_browser = QTextBrowser(self.centralwidget)
self.log_text_browser.setObjectName(u"log_text_browser")
self.log_text_browser.setMinimumSize(QSize(0, 247))
self.log_text_browser.setMinimumSize(QSize(0, 222))
self.vertical_layout_controls.addWidget(self.log_text_browser)
self.progress_bar = QProgressBar(self.centralwidget)
self.progress_bar.setObjectName(u"progress_bar")
self.progress_bar.setMinimumSize(QSize(0, 25))
self.progress_bar.setMaximumSize(QSize(16777215, 30))
self.progress_bar.setValue(0)
self.vertical_layout_controls.addWidget(self.progress_bar)
self.horizontalLayout_3.addLayout(self.vertical_layout_controls)
@ -319,14 +372,35 @@ class Ui_MainWindow(object):
self.menubar = QMenuBar(MainWindow)
self.menubar.setObjectName(u"menubar")
self.menubar.setGeometry(QRect(0, 0, 1010, 21))
self.menuHelp = QMenu(self.menubar)
self.menuHelp.setObjectName(u"menuHelp")
self.menu_help = QMenu(self.menubar)
self.menu_help.setObjectName(u"menu_help")
self.menu_options = QMenu(self.menubar)
self.menu_options.setObjectName(u"menu_options")
self.menu_options_language = QMenu(self.menu_options)
self.menu_options_language.setObjectName(u"menu_options_language")
self.menu_options_theme = QMenu(self.menu_options)
self.menu_options_theme.setObjectName(u"menu_options_theme")
MainWindow.setMenuBar(self.menubar)
self.menubar.addAction(self.menuHelp.menuAction())
self.menuHelp.addAction(self.actionAbout)
self.menuHelp.addAction(self.actionAbout_Qt)
self.menuHelp.addSeparator()
self.menubar.addAction(self.menu_options.menuAction())
self.menubar.addAction(self.menu_help.menuAction())
self.menu_help.addAction(self.action_about)
self.menu_help.addAction(self.action_about_qt)
self.menu_help.addSeparator()
self.menu_options.addAction(self.menu_options_language.menuAction())
self.menu_options.addAction(self.menu_options_theme.menuAction())
self.menu_options_language.addAction(self.action_language_system)
self.menu_options_language.addAction(self.action_language_english)
self.menu_options_language.addAction(self.action_language_spanish)
self.menu_options_language.addAction(self.action_language_german)
self.menu_options_language.addAction(self.action_language_french)
self.menu_options_language.addAction(self.action_language_italian)
self.menu_options_language.addAction(self.action_language_norwegian)
self.menu_options_language.addAction(self.action_language_romanian)
self.menu_options_language.addAction(self.action_language_korean)
self.menu_options_theme.addAction(self.action_theme_system)
self.menu_options_theme.addAction(self.action_theme_light)
self.menu_options_theme.addAction(self.action_theme_dark)
self.retranslateUi(MainWindow)
@ -339,8 +413,12 @@ class Ui_MainWindow(object):
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
self.actionAbout.setText(QCoreApplication.translate("MainWindow", u"About NUSGet", None))
self.actionAbout_Qt.setText(QCoreApplication.translate("MainWindow", u"About Qt", None))
self.action_about.setText(QCoreApplication.translate("MainWindow", u"About NUSGet", None))
self.action_about_qt.setText(QCoreApplication.translate("MainWindow", u"About Qt", None))
self.action_language_system.setText(QCoreApplication.translate("MainWindow", u"System (Default)", None))
self.action_theme_system.setText(QCoreApplication.translate("MainWindow", u"System (Default)", None))
self.action_theme_light.setText(QCoreApplication.translate("MainWindow", u"Light", None))
self.action_theme_dark.setText(QCoreApplication.translate("MainWindow", u"Dark", None))
self.tree_filter_input.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Search", None))
self.tree_filter_reset_btn.setText(QCoreApplication.translate("MainWindow", u"Clear", None))
self.platform_tabs.setTabText(self.platform_tabs.indexOf(self.wii_tab), QCoreApplication.translate("MainWindow", u"Wii", None))
@ -369,6 +447,9 @@ class Ui_MainWindow(object):
"li.checked::marker { content: \"\\2612\"; }\n"
"</style></head><body style=\" font-family:'.AppleSystemUIFont'; font-size:13pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;\"><br /></p></body></html>", None))
self.menuHelp.setTitle(QCoreApplication.translate("MainWindow", u"Help", None))
self.menu_help.setTitle(QCoreApplication.translate("MainWindow", u"Help", None))
self.menu_options.setTitle(QCoreApplication.translate("MainWindow", u"Options", None))
self.menu_options_language.setTitle(QCoreApplication.translate("MainWindow", u"Language", None))
self.menu_options_theme.setTitle(QCoreApplication.translate("MainWindow", u"Theme", None))
# retranslateUi

View File

@ -422,7 +422,7 @@
<property name="minimumSize">
<size>
<width>0</width>
<height>247</height>
<height>222</height>
</size>
</property>
<property name="markdown">
@ -440,6 +440,25 @@ li.checked::marker { content: &quot;\2612&quot;; }
</property>
</widget>
</item>
<item>
<widget class="QProgressBar" name="progress_bar">
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
</size>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
@ -453,17 +472,47 @@ li.checked::marker { content: &quot;\2612&quot;; }
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="menuHelp">
<widget class="QMenu" name="menu_help">
<property name="title">
<string>Help</string>
</property>
<addaction name="actionAbout"/>
<addaction name="actionAbout_Qt"/>
<addaction name="action_about"/>
<addaction name="action_about_qt"/>
<addaction name="separator"/>
</widget>
<addaction name="menuHelp"/>
<widget class="QMenu" name="menu_options">
<property name="title">
<string>Options</string>
</property>
<widget class="QMenu" name="menu_options_language">
<property name="title">
<string>Language</string>
</property>
<addaction name="action_language_system"/>
<addaction name="action_language_english"/>
<addaction name="action_language_spanish"/>
<addaction name="action_language_german"/>
<addaction name="action_language_french"/>
<addaction name="action_language_italian"/>
<addaction name="action_language_norwegian"/>
<addaction name="action_language_romanian"/>
<addaction name="action_language_korean"/>
</widget>
<widget class="QMenu" name="menu_options_theme">
<property name="title">
<string>Theme</string>
</property>
<addaction name="action_theme_system"/>
<addaction name="action_theme_light"/>
<addaction name="action_theme_dark"/>
</widget>
<addaction name="menu_options_language"/>
<addaction name="menu_options_theme"/>
</widget>
<addaction name="menu_options"/>
<addaction name="menu_help"/>
</widget>
<action name="actionAbout">
<action name="action_about">
<property name="icon">
<iconset theme="QIcon::ThemeIcon::HelpAbout"/>
</property>
@ -474,7 +523,7 @@ li.checked::marker { content: &quot;\2612&quot;; }
<enum>QAction::MenuRole::ApplicationSpecificRole</enum>
</property>
</action>
<action name="actionAbout_Qt">
<action name="action_about_qt">
<property name="icon">
<iconset theme="QIcon::ThemeIcon::HelpAbout"/>
</property>
@ -485,6 +534,105 @@ li.checked::marker { content: &quot;\2612&quot;; }
<enum>QAction::MenuRole::ApplicationSpecificRole</enum>
</property>
</action>
<action name="action_language_system">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="text">
<string>System (Default)</string>
</property>
</action>
<action name="action_language_english">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string notr="true">English</string>
</property>
</action>
<action name="action_language_spanish">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string notr="true">Español</string>
</property>
</action>
<action name="action_language_german">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string notr="true">Deutsch</string>
</property>
</action>
<action name="action_language_french">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string notr="true">Français</string>
</property>
</action>
<action name="action_language_italian">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string notr="true">Italiano</string>
</property>
</action>
<action name="action_language_norwegian">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string notr="true">Norsk</string>
</property>
</action>
<action name="action_language_romanian">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string notr="true">Română</string>
</property>
</action>
<action name="action_language_korean">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string notr="true">한국어</string>
</property>
</action>
<action name="action_theme_system">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>System (Default)</string>
</property>
</action>
<action name="action_theme_light">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Light</string>
</property>
</action>
<action name="action_theme_dark">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Dark</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>

View File

@ -1,7 +1,7 @@
pyside6
nuitka~=2.6.0
libWiiPy
git+https://github.com/NinjaCheetah/libWiiPy
libTWLPy
zstandard
requests
imageio
imageio

View File

@ -61,7 +61,7 @@ QMenu {
}
QMenu::item {
padding: 6px 2px;
padding: 6px 16px 6px 4px;
margin: 2px;
border-radius: 4px;
background-color: transparent;
@ -369,6 +369,24 @@ QMessageBox QLabel {
color: white;
}
QProgressBar {
border: 1px solid rgba(70, 70, 70, 1);
border-radius: 8px;
background-color: #1a1a1a;
text-align: center;
color: white;
padding-left: 1px;
}
QProgressBar::chunk {
background-color: qlineargradient(
x1: 0, y1: 0, x2: 1, y2: 0,
stop: 0 #1a73e8, stop: 1 #5596f4
);
border-radius: 5px;
margin: 0.5px;
}
WrapCheckboxWidget {
show-decoration-selected: 1;
outline: 0;

View File

@ -62,7 +62,7 @@ QMenu {
}
QMenu::item {
padding: 6px 2px;
padding: 6px 16px 6px 4px;
margin: 2px;
border-radius: 4px;
background-color: transparent;
@ -377,6 +377,24 @@ QMessageBox QLabel {
color: #000000;
}
QProgressBar {
border: 1px solid rgb(163, 163, 163);
border-radius: 8px;
background-color: #ececec;
text-align: center;
padding: 1px;
color: black;
}
QProgressBar::chunk {
background-color: qlineargradient(
x1: 0, y1: 0, x2: 1, y2: 0,
stop: 0 #1a73e8, stop: 1 #5596f4
);
border-radius: 5px;
margin: 0.5px;
}
WrapCheckboxWidget {
show-decoration-selected: 1;
outline: 0;

View File

@ -9,68 +9,68 @@
<translation>Über NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="33"/>
<source>NUSGet</source>
<translatorcomment>Translating the name probably doesn&apos;t make much sense, I think</translatorcomment>
<translation>NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="38"/>
<source>Version {nusget_version}</source>
<translation>Version {nusget_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="44"/>
<source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
<translation>Mit libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="49"/>
<source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
<translation>© 2024-2025 NinjaCheetah &amp; Mitwirkende</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="65"/>
<source>View Project on GitHub</source>
<translation>Dieses Projekt auf GitHub öffnen</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="81"/>
<source>Translations</source>
<translation>Übersetzungen</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="89"/>
<source>French (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</source>
<translation>Französisch (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="91"/>
<source>German (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</source>
<translation>Deutsch: &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>Italian (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</source>
<translation>Italienisch (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="95"/>
<source>Korean (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</source>
<translation>Koreanisch (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="97"/>
<source>Norwegian (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</source>
<translation>Norwegisch (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="148"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="99"/>
<source>Romanian (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</source>
<translation>Rumänisch (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="150"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="101"/>
<source>Spanish (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</source>
<translation>Spanisch (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</translation>
</message>
@ -92,246 +92,262 @@ Titel, welche in der Liste mit einem Haken markiert sind, haben ein frei verfüg
Standartmäßig werden alle Inhalte und Archive in einen &quot;NUSGet Downloads&quot;-Ordner im Downloads-Order gespeichert.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="167"/>
<location filename="../../NUSGet.py" line="218"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Als installierbares Archiv verpacken (WAD/TAD)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="169"/>
<location filename="../../NUSGet.py" line="220"/>
<source>Keep encrypted contents</source>
<translatorcomment>&quot;speichern&quot; is more like &quot;save&quot; than &quot;keep&quot;, but &quot;behalten&quot; would sound stupid</translatorcomment>
<translation>Verschlüsselte Inhalte speichern</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="171"/>
<location filename="../../NUSGet.py" line="222"/>
<source>Create decrypted contents (*.app)</source>
<translatorcomment>Similar situation as with &quot;Keep encrypted contents&quot;, means more like &quot;Decrypt contents&quot; because it sounds better</translatorcomment>
<translation>Inhalte entschlüsseln (*.app)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="172"/>
<location filename="../../NUSGet.py" line="223"/>
<source>Use local files, if they exist</source>
<translation>Vorhandene Dateien nutzen, sofern verfügbar</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="173"/>
<location filename="../../NUSGet.py" line="224"/>
<source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Wii U-NUS benutzen (schneller, betrifft nur Wii/vWii)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="175"/>
<location filename="../../NUSGet.py" line="226"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Patches für IOS anwenden (Betrifft nur WADs)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="176"/>
<location filename="../../NUSGet.py" line="227"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Inhalte des Titels mit dem Wii Common-Key neu verschlüsseln</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="177"/>
<location filename="../../NUSGet.py" line="228"/>
<source>Check for updates on startup</source>
<translation>Beim Start nach Updates suchen</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="178"/>
<location filename="../../NUSGet.py" line="229"/>
<source>Use a custom download directory</source>
<translation>Benutzerspezifischen Downloads-Ordner nutzen</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="242"/>
<location filename="../../NUSGet.py" line="305"/>
<source>NUSGet Update Available</source>
<translation>NUSGet-Update verfügbar</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="243"/>
<location filename="../../NUSGet.py" line="306"/>
<source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation>&lt;b&gt;Eine neue version von NUSGet ist verfügbar!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="344"/>
<location filename="../../NUSGet.py" line="407"/>
<source>No Output Selected</source>
<translatorcomment>&quot;Output&quot; is quite difficult to translate into anything sensical, so I added &quot;format&quot; to make it specifically refer to the type of output the user wants, which keeps it consistent with the rest of the text</translatorcomment>
<translation>Kein Ausgabeformat ausgewählt</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="345"/>
<location filename="../../NUSGet.py" line="408"/>
<source>You have not selected any format to output the data in!</source>
<translation>Es wurde kein Ausgabeformat für die Inhalte ausgewählt!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="347"/>
<location filename="../../NUSGet.py" line="410"/>
<source>Please select at least one option for how you would like the download to be saved.</source>
<translation>Bitte wählen Sie mindestens ein Format aus für den herunterzuladenen Titel.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="359"/>
<location filename="../../NUSGet.py" line="565"/>
<location filename="../../NUSGet.py" line="422"/>
<location filename="../../NUSGet.py" line="628"/>
<source>Invalid Download Directory</source>
<translation>Fehlerhafter Downloads-Ordner</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="360"/>
<location filename="../../NUSGet.py" line="423"/>
<source>The specified download directory does not exist!</source>
<translation>Der ausgewählte Downloads-Ordner konnte nicht gefunden werden!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="363"/>
<location filename="../../NUSGet.py" line="426"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation>Bitte stellen Sie sicher, dass der Downloads-Ordner existiert und dass Sie Zugriff auf diesen haben.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<location filename="../../NUSGet.py" line="456"/>
<source>Invalid Title ID</source>
<translation>Fehlerhafte Title-ID</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="394"/>
<location filename="../../NUSGet.py" line="457"/>
<source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>&lt;b&gt;Die angegebene Title-ID ist fehlerhaft!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="396"/>
<location filename="../../NUSGet.py" line="459"/>
<source>Title IDs must be 16 digit strings of numbers and letters. Please enter a correctly formatted Title ID, or select one from the menu on the left.</source>
<translation>Title-IDs müssen aus 16 alphanumerischen Zeichen bestehen. Bitte geben Sie eine korrekte Title-ID ein oder wählen Sie einen Titel aus der Liste links.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="398"/>
<location filename="../../NUSGet.py" line="461"/>
<source>Title ID/Version Not Found</source>
<translation>Title-ID/Version nicht gefunden</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<location filename="../../NUSGet.py" line="462"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation>&lt;b&gt;Es konnte kein Titel mit der gegebenen Title-ID bzw. Version gefunden werden!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="401"/>
<location filename="../../NUSGet.py" line="464"/>
<source>Please make sure that you have entered a valid Title ID, or selected one from the title database, and that the provided version exists for the title you are attempting to download.</source>
<translation>Bitte stellen Sie sicher, dass Sie eine korrekte Title-ID eingegeben haben und dass die Version auch existiert. Alternativ können Sie diese auch in der Liste links finden.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="403"/>
<location filename="../../NUSGet.py" line="466"/>
<source>Content Decryption Failed</source>
<translation>Inhaltsentschlüsselung fehlgeschlagen</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="404"/>
<location filename="../../NUSGet.py" line="467"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation>&lt;b&gt;Die Inhalte konnten nicht entschlüsselt werden.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="407"/>
<location filename="../../NUSGet.py" line="470"/>
<source>Your TMD or Ticket may be damaged, or they may not correspond with the content being decrypted. If you have checked &quot;Use local files, if they exist&quot;, try disabling that option before trying the download again to fix potential issues with local data.</source>
<translation>Das TMD oder Ticket könnten wohlmöglich beschädigt sein oder stimmen nicht mit dem ausgewählten Titel überein, sofern &quot;Vorhandene Dateien nutzen, sofern verfügbar&quot; aktiviert wurde. Im letzteren Fall sollten Sie versuchen, diese Option auszuschalten und die Inhalte neu herunterzuladen.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="410"/>
<location filename="../../NUSGet.py" line="473"/>
<source>Ticket Not Available</source>
<translation>Ticket nicht verfügbar</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="411"/>
<location filename="../../NUSGet.py" line="474"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation>&lt;b&gt;Es konnte kein Ticket für den angegebenen TItel gefunden werden!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="414"/>
<location filename="../../NUSGet.py" line="477"/>
<source>A ticket could not be downloaded for the requested title, but you have selected &quot;Pack installable archive&quot; or &quot;Create decrypted contents&quot;. These options are not available for titles without a ticket. Only encrypted contents have been saved.</source>
<translation>Es konnte kein Ticket für den ausgewählten Titel heruntergeladen werden, jedoch wurde &quot;Als installierbares Archiv verpacken&quot; bzw. &quot;Inhalte entschlüsseln&quot; ausgewählt. Diese Optionen erfordern ein Ticket. Es wurden nur verschlüsselte Inhalte gespeichert.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="416"/>
<location filename="../../NUSGet.py" line="479"/>
<source>Unknown Error</source>
<translation>Unbekannter Fehler</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="417"/>
<location filename="../../NUSGet.py" line="480"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation>&lt;b&gt;Ein unbekannter Fehler ist aufgetreten!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="419"/>
<location filename="../../NUSGet.py" line="482"/>
<source>Please try again. If this issue persists, please open a new issue on GitHub detailing what you were trying to do when this error occurred.</source>
<translation>Bitte versuchen Sie noch einmal. Sofern das Problem weiter besteht, wenden Sie sich bitte an den Issue-Tracker auf GitHub mit Details dazu, was Sie versucht haben.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="438"/>
<location filename="../../NUSGet.py" line="501"/>
<source>Script Issues Occurred</source>
<translation>Script-Fehler aufgetreten</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="439"/>
<location filename="../../NUSGet.py" line="502"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation>&lt;b&gt;Fehler sind während der Ausführung von Scripten aufgetreten.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="441"/>
<location filename="../../NUSGet.py" line="504"/>
<source>Check the log for more details about what issues were encountered.</source>
<translation>Bitte schauen Sie im Log nach, welche Fehler aufgetreten sind.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="448"/>
<location filename="../../NUSGet.py" line="511"/>
<source>The following titles could not be downloaded due to an error. Please ensure that the Title ID and version listed in the script are valid.</source>
<translation>Die angegebenen Titel konnten wegen Fehlern nicht heruntergeladen werden. Bitte stellen Sie sicher, dass die Title-IDs und Versionen im Script korrekt sind.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="458"/>
<location filename="../../NUSGet.py" line="521"/>
<source>You enabled &quot;Create decrypted contents&quot; or &quot;Pack installable archive&quot;, but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
<translation>Sie haben &quot;Inhalte entschlüsseln&quot; bzw. &quot;Als installierbares Archiv verpacken&quot; ausgewählt, aber die angegebenen Titel im Script haben kein verfügbares Ticket. Sofern &quot;Verschlüsselte Inhalte speichern&quot; aktiv ist, wurden verschlüsselte Daten noch gespeichert.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="477"/>
<location filename="../../NUSGet.py" line="540"/>
<source>Script Download Failed</source>
<translation>Script-Download fehlgeschlagen</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="478"/>
<location filename="../../NUSGet.py" line="541"/>
<source>Open NUS Script</source>
<translation>NUS-Script öffnen</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="479"/>
<location filename="../../NUSGet.py" line="542"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>NUS-Scripts (*.nus *.json)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="489"/>
<location filename="../../NUSGet.py" line="552"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation>&lt;b&gt;Ein Fehler ist beim Lesen des Scripts aufgetreten!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="491"/>
<location filename="../../NUSGet.py" line="554"/>
<source>Error encountered at line {lineno}, column {colno}. Please double-check the script and try again.</source>
<translation>Der Fehler ist bei Linie {lineno}, Zeile {colno} aufgetreten. Bitte überprüfen Sie ihr Script und versuchen Sie es erneut.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="500"/>
<location filename="../../NUSGet.py" line="563"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation>&lt;b&gt;Ein Fehler ist beim Lesen der Title-IDs aufgetreten!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="502"/>
<location filename="../../NUSGet.py" line="565"/>
<source>The title at index {index} does not have a Title ID!</source>
<translation>Der Titel an Stelle {index} hat keine Title-ID!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="555"/>
<location filename="../../NUSGet.py" line="618"/>
<source>Open Directory</source>
<translation>Ordner öffnen</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="566"/>
<location filename="../../NUSGet.py" line="629"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation>&lt;b&gt;Der angegebene Downloads-Ordner konnte nicht gefunden werden!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="569"/>
<location filename="../../NUSGet.py" line="632"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation>Bitte stellen Sie sicher, dass der Downloads-Ordner, den Sie nutzen möchten, existiert und dass Sie darauf auch Zugriffen haben.</translation>
</message>
<message>
<location filename="../../modules/core.py" line="68"/>
<location filename="../../NUSGet.py" line="661"/>
<location filename="../../NUSGet.py" line="671"/>
<source>Restart Required</source>
<translation>Neustart erforderlich</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="662"/>
<source>NUSGet must be restarted for the selected language to take effect.</source>
<translation>NUSGet muss erneut gestartet werden, um die ausgewählte Sprache zu nutzen.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="672"/>
<source>NUSGet must be restarted for the selected theme to take effect.</source>
<translation>NUSGet muss erneut gestartet werden, um die ausgewählte Darstellung zu nutzen.</translation>
</message>
<message>
<location filename="../../modules/core.py" line="74"/>
<source>
Could not check for updates.</source>
@ -340,7 +356,7 @@ Could not check for updates.</source>
Konnte nicht nach Updates suchen.</translation>
</message>
<message>
<location filename="../../modules/core.py" line="78"/>
<location filename="../../modules/core.py" line="84"/>
<source>
There&apos;s a newer version of NUSGet available!</source>
@ -349,7 +365,7 @@ There&apos;s a newer version of NUSGet available!</source>
Eine neuere Version von NUSGet ist verfügbar!</translation>
</message>
<message>
<location filename="../../modules/core.py" line="80"/>
<location filename="../../modules/core.py" line="86"/>
<source>
You&apos;re running the latest release of NUSGet.</source>
@ -468,19 +484,50 @@ li.checked::marker { content: &quot;\2612&quot;; }
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="458"/>
<location filename="../../qt/ui/MainMenu.ui" line="477"/>
<source>Help</source>
<translation>Hilfe</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="471"/>
<location filename="../../qt/ui/MainMenu.ui" line="485"/>
<source>Options</source>
<translation>Optionen</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="489"/>
<source>Language</source>
<translation>Sprache</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="503"/>
<source>Theme</source>
<translation>Darstellung</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="520"/>
<source>About NUSGet</source>
<translation>Über NUSGet</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="482"/>
<location filename="../../qt/ui/MainMenu.ui" line="531"/>
<source>About Qt</source>
<translation>Über Qt</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="545"/>
<location filename="../../qt/ui/MainMenu.ui" line="617"/>
<source>System (Default)</source>
<translation>System (Standart)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="625"/>
<source>Light</source>
<translation>Hell</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="633"/>
<source>Dark</source>
<translation>Dunkel</translation>
</message>
</context>
</TS>

View File

@ -9,68 +9,68 @@
<translation>Acerca de NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="33"/>
<source>NUSGet</source>
<translation>NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="38"/>
<source>Version {nusget_version}</source>
<translation>Versión {nusget_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="44"/>
<source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
<translation>Usando libWiiPy {libwiipy_version} y libTWLPy {libtwlpy_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="49"/>
<source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
<translation>© 2024-2025 NinjaCheetah y colaboradores</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="65"/>
<source>View Project on GitHub</source>
<translation>Ver proyecto en GitHub</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="81"/>
<source>Translations</source>
<translation>Traducciones</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="89"/>
<source>French (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</source>
<translation>Francés (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="91"/>
<source>German (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</source>
<translation>Alemán (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>Italian (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</source>
<translatorcomment>&quot;Italiano&quot; is spelled the same way in both Italian and Spanish.</translatorcomment>
<translation>Italiano: &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="95"/>
<source>Korean (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</source>
<translation>Coreano (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="97"/>
<source>Norwegian (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</source>
<translation>Noruego (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="148"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="99"/>
<source>Romanian (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</source>
<translation>Rumano (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="150"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="101"/>
<source>Spanish (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</source>
<translation>Español: &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</translation>
</message>
@ -159,12 +159,43 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="471"/>
<location filename="../../qt/ui/MainMenu.ui" line="485"/>
<source>Options</source>
<translation>Opciones</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="489"/>
<source>Language</source>
<translation>Idioma</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="503"/>
<source>Theme</source>
<translation>Tema</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="520"/>
<source>About NUSGet</source>
<translation>Acerca de NUSGet</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="167"/>
<location filename="../../qt/ui/MainMenu.ui" line="545"/>
<location filename="../../qt/ui/MainMenu.ui" line="617"/>
<source>System (Default)</source>
<translation>Sistema (por defecto)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="625"/>
<source>Light</source>
<translation>Claro</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="633"/>
<source>Dark</source>
<translation>Oscuro</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="218"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Generar paquete de instalación (WAD/TAD)</translation>
</message>
@ -174,17 +205,17 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Nombre de archivo</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="169"/>
<location filename="../../NUSGet.py" line="220"/>
<source>Keep encrypted contents</source>
<translation>Mantener contenidos encriptados</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="171"/>
<location filename="../../NUSGet.py" line="222"/>
<source>Create decrypted contents (*.app)</source>
<translation>Crear contenidos desencriptados (*.app)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="172"/>
<location filename="../../NUSGet.py" line="223"/>
<source>Use local files, if they exist</source>
<translation>Usar archivos locales, si existen</translation>
</message>
@ -194,7 +225,7 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Configuración de títulos de vWii</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="176"/>
<location filename="../../NUSGet.py" line="227"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Reencriptar título usando la clave común de Wii</translation>
</message>
@ -204,12 +235,12 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Configuración de aplicación</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="177"/>
<location filename="../../NUSGet.py" line="228"/>
<source>Check for updates on startup</source>
<translation>Buscar actualizaciones al inicio</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="178"/>
<location filename="../../NUSGet.py" line="229"/>
<source>Use a custom download directory</source>
<translation>Usar ruta de descarga personalizada</translation>
</message>
@ -219,12 +250,12 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Seleccionar...</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="458"/>
<location filename="../../qt/ui/MainMenu.ui" line="477"/>
<source>Help</source>
<translation>Ayuda</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="482"/>
<location filename="../../qt/ui/MainMenu.ui" line="531"/>
<source>About Qt</source>
<translation>Acerca de Qt</translation>
</message>
@ -234,94 +265,94 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Ruta de descarga</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="175"/>
<location filename="../../NUSGet.py" line="226"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Aplicar parches a IOS (sólo aplica a WADs)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="242"/>
<location filename="../../NUSGet.py" line="305"/>
<source>NUSGet Update Available</source>
<translation>Actualización de NUSGet disponible</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="344"/>
<location filename="../../NUSGet.py" line="407"/>
<source>No Output Selected</source>
<translation>Formato de salida no escogido</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="345"/>
<location filename="../../NUSGet.py" line="408"/>
<source>You have not selected any format to output the data in!</source>
<translation>¡No has escogido un formato de salida para los datos!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="347"/>
<location filename="../../NUSGet.py" line="410"/>
<source>Please select at least one option for how you would like the download to be saved.</source>
<translation>Por favor, selecciona al menos un formato de salida para la descarga.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="359"/>
<location filename="../../NUSGet.py" line="565"/>
<location filename="../../NUSGet.py" line="422"/>
<location filename="../../NUSGet.py" line="628"/>
<source>Invalid Download Directory</source>
<translation>Directorio de descarga inválido</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="360"/>
<location filename="../../NUSGet.py" line="423"/>
<source>The specified download directory does not exist!</source>
<translation>¡El directorio de descarga especificado no existe!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="363"/>
<location filename="../../NUSGet.py" line="426"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation>Por favor, asegúrate de que el directorio de descarga especificado existe, y de que tengas permisos para acceder a él.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<location filename="../../NUSGet.py" line="456"/>
<source>Invalid Title ID</source>
<translation>ID de título inválido</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="394"/>
<location filename="../../NUSGet.py" line="457"/>
<source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>&lt;b&gt;¡El ID de título introducido no tiene un formato válido!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<location filename="../../NUSGet.py" line="462"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation>&lt;b&gt;¡No se encontró un título que coincida con el ID de título y/o versión proporcionados!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="404"/>
<location filename="../../NUSGet.py" line="467"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation>&lt;b&gt;¡El desencriptado de contenidos falló! No se han podido crear los contenidos desencriptados.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="411"/>
<location filename="../../NUSGet.py" line="474"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translatorcomment>&quot;Ticket&quot; may be translated as &quot;billete&quot;, &quot;boleto&quot; or even &quot;tique&quot;, but it is preferable to use the English term here for consistency&apos;s sake.</translatorcomment>
<translation>&lt;b&gt;¡No existe un ticket disponible para el título solicitado!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="417"/>
<location filename="../../NUSGet.py" line="480"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation>&lt;b&gt;¡Ha ocurrido un error desconocido!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="439"/>
<location filename="../../NUSGet.py" line="502"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation>&lt;b&gt;Ocurrieron algunos problemas durante la ejecución del script de descarga.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="489"/>
<location filename="../../NUSGet.py" line="552"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation>&lt;b&gt;¡Ocurrió un error mientras se analizaba el archivo de script!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="500"/>
<location filename="../../NUSGet.py" line="563"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation>&lt;b&gt;¡Ocurrió un error mientras se analizaban los IDs de títulos!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="396"/>
<location filename="../../NUSGet.py" line="459"/>
<source>Title IDs must be 16 digit strings of numbers and letters. Please enter a correctly formatted Title ID, or select one from the menu on the left.</source>
<translation>Los IDs de títulos tienen que ser cadenas alfanuméricas de 16 dígitos. Por favor, introduce un ID de título con el formato apropiado, o selecciona uno desde el menú a la izquierda.</translation>
</message>
@ -340,120 +371,136 @@ Los títulos con una marca de verificación son gratuitos, tienen un ticket disp
Por defecto, los títulos serán descargados a una carpeta llamada &quot;NUSGet Downloads&quot; dentro de tu directorio de descargas.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="173"/>
<location filename="../../NUSGet.py" line="224"/>
<source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Usar NUS de Wii U (más rápido, sólo afecta a Wii/vWii)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="243"/>
<location filename="../../NUSGet.py" line="306"/>
<source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation>&lt;b&gt;¡Hay una nueva versión de NUSGet disponible!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="398"/>
<location filename="../../NUSGet.py" line="461"/>
<source>Title ID/Version Not Found</source>
<translation>ID de título / versión no disponible</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="401"/>
<location filename="../../NUSGet.py" line="464"/>
<source>Please make sure that you have entered a valid Title ID, or selected one from the title database, and that the provided version exists for the title you are attempting to download.</source>
<translation>Por favor, asegúrate de haber introducido un ID de título válido o de seleccionar uno de la base de datos de títulos, y que la versión proporcionada existe para el título que estás tratando de descargar.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="403"/>
<location filename="../../NUSGet.py" line="466"/>
<source>Content Decryption Failed</source>
<translation>El desencriptado de contenidos falló</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="407"/>
<location filename="../../NUSGet.py" line="470"/>
<source>Your TMD or Ticket may be damaged, or they may not correspond with the content being decrypted. If you have checked &quot;Use local files, if they exist&quot;, try disabling that option before trying the download again to fix potential issues with local data.</source>
<translatorcomment>&quot;Ticket&quot; may be translated as &quot;billete&quot;, &quot;boleto&quot; or even &quot;tique&quot;, but it is preferable to use the English term here for consistency&apos;s sake.</translatorcomment>
<translation>Tu TMD o ticket puede estar dañado, o puede que no correspondan al contenido que está siendo desencriptado. Si marcaste la casilla &quot;Usar archivos locales, si existen&quot;, prueba con desactivar dicha opción antes de intentar nuevamente la descarga para corregir posibles problemas con los datos locales.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="410"/>
<location filename="../../NUSGet.py" line="473"/>
<source>Ticket Not Available</source>
<translatorcomment>&quot;Ticket&quot; may be translated as &quot;billete&quot;, &quot;boleto&quot; or even &quot;tique&quot;, but it is preferable to use the English term here for consistency&apos;s sake.</translatorcomment>
<translation>Ticket no disponible</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="414"/>
<location filename="../../NUSGet.py" line="477"/>
<source>A ticket could not be downloaded for the requested title, but you have selected &quot;Pack installable archive&quot; or &quot;Create decrypted contents&quot;. These options are not available for titles without a ticket. Only encrypted contents have been saved.</source>
<translatorcomment>&quot;Ticket&quot; may be translated as &quot;billete&quot;, &quot;boleto&quot; or even &quot;tique&quot;, but it is preferable to use the English term here for consistency&apos;s sake.</translatorcomment>
<translation>No se pudo descargar un ticket para el título solicitado, pero has marcado la casilla &quot;Generar paquete de instalación&quot; o &quot;Crear contenidos desencriptados&quot;. Estas opciones no están disponibles para títulos sin un ticket. Sólo se han guardado los contenidos encriptados.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="416"/>
<location filename="../../NUSGet.py" line="479"/>
<source>Unknown Error</source>
<translation>Error desconocido</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="419"/>
<location filename="../../NUSGet.py" line="482"/>
<source>Please try again. If this issue persists, please open a new issue on GitHub detailing what you were trying to do when this error occurred.</source>
<translation>Por favor, intenta de nuevo. Si el problema persiste, por favor abre un reporte de problema en GitHub detallando lo que intentabas hacer cuando ocurrió este error.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="438"/>
<location filename="../../NUSGet.py" line="501"/>
<source>Script Issues Occurred</source>
<translation>Ocurrieron problemas con el script</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="441"/>
<location filename="../../NUSGet.py" line="504"/>
<source>Check the log for more details about what issues were encountered.</source>
<translation>Lee el registro para obtener más detalles sobre los problemas que se encontraron.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="448"/>
<location filename="../../NUSGet.py" line="511"/>
<source>The following titles could not be downloaded due to an error. Please ensure that the Title ID and version listed in the script are valid.</source>
<translation>Los siguientes títulos no pudieron ser descargados debido a un error. Por favor, asegúrate de que el ID de título y la versión listados en el script son válidos.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="458"/>
<location filename="../../NUSGet.py" line="521"/>
<source>You enabled &quot;Create decrypted contents&quot; or &quot;Pack installable archive&quot;, but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
<translation>Marcaste la casilla &quot;Crear contenidos desencriptados&quot; o &quot;Generar paquete de instalación&quot;, pero los siguientes títulos del script no tienen un ticket disponible. Si se marcó su opción, los contenidos encriptados fueron descargados de todas maneras.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="477"/>
<location filename="../../NUSGet.py" line="540"/>
<source>Script Download Failed</source>
<translation>La descarga del script falló</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="478"/>
<location filename="../../NUSGet.py" line="541"/>
<source>Open NUS Script</source>
<translation>Abrir script de NUS</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="479"/>
<location filename="../../NUSGet.py" line="542"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>Scripts de NUS (*.nus, *.json)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="491"/>
<location filename="../../NUSGet.py" line="554"/>
<source>Error encountered at line {lineno}, column {colno}. Please double-check the script and try again.</source>
<translation>Error encontrado en la línea {lineno}, columna {colno}. Por favor, verifica el script e intenta nuevamente.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="502"/>
<location filename="../../NUSGet.py" line="565"/>
<source>The title at index {index} does not have a Title ID!</source>
<translation>¡El título con índice {index} no tiene un ID de título!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="555"/>
<location filename="../../NUSGet.py" line="618"/>
<source>Open Directory</source>
<translation>Abrir directorio</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="566"/>
<location filename="../../NUSGet.py" line="629"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation>&lt;b&gt;¡El directorio de descarga especificado no existe!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="569"/>
<location filename="../../NUSGet.py" line="632"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation>Por favor, asegúrate de que el directorio de descarga especificado existe, y de que tengas permisos para acceder a él.</translation>
</message>
<message>
<location filename="../../modules/core.py" line="68"/>
<location filename="../../NUSGet.py" line="661"/>
<location filename="../../NUSGet.py" line="671"/>
<source>Restart Required</source>
<translation>Reinicio requerido</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="662"/>
<source>NUSGet must be restarted for the selected language to take effect.</source>
<translation>NUSGet tiene que reiniciarse para aplicar el idioma seleccionado.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="672"/>
<source>NUSGet must be restarted for the selected theme to take effect.</source>
<translation>NUSGet tiene que reiniciarse para aplicar el tema seleccionado.</translation>
</message>
<message>
<location filename="../../modules/core.py" line="74"/>
<source>
Could not check for updates.</source>
@ -462,7 +509,7 @@ Could not check for updates.</source>
No se pudo buscar actualizaciones.</translation>
</message>
<message>
<location filename="../../modules/core.py" line="78"/>
<location filename="../../modules/core.py" line="84"/>
<source>
There&apos;s a newer version of NUSGet available!</source>
@ -471,7 +518,7 @@ There&apos;s a newer version of NUSGet available!</source>
¡Hay una nueva versión de NUSGet disponible!</translation>
</message>
<message>
<location filename="../../modules/core.py" line="80"/>
<location filename="../../modules/core.py" line="86"/>
<source>
You&apos;re running the latest release of NUSGet.</source>

View File

@ -9,68 +9,68 @@
<translation>À propos de NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="33"/>
<source>NUSGet</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="38"/>
<source>Version {nusget_version}</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="44"/>
<source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
<translation>Utilise libWiiPy {libwiipy_version} et libTWLPy {libtwlpy_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="49"/>
<source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
<translatorcomment>In French, we need to translate both genders for Contributors, just because.</translatorcomment>
<translation>© 2024-2025 NinjaCheetah, contributeurs et contributrices</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="65"/>
<source>View Project on GitHub</source>
<translation>Voir le projet sur GitHub</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="81"/>
<source>Translations</source>
<translation>Traductions</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="89"/>
<source>French (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</source>
<translation>Français: &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="91"/>
<source>German (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</source>
<translation>Allemand (Deutsch) : &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>Italian (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</source>
<translation>Italien (Italiano) : &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="95"/>
<source>Korean (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</source>
<translation>Coréen () : &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="97"/>
<source>Norwegian (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</source>
<translation>Norvégien (Norsk) : &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="148"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="99"/>
<source>Romanian (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</source>
<translation>Roumain (Română) : &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="150"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="101"/>
<source>Spanish (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</source>
<translation>Espagnol (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</translation>
</message>
@ -100,7 +100,7 @@ Les titres marqués d&apos;une coche sont gratuits et ont un billet disponible,
Les titres seront téléchargés dans un dossier &quot;NUSGet Downloads&quot;, à l&apos;intérieur de votre dossier de téléchargements.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="242"/>
<location filename="../../NUSGet.py" line="305"/>
<source>NUSGet Update Available</source>
<translation>Mise à jour NUSGet disponible</translation>
</message>
@ -122,102 +122,118 @@ Les titres marqués d&apos;une coche sont gratuits et ont un billet disponible,
Les titres seront téléchargés dans un dossier &quot;NUSGet Downloads&quot;, à l&apos;intérieur de votre dossier de téléchargements.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="173"/>
<location filename="../../NUSGet.py" line="224"/>
<source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Utiliser le NUS Wii U (plus rapide, n&apos;affecte que Wii / vWii)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="243"/>
<location filename="../../NUSGet.py" line="306"/>
<source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation>&lt;b&gt;Une nouvelle version de NUSGet est disponible !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="344"/>
<location filename="../../NUSGet.py" line="407"/>
<source>No Output Selected</source>
<translation>Aucun format sélectionné</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="345"/>
<location filename="../../NUSGet.py" line="408"/>
<source>You have not selected any format to output the data in!</source>
<translation>Veuillez sélectionner un format de sortie pour les données !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="347"/>
<location filename="../../NUSGet.py" line="410"/>
<source>Please select at least one option for how you would like the download to be saved.</source>
<translation>Veuillez sélectionner au moins une option de téléchargement.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="359"/>
<location filename="../../NUSGet.py" line="565"/>
<location filename="../../NUSGet.py" line="422"/>
<location filename="../../NUSGet.py" line="628"/>
<source>Invalid Download Directory</source>
<translation>Dossier de téléchargement invalide</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="360"/>
<location filename="../../NUSGet.py" line="423"/>
<source>The specified download directory does not exist!</source>
<translation>Le dossier de téléchargement choisi n&apos;existe pas !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="363"/>
<location filename="../../NUSGet.py" line="426"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation>Assurez-vous que votre dossier de téléchargement existe, et que vous avez les droits suffisants pour y accéder.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<location filename="../../NUSGet.py" line="456"/>
<source>Invalid Title ID</source>
<translation>ID de titre invalide</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="394"/>
<location filename="../../NUSGet.py" line="457"/>
<source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>&lt;b&gt;L&apos;ID de titre que vous avez saisi a un format invalide !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<location filename="../../NUSGet.py" line="462"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation>&lt;b&gt;Aucun titre trouvé pour l&apos;ID ou la version fourni !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="404"/>
<location filename="../../NUSGet.py" line="467"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation>&lt;b&gt;Le décryptage du contenu a échoué ! Le contenu décrypté ne peut être créé.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="411"/>
<location filename="../../NUSGet.py" line="474"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation>&lt;b&gt;Aucun billet disponible pour le titre demandé !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="417"/>
<location filename="../../NUSGet.py" line="480"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation>&lt;b&gt;Une erreur inconnue est survenue !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="439"/>
<location filename="../../NUSGet.py" line="502"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation>&lt;b&gt;Des erreurs sont survenues pendant l&apos;exécution du script de téléchargement.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="489"/>
<location filename="../../NUSGet.py" line="552"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation>&lt;b&gt;Une erreur est survenue pendant la lecture du script !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="500"/>
<location filename="../../NUSGet.py" line="563"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation>&lt;b&gt;Une erreur est survenue à la lecture d&apos;un ID de titre !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="661"/>
<location filename="../../NUSGet.py" line="671"/>
<source>Restart Required</source>
<translation>Redémarrage requis</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="662"/>
<source>NUSGet must be restarted for the selected language to take effect.</source>
<translation>NUSGet doit redémarrer pour appliquer la langue choisie.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="672"/>
<source>NUSGet must be restarted for the selected theme to take effect.</source>
<translation>NUSGet doit redémarrer pour appliquer le thème choisi.</translation>
</message>
<message>
<source>The Title ID you have entered is not in a valid format!</source>
<translation type="vanished">L&apos;ID de titre que vous avez saisi a un format invalide !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="396"/>
<location filename="../../NUSGet.py" line="459"/>
<source>Title IDs must be 16 digit strings of numbers and letters. Please enter a correctly formatted Title ID, or select one from the menu on the left.</source>
<translation>Les ID de titre doivent être composés de 16 caractères alphanumériques. Veuillez saisir un ID formaté correctement, ou sélectionnez-en un depuis le menu de gauche.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="398"/>
<location filename="../../NUSGet.py" line="461"/>
<source>Title ID/Version Not Found</source>
<translation>ID de titre / Version introuvable</translation>
</message>
@ -226,12 +242,12 @@ Les titres seront téléchargés dans un dossier &quot;NUSGet Downloads&quot;,
<translation type="vanished">Aucun titre trouvé pour l&apos;ID ou la version fourni !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="401"/>
<location filename="../../NUSGet.py" line="464"/>
<source>Please make sure that you have entered a valid Title ID, or selected one from the title database, and that the provided version exists for the title you are attempting to download.</source>
<translation>Veuillez vous assurez que vous avez saisi un ID valide, ou sélectionnez-en un depuis la base de données, et que la version fournie existe pour le titre que vous souhaitez télécharger.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="403"/>
<location filename="../../NUSGet.py" line="466"/>
<source>Content Decryption Failed</source>
<translation>Échec du décryptage</translation>
</message>
@ -240,12 +256,12 @@ Les titres seront téléchargés dans un dossier &quot;NUSGet Downloads&quot;,
<translation type="vanished">Le décryptage du contenu a échoué ! Le contenu décrypté ne peut être créé.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="407"/>
<location filename="../../NUSGet.py" line="470"/>
<source>Your TMD or Ticket may be damaged, or they may not correspond with the content being decrypted. If you have checked &quot;Use local files, if they exist&quot;, try disabling that option before trying the download again to fix potential issues with local data.</source>
<translation>Vos métadonnées (TMD) ou le billet sont probablement endommagés, ou ils ne correspondent pas au contenu décrypté. Si vous avez coché &quot;Utiliser des fichiers locaux, s&apos;ils existent&quot;, essayez de désactiver cette option avant d&apos;essayer à nouveau pour résoudre les éventuelles erreurs avec les données locales.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="410"/>
<location filename="../../NUSGet.py" line="473"/>
<source>Ticket Not Available</source>
<translation>Billet indisponible</translation>
</message>
@ -254,12 +270,12 @@ Les titres seront téléchargés dans un dossier &quot;NUSGet Downloads&quot;,
<translation type="vanished">Aucun billet disponible pour le titre demandé !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="414"/>
<location filename="../../NUSGet.py" line="477"/>
<source>A ticket could not be downloaded for the requested title, but you have selected &quot;Pack installable archive&quot; or &quot;Create decrypted contents&quot;. These options are not available for titles without a ticket. Only encrypted contents have been saved.</source>
<translation>Un billet ne peut être téléchargé pour le titre demandé, mais vous avez sélectionné &quot;Empaqueter une archive d&apos;installation&quot; ou &quot;Décrypter le contenu&quot;. Ces options sont indisponibles pour les titres sans billet. Seul le contenu crypté a é enregistré.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="416"/>
<location filename="../../NUSGet.py" line="479"/>
<source>Unknown Error</source>
<translation>Erreur inconnue</translation>
</message>
@ -268,12 +284,12 @@ Les titres seront téléchargés dans un dossier &quot;NUSGet Downloads&quot;,
<translation type="vanished">Une erreur inconnue est survenue !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="419"/>
<location filename="../../NUSGet.py" line="482"/>
<source>Please try again. If this issue persists, please open a new issue on GitHub detailing what you were trying to do when this error occurred.</source>
<translation>Veuillez essayer à nouveau. Si le problème persiste, déclarez un problème sur GitHub en décrivant les actions qui ont provoqué l&apos;erreur.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="438"/>
<location filename="../../NUSGet.py" line="501"/>
<source>Script Issues Occurred</source>
<translation>Erreurs survenues dans le script</translation>
</message>
@ -282,32 +298,32 @@ Les titres seront téléchargés dans un dossier &quot;NUSGet Downloads&quot;,
<translation type="vanished">Des erreurs sont survenues pendant l&apos;exécution du script de téléchargement.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="441"/>
<location filename="../../NUSGet.py" line="504"/>
<source>Check the log for more details about what issues were encountered.</source>
<translation>Vérifiez le journal pour plus de détails à propos des erreurs rencontrées.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="448"/>
<location filename="../../NUSGet.py" line="511"/>
<source>The following titles could not be downloaded due to an error. Please ensure that the Title ID and version listed in the script are valid.</source>
<translation>Le téléchargement des titres suivants a échoué. Assurez-vous que les ID de titre et version du script soient valides.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="458"/>
<location filename="../../NUSGet.py" line="521"/>
<source>You enabled &quot;Create decrypted contents&quot; or &quot;Pack installable archive&quot;, but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
<translation>Vous avez activé &quot;Décrypter le contenu&quot; ou &quot;Empaqueter une archive d&apos;installation&quot;, mais les billets des titres suivants sont indisponibles. Si activé(s), le contenu crypté a é téléchargé.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="477"/>
<location filename="../../NUSGet.py" line="540"/>
<source>Script Download Failed</source>
<translation>Échec du script de téléchargement</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="478"/>
<location filename="../../NUSGet.py" line="541"/>
<source>Open NUS Script</source>
<translation>Ouvrir un script NUS</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="479"/>
<location filename="../../NUSGet.py" line="542"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>Scripts NUS (*.nus *.json)</translation>
</message>
@ -316,7 +332,7 @@ Les titres seront téléchargés dans un dossier &quot;NUSGet Downloads&quot;,
<translation type="vanished">Une erreur est survenue pendant la lecture du script !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="491"/>
<location filename="../../NUSGet.py" line="554"/>
<source>Error encountered at line {lineno}, column {colno}. Please double-check the script and try again.</source>
<translation>Erreur recontrée ligne {lineno}, colonne {colno}. Vérifiez le script et réessayez.</translation>
</message>
@ -325,22 +341,22 @@ Les titres seront téléchargés dans un dossier &quot;NUSGet Downloads&quot;,
<translation type="vanished">Une erreur est survenue à la lecture d&apos;un ID de titre !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="502"/>
<location filename="../../NUSGet.py" line="565"/>
<source>The title at index {index} does not have a Title ID!</source>
<translation>Le titre à l&apos;index {index} n&apos;a pas d&apos;ID !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="555"/>
<location filename="../../NUSGet.py" line="618"/>
<source>Open Directory</source>
<translation>Ouvrir un dossier</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="566"/>
<location filename="../../NUSGet.py" line="629"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation>&lt;b&gt;Le dossier de téléchargement choisi n&apos;existe pas !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="569"/>
<location filename="../../NUSGet.py" line="632"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation>Assurez-vous que votre dossier de téléchargement existe, et que vous avez les droits suffisants pour y accéder.</translation>
</message>
@ -422,12 +438,43 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="471"/>
<location filename="../../qt/ui/MainMenu.ui" line="485"/>
<source>Options</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="489"/>
<source>Language</source>
<translation>Langue</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="503"/>
<source>Theme</source>
<translation>Thème</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="520"/>
<source>About NUSGet</source>
<translation>À propos de NUSGet</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="167"/>
<location filename="../../qt/ui/MainMenu.ui" line="545"/>
<location filename="../../qt/ui/MainMenu.ui" line="617"/>
<source>System (Default)</source>
<translation>Système (par défaut)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="625"/>
<source>Light</source>
<translation>Clair</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="633"/>
<source>Dark</source>
<translation>Sombre</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="218"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Empaqueter une archive d&apos;installation (WAD / TAD)</translation>
</message>
@ -437,17 +484,17 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Nom du fichier</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="169"/>
<location filename="../../NUSGet.py" line="220"/>
<source>Keep encrypted contents</source>
<translation>Conserver le contenu crypté</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="171"/>
<location filename="../../NUSGet.py" line="222"/>
<source>Create decrypted contents (*.app)</source>
<translation>Décrypter le contenu (*.app)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="172"/>
<location filename="../../NUSGet.py" line="223"/>
<source>Use local files, if they exist</source>
<translation>Utiliser des fichiers locaux, s&apos;ils existent</translation>
</message>
@ -456,7 +503,7 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation type="vanished">Utiliser le NUS Wii U (plus rapide, n&apos;affecte que Wii / vWii)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="175"/>
<location filename="../../NUSGet.py" line="226"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Appliquer des modifications aux IOS (WAD uniquement)</translation>
</message>
@ -466,7 +513,7 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Titres vWii</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="176"/>
<location filename="../../NUSGet.py" line="227"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Encrypter le titre avec la clé commune Wii</translation>
</message>
@ -476,12 +523,12 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Paramètres</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="177"/>
<location filename="../../NUSGet.py" line="228"/>
<source>Check for updates on startup</source>
<translation>Vérifier les mises à jour au démarrage</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="178"/>
<location filename="../../NUSGet.py" line="229"/>
<source>Use a custom download directory</source>
<translation>Utiliser un dossier de téléchargement différent</translation>
</message>
@ -491,12 +538,12 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Choisir</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="458"/>
<location filename="../../qt/ui/MainMenu.ui" line="477"/>
<source>Help</source>
<translation>Aide</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="482"/>
<location filename="../../qt/ui/MainMenu.ui" line="531"/>
<source>About Qt</source>
<translation>À propos de Qt</translation>
</message>
@ -506,7 +553,7 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Dossier de téléchargement</translation>
</message>
<message>
<location filename="../../modules/core.py" line="68"/>
<location filename="../../modules/core.py" line="74"/>
<source>
Could not check for updates.</source>
@ -515,7 +562,7 @@ Could not check for updates.</source>
Impossible de vérifier les mises à jour.</translation>
</message>
<message>
<location filename="../../modules/core.py" line="78"/>
<location filename="../../modules/core.py" line="84"/>
<source>
There&apos;s a newer version of NUSGet available!</source>
@ -524,7 +571,7 @@ There&apos;s a newer version of NUSGet available!</source>
Une nouvelle version de NUSGet est disponible !</translation>
</message>
<message>
<location filename="../../modules/core.py" line="80"/>
<location filename="../../modules/core.py" line="86"/>
<source>
You&apos;re running the latest release of NUSGet.</source>

View File

@ -9,67 +9,67 @@
<translation>Info su NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="33"/>
<source>NUSGet</source>
<translation>NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="38"/>
<source>Version {nusget_version}</source>
<translation>Versione {nusget_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="44"/>
<source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
<translation>Versione libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="49"/>
<source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
<translation>© 2024-2025 NinjaCheetah &amp; Contributori</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="65"/>
<source>View Project on GitHub</source>
<translation>Vedi il progetto su GitHub</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="81"/>
<source>Translations</source>
<translation>Traduzioni</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="89"/>
<source>French (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</source>
<translation>Francese (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="91"/>
<source>German (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</source>
<translation>Tedesco (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>Italian (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</source>
<translation>Italiano: &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="95"/>
<source>Korean (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</source>
<translation>Coreano (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="97"/>
<source>Norwegian (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</source>
<translation>Norvegese (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="148"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="99"/>
<source>Romanian (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</source>
<translation>Rumeno (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="150"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="101"/>
<source>Spanish (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</source>
<translation>Spagnolo (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</translation>
</message>
@ -146,12 +146,43 @@
<translation>Impostazioni generali</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="471"/>
<location filename="../../qt/ui/MainMenu.ui" line="485"/>
<source>Options</source>
<translation>Opzioni</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="489"/>
<source>Language</source>
<translation>Lingua</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="503"/>
<source>Theme</source>
<translation>Tema</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="520"/>
<source>About NUSGet</source>
<translation>Info su NUSGet</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="167"/>
<location filename="../../qt/ui/MainMenu.ui" line="545"/>
<location filename="../../qt/ui/MainMenu.ui" line="617"/>
<source>System (Default)</source>
<translation>Sistema (Default)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="625"/>
<source>Light</source>
<translation>Chiaro</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="633"/>
<source>Dark</source>
<translation>Scuro</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="218"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Archivio installabile (WAD/TAD)</translation>
</message>
@ -161,17 +192,17 @@
<translation>Nome del file</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="169"/>
<location filename="../../NUSGet.py" line="220"/>
<source>Keep encrypted contents</source>
<translation>Mantieni contenuti criptati</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="171"/>
<location filename="../../NUSGet.py" line="222"/>
<source>Create decrypted contents (*.app)</source>
<translation>Crea contenuto decriptato (*.app)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="172"/>
<location filename="../../NUSGet.py" line="223"/>
<source>Use local files, if they exist</source>
<translation>Usa file locali, se esistenti</translation>
</message>
@ -185,7 +216,7 @@
<translation>Impostazioni titoli vWii</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="176"/>
<location filename="../../NUSGet.py" line="227"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Cripta titolo usando la Chiave Comune Wii</translation>
</message>
@ -195,12 +226,12 @@
<translation>Impostazioni app</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="177"/>
<location filename="../../NUSGet.py" line="228"/>
<source>Check for updates on startup</source>
<translation>Controlla aggiornamenti all&apos;avvio</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="178"/>
<location filename="../../NUSGet.py" line="229"/>
<source>Use a custom download directory</source>
<translation>Usa una cartella di download personalizzata</translation>
</message>
@ -229,12 +260,12 @@ li.checked::marker { content: &quot;\2612&quot;; }
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="458"/>
<location filename="../../qt/ui/MainMenu.ui" line="477"/>
<source>Help</source>
<translation>Aiuto</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="482"/>
<location filename="../../qt/ui/MainMenu.ui" line="531"/>
<source>About Qt</source>
<translation>Info su Qt</translation>
</message>
@ -309,102 +340,118 @@ I titoli marcati da una spunta sono disponibili e hanno un ticket libero, e poss
Per impostazione predefinita, i titoli verranno scaricati nella cartella &quot;NUSGet Downloads&quot; all&apos;interno della cartella Download.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="173"/>
<location filename="../../NUSGet.py" line="224"/>
<source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Usa il NUS di Wii U (più veloce, influisce solo su Wii/vWii)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="243"/>
<location filename="../../NUSGet.py" line="306"/>
<source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation>&lt;b&gt;È disponibile una nuova versione di NUSGet!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="344"/>
<location filename="../../NUSGet.py" line="407"/>
<source>No Output Selected</source>
<translation>Nessun output selezionato</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="345"/>
<location filename="../../NUSGet.py" line="408"/>
<source>You have not selected any format to output the data in!</source>
<translation>Non hai selezionato alcun formato in cui esportare i dati!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="347"/>
<location filename="../../NUSGet.py" line="410"/>
<source>Please select at least one option for how you would like the download to be saved.</source>
<translation>Per favore scegli almeno un opzione per come vorresti che fosse salvato il download.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="359"/>
<location filename="../../NUSGet.py" line="565"/>
<location filename="../../NUSGet.py" line="422"/>
<location filename="../../NUSGet.py" line="628"/>
<source>Invalid Download Directory</source>
<translation>Cartella di download non valida</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="360"/>
<location filename="../../NUSGet.py" line="423"/>
<source>The specified download directory does not exist!</source>
<translation>La cartella di download specificata non esiste!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="363"/>
<location filename="../../NUSGet.py" line="426"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation>Assicurati che la cartella di download specificata esista e che tu abbia i permessi per accedervi.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<location filename="../../NUSGet.py" line="456"/>
<source>Invalid Title ID</source>
<translation>ID Titolo invalido</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="394"/>
<location filename="../../NUSGet.py" line="457"/>
<source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>&lt;b&gt;L&apos;ID Titolo che hai inserito non è in un formato valido!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="396"/>
<location filename="../../NUSGet.py" line="459"/>
<source>Title IDs must be 16 digit strings of numbers and letters. Please enter a correctly formatted Title ID, or select one from the menu on the left.</source>
<translation type="unfinished"></translation>
<translation>Gli ID del titolo devono essere costituiti da stringhe di 16 cifre di numeri e lettere. Inserire un ID titolo formattato correttamente o selezionarne uno dal menu a sinistra.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<location filename="../../NUSGet.py" line="462"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation>&lt;b&gt;Non è stato trovato alcun titolo con l&apos;ID Titolo o la versione forniti!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="404"/>
<location filename="../../NUSGet.py" line="467"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation>&lt;b&gt;La decriptazione dei contenuti non è riuscita! Non è stato possibile creare i contenuti decriptati.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="411"/>
<location filename="../../NUSGet.py" line="474"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation>&lt;b&gt;Nessun ticket disponibile per il titolo richiesto!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="417"/>
<location filename="../../NUSGet.py" line="480"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation>&lt;b&gt;Si è verificato un errore sconosciuto!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="439"/>
<location filename="../../NUSGet.py" line="502"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation>&lt;b&gt;Si sono verificati alcuni problemi durante l&apos;esecuzione dello script di download.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="489"/>
<location filename="../../NUSGet.py" line="552"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation>&lt;b&gt;Si è verificato un errore durante l&apos;analisi del file script!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="500"/>
<location filename="../../NUSGet.py" line="563"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation>&lt;b&gt;Si è verificato un errore durante l&apos;analisi degli ID Titolo!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="661"/>
<location filename="../../NUSGet.py" line="671"/>
<source>Restart Required</source>
<translation>Riavvio necessario</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="662"/>
<source>NUSGet must be restarted for the selected language to take effect.</source>
<translation>NUSGet ha bisogno di essere riavviato per poter cambiare la lingua.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="672"/>
<source>NUSGet must be restarted for the selected theme to take effect.</source>
<translation>NUSGet ha bisogno di essere riavviato per poter cambiare il tema.</translation>
</message>
<message>
<source>The Title ID you have entered is not in a valid format!</source>
<translation type="vanished">L&apos; ID Titolo che hai inserito non è in un formato valido!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="398"/>
<location filename="../../NUSGet.py" line="461"/>
<source>Title ID/Version Not Found</source>
<translation>ID Titolo/Versione non trovata</translation>
</message>
@ -413,12 +460,12 @@ Per impostazione predefinita, i titoli verranno scaricati nella cartella &quot;N
<translation type="vanished">Non è stato trovato nessun titolo con l&apos; ID Titolo o versione data!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="401"/>
<location filename="../../NUSGet.py" line="464"/>
<source>Please make sure that you have entered a valid Title ID, or selected one from the title database, and that the provided version exists for the title you are attempting to download.</source>
<translation>Assicurati di aver inserito un&apos; ID Titolo valido, o scegline uno dal database, e che la versione richiesta esista per il titolo che vuoi scaricare.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="403"/>
<location filename="../../NUSGet.py" line="466"/>
<source>Content Decryption Failed</source>
<translation>Decriptazione contenuti fallita</translation>
</message>
@ -427,12 +474,12 @@ Per impostazione predefinita, i titoli verranno scaricati nella cartella &quot;N
<translation type="vanished">La decriptazione dei contenuti non è andata a buon fine! I contenuti decriptadi non sono stati creati.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="407"/>
<location filename="../../NUSGet.py" line="470"/>
<source>Your TMD or Ticket may be damaged, or they may not correspond with the content being decrypted. If you have checked &quot;Use local files, if they exist&quot;, try disabling that option before trying the download again to fix potential issues with local data.</source>
<translation>Il tuo TMD o Ticket potrebbe essere danneggiato, o potrebbe non corrispondere col contenuto da decriptare. Se hai selezionato &quot;Usa file locali, se esistenti&quot;, prova a disabilitare quell&apos;opzione prima di riprovare a scaricare per aggiustare potenziali errori coi dati locali.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="410"/>
<location filename="../../NUSGet.py" line="473"/>
<source>Ticket Not Available</source>
<translation>Ticket non disponibile</translation>
</message>
@ -441,12 +488,12 @@ Per impostazione predefinita, i titoli verranno scaricati nella cartella &quot;N
<translation type="vanished">Nessun ticket disponibile per il titolo richiesto!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="414"/>
<location filename="../../NUSGet.py" line="477"/>
<source>A ticket could not be downloaded for the requested title, but you have selected &quot;Pack installable archive&quot; or &quot;Create decrypted contents&quot;. These options are not available for titles without a ticket. Only encrypted contents have been saved.</source>
<translation>Non è stato possibile scaricare un ticket per il titolo richiesto, ma hai selezionato &quot;Crea archivio installabile&quot; o &quot;Crea contenuto decriptato&quot;. Queste opzioni non sono disponibili per i titoli senza un ticket. Sono stati salvati solo i contenuti criptati.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="416"/>
<location filename="../../NUSGet.py" line="479"/>
<source>Unknown Error</source>
<translation>Errore sconosciuto</translation>
</message>
@ -455,12 +502,12 @@ Per impostazione predefinita, i titoli verranno scaricati nella cartella &quot;N
<translation type="vanished">Errore sconosciuto!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="419"/>
<location filename="../../NUSGet.py" line="482"/>
<source>Please try again. If this issue persists, please open a new issue on GitHub detailing what you were trying to do when this error occurred.</source>
<translation>Per favore riprova. Se il problema persiste, apri un issue su GitHub specificando in modo dettagliato cosa volevi fare quando è comparso questo errore.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="438"/>
<location filename="../../NUSGet.py" line="501"/>
<source>Script Issues Occurred</source>
<translation>Errore script</translation>
</message>
@ -469,32 +516,32 @@ Per impostazione predefinita, i titoli verranno scaricati nella cartella &quot;N
<translation type="vanished">Ci sono stati degli errori con lo script di download.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="441"/>
<location filename="../../NUSGet.py" line="504"/>
<source>Check the log for more details about what issues were encountered.</source>
<translation>Guarda i log per più dettagli sull&apos;errore.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="448"/>
<location filename="../../NUSGet.py" line="511"/>
<source>The following titles could not be downloaded due to an error. Please ensure that the Title ID and version listed in the script are valid.</source>
<translation>I seguenti titoli non sono stati scaricati a causa di un errore. Controlla che l&apos;ID Titolo e la versione nello script siano validi.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="458"/>
<location filename="../../NUSGet.py" line="521"/>
<source>You enabled &quot;Create decrypted contents&quot; or &quot;Pack installable archive&quot;, but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
<translation>Hai abilitato &quot;Crea contenuto decriptato&quot; o &quot;Archivio installabile&quot;, ma i seguenti titoli nello script non hanno ticket disponibili. Se abilitati, i contenuti criptati sono stati comunque scaricati.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="477"/>
<location filename="../../NUSGet.py" line="540"/>
<source>Script Download Failed</source>
<translation>Download script fallito</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="478"/>
<location filename="../../NUSGet.py" line="541"/>
<source>Open NUS Script</source>
<translation>Apri script NUS</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="479"/>
<location filename="../../NUSGet.py" line="542"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>Scrpit NUS (*.nus *.txt)</translation>
</message>
@ -503,7 +550,7 @@ Per impostazione predefinita, i titoli verranno scaricati nella cartella &quot;N
<translation type="vanished">Ci sono stati degli errori con lo script di download!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="491"/>
<location filename="../../NUSGet.py" line="554"/>
<source>Error encountered at line {lineno}, column {colno}. Please double-check the script and try again.</source>
<translation>Errore riscontrato alla riga {lineno}, colonna {colno}. Controlla nuovamente lo script e riprova.</translation>
</message>
@ -512,22 +559,22 @@ Per impostazione predefinita, i titoli verranno scaricati nella cartella &quot;N
<translation type="vanished">Ci sono stati degli errori con GLI id tITOLO!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="502"/>
<location filename="../../NUSGet.py" line="565"/>
<source>The title at index {index} does not have a Title ID!</source>
<translation>Il titolo all&apos;indice {index} non ha un ID Titolo!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="555"/>
<location filename="../../NUSGet.py" line="618"/>
<source>Open Directory</source>
<translation>Apri cartella</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="566"/>
<location filename="../../NUSGet.py" line="629"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation>&lt;b&gt;La cartella di download specificata non esiste!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="569"/>
<location filename="../../NUSGet.py" line="632"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation>Assicurati che la cartella di download che desideri utilizzare esista e che tu abbia i permessi per accedervi.</translation>
</message>
@ -569,12 +616,12 @@ I titoli marcati da una spunta sono disponibili e hanno un ticket libero, e poss
I titoli verranno scaricati nella cartella &quot;NUSGet&quot; all&apos;interno della cartella Download.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="175"/>
<location filename="../../NUSGet.py" line="226"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Applica patch agli IOS (Solo per le WAD)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="242"/>
<location filename="../../NUSGet.py" line="305"/>
<source>NUSGet Update Available</source>
<translation>Aggiornamento di NUSGet disponibile</translation>
</message>
@ -583,21 +630,21 @@ I titoli verranno scaricati nella cartella &quot;NUSGet&quot; all&apos;interno d
<translation type="vanished">Una nuova versione di NUSGet è disponibile!</translation>
</message>
<message>
<location filename="../../modules/core.py" line="68"/>
<location filename="../../modules/core.py" line="74"/>
<source>
Could not check for updates.</source>
<translation>Impossibile trovare eventuali aggiornamenti.</translation>
</message>
<message>
<location filename="../../modules/core.py" line="78"/>
<location filename="../../modules/core.py" line="84"/>
<source>
There&apos;s a newer version of NUSGet available!</source>
<translation>Una nuova versione di NUSGet è disponibile!</translation>
</message>
<message>
<location filename="../../modules/core.py" line="80"/>
<location filename="../../modules/core.py" line="86"/>
<source>
You&apos;re running the latest release of NUSGet.</source>

View File

@ -9,67 +9,67 @@
<translation>NUSGet </translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="33"/>
<source>NUSGet</source>
<translation>NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="38"/>
<source>Version {nusget_version}</source>
<translation> {nusget_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="44"/>
<source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
<translation>libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version} </translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="49"/>
<source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
<translation>© 2024-2025 NinjaCheetah &amp; </translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="65"/>
<source>View Project on GitHub</source>
<translation>GitHub에서 </translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="81"/>
<source>Translations</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="89"/>
<source>French (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</source>
<translation> (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="91"/>
<source>German (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</source>
<translation> (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>Italian (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</source>
<translation> (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="95"/>
<source>Korean (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</source>
<translation>: &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="97"/>
<source>Norwegian (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</source>
<translation> (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="148"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="99"/>
<source>Romanian (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</source>
<translation> (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="150"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="101"/>
<source>Spanish (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</source>
<translation> (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</translation>
</message>
@ -146,12 +146,43 @@
<translation> </translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="471"/>
<location filename="../../qt/ui/MainMenu.ui" line="485"/>
<source>Options</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="489"/>
<source>Language</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="503"/>
<source>Theme</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="520"/>
<source>About NUSGet</source>
<translation>NUSGet </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="167"/>
<location filename="../../qt/ui/MainMenu.ui" line="545"/>
<location filename="../../qt/ui/MainMenu.ui" line="617"/>
<source>System (Default)</source>
<translation> ()</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="625"/>
<source>Light</source>
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="633"/>
<source>Dark</source>
<translation></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="218"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation> (WAD/TAD) </translation>
</message>
@ -161,17 +192,17 @@
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="169"/>
<location filename="../../NUSGet.py" line="220"/>
<source>Keep encrypted contents</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="171"/>
<location filename="../../NUSGet.py" line="222"/>
<source>Create decrypted contents (*.app)</source>
<translation> (*.app) </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="172"/>
<location filename="../../NUSGet.py" line="223"/>
<source>Use local files, if they exist</source>
<translation> </translation>
</message>
@ -185,7 +216,7 @@
<translation>vWii </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="176"/>
<location filename="../../NUSGet.py" line="227"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Wii </translation>
</message>
@ -195,12 +226,12 @@
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="177"/>
<location filename="../../NUSGet.py" line="228"/>
<source>Check for updates on startup</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="178"/>
<location filename="../../NUSGet.py" line="229"/>
<source>Use a custom download directory</source>
<translation> </translation>
</message>
@ -222,7 +253,7 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="458"/>
<location filename="../../qt/ui/MainMenu.ui" line="477"/>
<source>Help</source>
<translation></translation>
</message>
@ -231,7 +262,7 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation type="vanished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="482"/>
<location filename="../../qt/ui/MainMenu.ui" line="531"/>
<source>About Qt</source>
<translation>Qt </translation>
</message>
@ -306,102 +337,118 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
&quot;NUSBet Downloads&quot; .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="173"/>
<location filename="../../NUSGet.py" line="224"/>
<source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Wii U NUS ( Wii/vWii에만 )</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="243"/>
<location filename="../../NUSGet.py" line="306"/>
<source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation>&lt;b&gt;NUSGet의 !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="344"/>
<location filename="../../NUSGet.py" line="407"/>
<source>No Output Selected</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="345"/>
<location filename="../../NUSGet.py" line="408"/>
<source>You have not selected any format to output the data in!</source>
<translation> !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="347"/>
<location filename="../../NUSGet.py" line="410"/>
<source>Please select at least one option for how you would like the download to be saved.</source>
<translation> .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="359"/>
<location filename="../../NUSGet.py" line="565"/>
<location filename="../../NUSGet.py" line="422"/>
<location filename="../../NUSGet.py" line="628"/>
<source>Invalid Download Directory</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="360"/>
<location filename="../../NUSGet.py" line="423"/>
<source>The specified download directory does not exist!</source>
<translation> !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="363"/>
<location filename="../../NUSGet.py" line="426"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation> , .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<location filename="../../NUSGet.py" line="456"/>
<source>Invalid Title ID</source>
<translation> ID</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="394"/>
<location filename="../../NUSGet.py" line="457"/>
<source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>&lt;b&gt; ID의 !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<location filename="../../NUSGet.py" line="462"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation>&lt;b&gt; ID !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="404"/>
<location filename="../../NUSGet.py" line="467"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation>&lt;b&gt; ! .&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="411"/>
<location filename="../../NUSGet.py" line="474"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation>&lt;b&gt; !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="417"/>
<location filename="../../NUSGet.py" line="480"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation>&lt;b&gt; !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="439"/>
<location filename="../../NUSGet.py" line="502"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation>&lt;b&gt; .&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="489"/>
<location filename="../../NUSGet.py" line="552"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation>&lt;b&gt; !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="500"/>
<location filename="../../NUSGet.py" line="563"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation>&lt;b&gt; ID를 !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="661"/>
<location filename="../../NUSGet.py" line="671"/>
<source>Restart Required</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="662"/>
<source>NUSGet must be restarted for the selected language to take effect.</source>
<translation> NUSGet을 .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="672"/>
<source>NUSGet must be restarted for the selected theme to take effect.</source>
<translation> NUSGet을 .</translation>
</message>
<message>
<source>The Title ID you have entered is not in a valid format!</source>
<translation type="vanished"> ID의 !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="396"/>
<location filename="../../NUSGet.py" line="459"/>
<source>Title IDs must be 16 digit strings of numbers and letters. Please enter a correctly formatted Title ID, or select one from the menu on the left.</source>
<translation> ID는 16 . ID를 .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="398"/>
<location filename="../../NUSGet.py" line="461"/>
<source>Title ID/Version Not Found</source>
<translation> ID/ </translation>
</message>
@ -410,12 +457,12 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> ID !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="401"/>
<location filename="../../NUSGet.py" line="464"/>
<source>Please make sure that you have entered a valid Title ID, or selected one from the title database, and that the provided version exists for the title you are attempting to download.</source>
<translation> ID를 , .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="403"/>
<location filename="../../NUSGet.py" line="466"/>
<source>Content Decryption Failed</source>
<translation> </translation>
</message>
@ -424,12 +471,12 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> ! .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="407"/>
<location filename="../../NUSGet.py" line="470"/>
<source>Your TMD or Ticket may be damaged, or they may not correspond with the content being decrypted. If you have checked &quot;Use local files, if they exist&quot;, try disabling that option before trying the download again to fix potential issues with local data.</source>
<translation>TMD . &quot; &quot; , .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="410"/>
<location filename="../../NUSGet.py" line="473"/>
<source>Ticket Not Available</source>
<translation> </translation>
</message>
@ -438,12 +485,12 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="414"/>
<location filename="../../NUSGet.py" line="477"/>
<source>A ticket could not be downloaded for the requested title, but you have selected &quot;Pack installable archive&quot; or &quot;Create decrypted contents&quot;. These options are not available for titles without a ticket. Only encrypted contents have been saved.</source>
<translation> &quot; &quot; &quot; &quot; . . .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="416"/>
<location filename="../../NUSGet.py" line="479"/>
<source>Unknown Error</source>
<translation> </translation>
</message>
@ -452,12 +499,12 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="419"/>
<location filename="../../NUSGet.py" line="482"/>
<source>Please try again. If this issue persists, please open a new issue on GitHub detailing what you were trying to do when this error occurred.</source>
<translation> . GitHub에서 .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="438"/>
<location filename="../../NUSGet.py" line="501"/>
<source>Script Issues Occurred</source>
<translation> </translation>
</message>
@ -466,32 +513,32 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="441"/>
<location filename="../../NUSGet.py" line="504"/>
<source>Check the log for more details about what issues were encountered.</source>
<translation> .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="448"/>
<location filename="../../NUSGet.py" line="511"/>
<source>The following titles could not be downloaded due to an error. Please ensure that the Title ID and version listed in the script are valid.</source>
<translation> . ID와 .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="458"/>
<location filename="../../NUSGet.py" line="521"/>
<source>You enabled &quot;Create decrypted contents&quot; or &quot;Pack installable archive&quot;, but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
<translation>&quot; &quot; &quot; &quot; . .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="477"/>
<location filename="../../NUSGet.py" line="540"/>
<source>Script Download Failed</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="478"/>
<location filename="../../NUSGet.py" line="541"/>
<source>Open NUS Script</source>
<translation>NUS </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="479"/>
<location filename="../../NUSGet.py" line="542"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>NUS (*.nus *.json)</translation>
</message>
@ -500,7 +547,7 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="491"/>
<location filename="../../NUSGet.py" line="554"/>
<source>Error encountered at line {lineno}, column {colno}. Please double-check the script and try again.</source>
<translation>{lineno} , {colno} . .</translation>
</message>
@ -509,22 +556,22 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="vanished"> ID를 !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="502"/>
<location filename="../../NUSGet.py" line="565"/>
<source>The title at index {index} does not have a Title ID!</source>
<translation>{index} ID가 !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="555"/>
<location filename="../../NUSGet.py" line="618"/>
<source>Open Directory</source>
<translation> </translation>
</message>
<message>
<location filename="../../NUSGet.py" line="566"/>
<location filename="../../NUSGet.py" line="629"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation>&lt;b&gt; !&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="569"/>
<location filename="../../NUSGet.py" line="632"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation> , .</translation>
</message>
@ -567,12 +614,12 @@ DSi 지원 : libTWLPy {libtwlpy_version}에서 제공
&quot;NUSBet&quot; .</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="175"/>
<location filename="../../NUSGet.py" line="226"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>IOS에 (WAD에만 )</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="242"/>
<location filename="../../NUSGet.py" line="305"/>
<source>NUSGet Update Available</source>
<translation>NUSGet </translation>
</message>
@ -581,7 +628,7 @@ DSi 지원 : libTWLPy {libtwlpy_version}에서 제공
<translation type="vanished">NUSBet의 !</translation>
</message>
<message>
<location filename="../../modules/core.py" line="68"/>
<location filename="../../modules/core.py" line="74"/>
<source>
Could not check for updates.</source>
@ -590,7 +637,7 @@ Could not check for updates.</source>
.</translation>
</message>
<message>
<location filename="../../modules/core.py" line="78"/>
<location filename="../../modules/core.py" line="84"/>
<source>
There&apos;s a newer version of NUSGet available!</source>
@ -599,7 +646,7 @@ There&apos;s a newer version of NUSGet available!</source>
NUSBet의 !</translation>
</message>
<message>
<location filename="../../modules/core.py" line="80"/>
<location filename="../../modules/core.py" line="86"/>
<source>
You&apos;re running the latest release of NUSGet.</source>

View File

@ -9,67 +9,67 @@
<translation>Om NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="33"/>
<source>NUSGet</source>
<translation>NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="38"/>
<source>Version {nusget_version}</source>
<translation>Versjon {nusget_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="44"/>
<source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
<translation>Bruker libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="49"/>
<source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
<translation>© 2024-2025 NinjaCheetah &amp; Contributors</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="65"/>
<source>View Project on GitHub</source>
<translation>Se Prosjektet GitHub</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="81"/>
<source>Translations</source>
<translation>Oversettelser</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="89"/>
<source>French (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</source>
<translation>Fransk (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="91"/>
<source>German (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</source>
<translation>Tysk (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>Italian (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</source>
<translation>Italiensk (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="95"/>
<source>Korean (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</source>
<translation>Koreansk (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="97"/>
<source>Norwegian (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</source>
<translation>Norsk (Bokmål): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="148"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="99"/>
<source>Romanian (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</source>
<translation>Rumensk (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="150"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="101"/>
<source>Spanish (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</source>
<translation>Spansk (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</translation>
</message>
@ -146,12 +146,43 @@
<translation>Generelle Instillinger</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="471"/>
<location filename="../../qt/ui/MainMenu.ui" line="485"/>
<source>Options</source>
<translation>Instillinger</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="489"/>
<source>Language</source>
<translation>Språk</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="503"/>
<source>Theme</source>
<translation>Tema</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="520"/>
<source>About NUSGet</source>
<translation>Om NUSGet</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="167"/>
<location filename="../../qt/ui/MainMenu.ui" line="545"/>
<location filename="../../qt/ui/MainMenu.ui" line="617"/>
<source>System (Default)</source>
<translation>System (Standard)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="625"/>
<source>Light</source>
<translation>Lys</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="633"/>
<source>Dark</source>
<translation>Mørk</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="218"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Pakke installerbart arkiv (WAD/TAD)</translation>
</message>
@ -161,17 +192,17 @@
<translation>Filnavn</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="169"/>
<location filename="../../NUSGet.py" line="220"/>
<source>Keep encrypted contents</source>
<translation>Oppbevar kryptert innhold</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="171"/>
<location filename="../../NUSGet.py" line="222"/>
<source>Create decrypted contents (*.app)</source>
<translation>Opprette dekryptert innold (*.app)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="172"/>
<location filename="../../NUSGet.py" line="223"/>
<source>Use local files, if they exist</source>
<translation>Bruk lokale filer, hvis de finnes</translation>
</message>
@ -185,7 +216,7 @@
<translation>vWii Tittelinstillinger</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="176"/>
<location filename="../../NUSGet.py" line="227"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Krypter tittelen nytt ved hjelp av Wii Common Key</translation>
</message>
@ -195,12 +226,12 @@
<translation>Appinstillinger</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="177"/>
<location filename="../../NUSGet.py" line="228"/>
<source>Check for updates on startup</source>
<translation>Sjekk for oppdateringer ved oppstart</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="178"/>
<location filename="../../NUSGet.py" line="229"/>
<source>Use a custom download directory</source>
<translation>Bruke en egendefinert nedlastingsmappe</translation>
</message>
@ -229,12 +260,12 @@ li.checked::marker { content: &quot;\2612&quot;; }
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="458"/>
<location filename="../../qt/ui/MainMenu.ui" line="477"/>
<source>Help</source>
<translation>Hjelp</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="482"/>
<location filename="../../qt/ui/MainMenu.ui" line="531"/>
<source>About Qt</source>
<translation>Om Qt</translation>
</message>
@ -319,97 +350,113 @@ Titler merket med en hake er fri og har en billett tilgjengelig, og kan dekrypte
Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedlastingsmappen din.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="243"/>
<location filename="../../NUSGet.py" line="306"/>
<source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation>&lt;b&gt;Det finnes en nyere versjon av NUSGet tilgjengelig!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="344"/>
<location filename="../../NUSGet.py" line="407"/>
<source>No Output Selected</source>
<translation>Ingen Utgang Valgt</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="345"/>
<location filename="../../NUSGet.py" line="408"/>
<source>You have not selected any format to output the data in!</source>
<translation>Du ikke har valgt noe format å lagre dataene i!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="347"/>
<location filename="../../NUSGet.py" line="410"/>
<source>Please select at least one option for how you would like the download to be saved.</source>
<translation>Velg minst ett valg for hvordan du vil at nedlastingen skal lagres.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="359"/>
<location filename="../../NUSGet.py" line="565"/>
<location filename="../../NUSGet.py" line="422"/>
<location filename="../../NUSGet.py" line="628"/>
<source>Invalid Download Directory</source>
<translation>Ugyldig Nedlastingsmappe</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="360"/>
<location filename="../../NUSGet.py" line="423"/>
<source>The specified download directory does not exist!</source>
<translation>Den angitte nedlastingsmappen finnes ikke!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="363"/>
<location filename="../../NUSGet.py" line="426"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation>Kontroller at den angitte nedlastingsmappen finnes, og at du har tillatelse fil å tilgang til den.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<location filename="../../NUSGet.py" line="456"/>
<source>Invalid Title ID</source>
<translation>Ugyldig Tittel ID</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="394"/>
<location filename="../../NUSGet.py" line="457"/>
<source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>&lt;b&gt;Tittel IDen du har angitt er ikke i et gyldig format!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<location filename="../../NUSGet.py" line="462"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation>&lt;b&gt;Ingen tittel med oppgitt Tittel ID eller versjon ble funnet!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="404"/>
<location filename="../../NUSGet.py" line="467"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation>&lt;b&gt;Dekryptering av innhold var ikke vellykket! Dekryptert innhold kunne ikke opprettes.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="411"/>
<location filename="../../NUSGet.py" line="474"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation>&lt;b&gt;Ingen billett er tilgjengelig for den forespurte tittelen!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="417"/>
<location filename="../../NUSGet.py" line="480"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation>&lt;b&gt;En ukjent feil har oppstått!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="439"/>
<location filename="../../NUSGet.py" line="502"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation>&lt;b&gt;Noen feil oppstod under kjøring av nedlastingsskriptet.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="489"/>
<location filename="../../NUSGet.py" line="552"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation>&lt;b&gt;Det oppstod en feil under parsing av skriptfilen!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="500"/>
<location filename="../../NUSGet.py" line="563"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation>&lt;b&gt;Det oppstod en feil under parsing av Tittel IDer!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="661"/>
<location filename="../../NUSGet.py" line="671"/>
<source>Restart Required</source>
<translation>Omstart Nødvendig</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="662"/>
<source>NUSGet must be restarted for the selected language to take effect.</source>
<translation>NUSGet startes nytt for at det valgte språket skal tre i kraft.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="672"/>
<source>NUSGet must be restarted for the selected theme to take effect.</source>
<translation>NUSGet startes nytt for at det valgte temaet skal tre i kraft.</translation>
</message>
<message>
<source>The Title ID you have entered is not in a valid format!</source>
<translation type="vanished">Tittel IDen du har angitt er ikke i et gyldig format!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="396"/>
<location filename="../../NUSGet.py" line="459"/>
<source>Title IDs must be 16 digit strings of numbers and letters. Please enter a correctly formatted Title ID, or select one from the menu on the left.</source>
<translation>Tittel IDer være 16-sifrede tall og bokstav strenger. Vennligst skriv inn en korrekt formatert Tittel ID, eller velg en fra menyen til venstre.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="398"/>
<location filename="../../NUSGet.py" line="461"/>
<source>Title ID/Version Not Found</source>
<translation>Tittel ID/Versjon Ikke Funnet</translation>
</message>
@ -418,12 +465,12 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">Ingen tittel med oppgitt Tittel ID eller versjon ble funnet!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="401"/>
<location filename="../../NUSGet.py" line="464"/>
<source>Please make sure that you have entered a valid Title ID, or selected one from the title database, and that the provided version exists for the title you are attempting to download.</source>
<translation>Sjekk at du har oppgitt en gyldig Tittel ID, eller valgt en fra titteldatabasen, og at den angitte versjonen finnes for tittelen du forsøker å laste ned.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="403"/>
<location filename="../../NUSGet.py" line="466"/>
<source>Content Decryption Failed</source>
<translation>Dekryptering av Innhold Mislyktes</translation>
</message>
@ -432,12 +479,12 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">Dekryptering av innhold var ikke vellykket! Dekryptert innhold kunne ikke opprettes.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="407"/>
<location filename="../../NUSGet.py" line="470"/>
<source>Your TMD or Ticket may be damaged, or they may not correspond with the content being decrypted. If you have checked &quot;Use local files, if they exist&quot;, try disabling that option before trying the download again to fix potential issues with local data.</source>
<translation>TMDen eller Billetten kan være skadet, eller det kan hende at de ikke samsvarer med innholdet some dekrypteres. Hvis du har krysset av for &quot;Bruk lokale filer, hvis de finnes&quot;, kan du prøve å deaktivere dette alternativet før du prøver nedlastingen nytt for å løse eventuelle problemer med lokale data.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="410"/>
<location filename="../../NUSGet.py" line="473"/>
<source>Ticket Not Available</source>
<translation>Billett Ikke Tilgjengelig</translation>
</message>
@ -446,12 +493,12 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">Ingen billett er tilgjengelig for den forespurte tittelen!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="414"/>
<location filename="../../NUSGet.py" line="477"/>
<source>A ticket could not be downloaded for the requested title, but you have selected &quot;Pack installable archive&quot; or &quot;Create decrypted contents&quot;. These options are not available for titles without a ticket. Only encrypted contents have been saved.</source>
<translation>En billett kunne ikke lastes ned for den forespurte tittelen, men du har valgt &quot;Pakk installerbart arkiv&quot; eller &quot;Opprett dekryptert innhold&quot;. Disse alternativene er ikke tilgjenelige for titler uten billett. Bare kryptert innhold har blitt lagret.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="416"/>
<location filename="../../NUSGet.py" line="479"/>
<source>Unknown Error</source>
<translation>Ukjent Feil</translation>
</message>
@ -460,12 +507,12 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">En ukjent feil har oppstått!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="419"/>
<location filename="../../NUSGet.py" line="482"/>
<source>Please try again. If this issue persists, please open a new issue on GitHub detailing what you were trying to do when this error occurred.</source>
<translation>Prøv igjen. Hvis dette problemet vedvarer, åpne et nytt issue GitHub med detaljer om hva du prøvde å gjøre da denne feilen oppstod.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="438"/>
<location filename="../../NUSGet.py" line="501"/>
<source>Script Issues Occurred</source>
<translation>Skriptfeil Oppstod</translation>
</message>
@ -474,32 +521,32 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">Noen feil oppstod under kjøring av nedlastingsskriptet.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="441"/>
<location filename="../../NUSGet.py" line="504"/>
<source>Check the log for more details about what issues were encountered.</source>
<translation>Sjekk loggen for mer informasjon om feilene som har oppstått.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="448"/>
<location filename="../../NUSGet.py" line="511"/>
<source>The following titles could not be downloaded due to an error. Please ensure that the Title ID and version listed in the script are valid.</source>
<translation>Følgende titler kunne ikke lastes ned grunn av en feil. Sjekk at Tittel IDen og versjon som er oppført i skriptet er gyldige.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="458"/>
<location filename="../../NUSGet.py" line="521"/>
<source>You enabled &quot;Create decrypted contents&quot; or &quot;Pack installable archive&quot;, but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
<translation>Du aktiverte &quot;Opprett dekryptert innhold&quot; eller &quot;Pakk installerbart archive&quot;, men følgende titler i skriptet har ikke tilgjengelige billetter. Hvis aktivert, ble kryptert innhold fortsatt lastet ned.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="477"/>
<location filename="../../NUSGet.py" line="540"/>
<source>Script Download Failed</source>
<translation>Skriptnedlasting Mislyktes</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="478"/>
<location filename="../../NUSGet.py" line="541"/>
<source>Open NUS Script</source>
<translation>Åpne NUS Skript</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="479"/>
<location filename="../../NUSGet.py" line="542"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>NUS Skript (*.nus *.json)</translation>
</message>
@ -508,7 +555,7 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">Det oppstod en feil under parsing av skriptfilen!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="491"/>
<location filename="../../NUSGet.py" line="554"/>
<source>Error encountered at line {lineno}, column {colno}. Please double-check the script and try again.</source>
<translation></translation>
</message>
@ -517,27 +564,27 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">Det oppstod en feil under parsing av Tittel IDer!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="502"/>
<location filename="../../NUSGet.py" line="565"/>
<source>The title at index {index} does not have a Title ID!</source>
<translation>Tittelen ved indeks {index} har ikke en Tittel ID!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="555"/>
<location filename="../../NUSGet.py" line="618"/>
<source>Open Directory</source>
<translation>Åpen Mappe</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="566"/>
<location filename="../../NUSGet.py" line="629"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation>&lt;b&gt;Den angitte nedlastingsmappen finnes ikke!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="569"/>
<location filename="../../NUSGet.py" line="632"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation>Kontroller at den angitte nedlastingsmappen finnes, og at du har tillatelse fil å tilgang til den.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="175"/>
<location filename="../../NUSGet.py" line="226"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Påfør patcher IOS (gjelder kun WADer)</translation>
</message>
@ -555,12 +602,12 @@ Titler merket med en hake er fri og har en billett tilgjengelig, og kan dekrypte
Som standard, lastes titler ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedlastingsmappen din.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="173"/>
<location filename="../../NUSGet.py" line="224"/>
<source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Bruk Wii U NUS (raskere, påvirker bare Wii/vWii)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="242"/>
<location filename="../../NUSGet.py" line="305"/>
<source>NUSGet Update Available</source>
<translation>NUSGet Oppdatering Tilgjengelig</translation>
</message>
@ -569,7 +616,7 @@ Som standard, lastes titler ned til en mappe med navnet &quot;NUSGet Downloads&q
<translation type="vanished">Det finnes en nyere versjon av NUSGet tilgjengelig!</translation>
</message>
<message>
<location filename="../../modules/core.py" line="68"/>
<location filename="../../modules/core.py" line="74"/>
<source>
Could not check for updates.</source>
@ -578,7 +625,7 @@ Could not check for updates.</source>
Kunne ikke sjekke for oppdateringer.</translation>
</message>
<message>
<location filename="../../modules/core.py" line="78"/>
<location filename="../../modules/core.py" line="84"/>
<source>
There&apos;s a newer version of NUSGet available!</source>
@ -587,7 +634,7 @@ There&apos;s a newer version of NUSGet available!</source>
Det finnes en nyere versjon av NUSGet tilgjengelig!</translation>
</message>
<message>
<location filename="../../modules/core.py" line="80"/>
<location filename="../../modules/core.py" line="86"/>
<source>
You&apos;re running the latest release of NUSGet.</source>

View File

@ -9,67 +9,67 @@
<translation>Om NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="33"/>
<source>NUSGet</source>
<translation>NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="38"/>
<source>Version {nusget_version}</source>
<translation>Versjon {nusget_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="44"/>
<source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
<translation>Bruker libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="49"/>
<source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
<translation>© 2024-2025 NinjaCheetah &amp; Contributors</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="65"/>
<source>View Project on GitHub</source>
<translation>Se Prosjektet GitHub</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="81"/>
<source>Translations</source>
<translation>Oversettelser</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="89"/>
<source>French (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</source>
<translation>Fransk (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="91"/>
<source>German (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</source>
<translation>Tysk (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>Italian (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</source>
<translation>Italiensk (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="95"/>
<source>Korean (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</source>
<translation>Koreansk (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="97"/>
<source>Norwegian (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</source>
<translation>Norsk (Bokmål): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="148"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="99"/>
<source>Romanian (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</source>
<translation>Rumensk (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="150"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="101"/>
<source>Spanish (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</source>
<translation>Spansk (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</translation>
</message>
@ -146,12 +146,43 @@
<translation>Generelle Instillinger</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="471"/>
<location filename="../../qt/ui/MainMenu.ui" line="485"/>
<source>Options</source>
<translation>Instillinger</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="489"/>
<source>Language</source>
<translation>Språk</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="503"/>
<source>Theme</source>
<translation>Tema</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="520"/>
<source>About NUSGet</source>
<translation>Om NUSGet</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="167"/>
<location filename="../../qt/ui/MainMenu.ui" line="545"/>
<location filename="../../qt/ui/MainMenu.ui" line="617"/>
<source>System (Default)</source>
<translation>System (Standard)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="625"/>
<source>Light</source>
<translation>Lys</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="633"/>
<source>Dark</source>
<translation>Mørk</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="218"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Pakke installerbart arkiv (WAD/TAD)</translation>
</message>
@ -161,17 +192,17 @@
<translation>Filnavn</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="169"/>
<location filename="../../NUSGet.py" line="220"/>
<source>Keep encrypted contents</source>
<translation>Oppbevar kryptert innhold</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="171"/>
<location filename="../../NUSGet.py" line="222"/>
<source>Create decrypted contents (*.app)</source>
<translation>Opprette dekryptert innold (*.app)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="172"/>
<location filename="../../NUSGet.py" line="223"/>
<source>Use local files, if they exist</source>
<translation>Bruk lokale filer, hvis de finnes</translation>
</message>
@ -185,7 +216,7 @@
<translation>vWii Tittelinstillinger</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="176"/>
<location filename="../../NUSGet.py" line="227"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Krypter tittelen nytt ved hjelp av Wii Common Key</translation>
</message>
@ -195,12 +226,12 @@
<translation>Appinstillinger</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="177"/>
<location filename="../../NUSGet.py" line="228"/>
<source>Check for updates on startup</source>
<translation>Sjekk for oppdateringer ved oppstart</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="178"/>
<location filename="../../NUSGet.py" line="229"/>
<source>Use a custom download directory</source>
<translation>Bruke en egendefinert nedlastingsmappe</translation>
</message>
@ -229,12 +260,12 @@ li.checked::marker { content: &quot;\2612&quot;; }
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="458"/>
<location filename="../../qt/ui/MainMenu.ui" line="477"/>
<source>Help</source>
<translation>Hjelp</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="482"/>
<location filename="../../qt/ui/MainMenu.ui" line="531"/>
<source>About Qt</source>
<translation>Om Qt</translation>
</message>
@ -319,97 +350,113 @@ Titler merket med en hake er fri og har en billett tilgjengelig, og kan dekrypte
Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedlastingsmappen din.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="243"/>
<location filename="../../NUSGet.py" line="306"/>
<source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation>&lt;b&gt;Det finnes en nyere versjon av NUSGet tilgjengelig!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="344"/>
<location filename="../../NUSGet.py" line="407"/>
<source>No Output Selected</source>
<translation>Ingen Utgang Valgt</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="345"/>
<location filename="../../NUSGet.py" line="408"/>
<source>You have not selected any format to output the data in!</source>
<translation>Du ikke har valgt noe format å lagre dataene i!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="347"/>
<location filename="../../NUSGet.py" line="410"/>
<source>Please select at least one option for how you would like the download to be saved.</source>
<translation>Velg minst ett valg for hvordan du vil at nedlastingen skal lagres.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="359"/>
<location filename="../../NUSGet.py" line="565"/>
<location filename="../../NUSGet.py" line="422"/>
<location filename="../../NUSGet.py" line="628"/>
<source>Invalid Download Directory</source>
<translation>Ugyldig Nedlastingsmappe</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="360"/>
<location filename="../../NUSGet.py" line="423"/>
<source>The specified download directory does not exist!</source>
<translation>Den angitte nedlastingsmappen finnes ikke!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="363"/>
<location filename="../../NUSGet.py" line="426"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation>Kontroller at den angitte nedlastingsmappen finnes, og at du har tillatelse fil å tilgang til den.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<location filename="../../NUSGet.py" line="456"/>
<source>Invalid Title ID</source>
<translation>Ugyldig Tittel ID</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="394"/>
<location filename="../../NUSGet.py" line="457"/>
<source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>&lt;b&gt;Tittel IDen du har angitt er ikke i et gyldig format!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<location filename="../../NUSGet.py" line="462"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation>&lt;b&gt;Ingen tittel med oppgitt Tittel ID eller versjon ble funnet!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="404"/>
<location filename="../../NUSGet.py" line="467"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation>&lt;b&gt;Dekryptering av innhold var ikke vellykket! Dekryptert innhold kunne ikke opprettes.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="411"/>
<location filename="../../NUSGet.py" line="474"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation>&lt;b&gt;Ingen billett er tilgjengelig for den forespurte tittelen!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="417"/>
<location filename="../../NUSGet.py" line="480"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation>&lt;b&gt;En ukjent feil har oppstått!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="439"/>
<location filename="../../NUSGet.py" line="502"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation>&lt;b&gt;Noen feil oppstod under kjøring av nedlastingsskriptet.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="489"/>
<location filename="../../NUSGet.py" line="552"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation>&lt;b&gt;Det oppstod en feil under parsing av skriptfilen!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="500"/>
<location filename="../../NUSGet.py" line="563"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation>&lt;b&gt;Det oppstod en feil under parsing av Tittel IDer!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="661"/>
<location filename="../../NUSGet.py" line="671"/>
<source>Restart Required</source>
<translation>Omstart Nødvendig</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="662"/>
<source>NUSGet must be restarted for the selected language to take effect.</source>
<translation>NUSGet startes nytt for at det valgte språket skal tre i kraft.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="672"/>
<source>NUSGet must be restarted for the selected theme to take effect.</source>
<translation>NUSGet startes nytt for at det valgte temaet skal tre i kraft.</translation>
</message>
<message>
<source>The Title ID you have entered is not in a valid format!</source>
<translation type="vanished">Tittel IDen du har angitt er ikke i et gyldig format!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="396"/>
<location filename="../../NUSGet.py" line="459"/>
<source>Title IDs must be 16 digit strings of numbers and letters. Please enter a correctly formatted Title ID, or select one from the menu on the left.</source>
<translation>Tittel IDer være 16-sifrede tall og bokstav strenger. Vennligst skriv inn en korrekt formatert Tittel ID, eller velg en fra menyen til venstre.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="398"/>
<location filename="../../NUSGet.py" line="461"/>
<source>Title ID/Version Not Found</source>
<translation>Tittel ID/Versjon Ikke Funnet</translation>
</message>
@ -418,12 +465,12 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">Ingen tittel med oppgitt Tittel ID eller versjon ble funnet!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="401"/>
<location filename="../../NUSGet.py" line="464"/>
<source>Please make sure that you have entered a valid Title ID, or selected one from the title database, and that the provided version exists for the title you are attempting to download.</source>
<translation>Sjekk at du har oppgitt en gyldig Tittel ID, eller valgt en fra titteldatabasen, og at den angitte versjonen finnes for tittelen du forsøker å laste ned.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="403"/>
<location filename="../../NUSGet.py" line="466"/>
<source>Content Decryption Failed</source>
<translation>Dekryptering av Innhold Mislyktes</translation>
</message>
@ -432,12 +479,12 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">Dekryptering av innhold var ikke vellykket! Dekryptert innhold kunne ikke opprettes.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="407"/>
<location filename="../../NUSGet.py" line="470"/>
<source>Your TMD or Ticket may be damaged, or they may not correspond with the content being decrypted. If you have checked &quot;Use local files, if they exist&quot;, try disabling that option before trying the download again to fix potential issues with local data.</source>
<translation>TMDen eller Billetten kan være skadet, eller det kan hende at de ikke samsvarer med innholdet some dekrypteres. Hvis du har krysset av for &quot;Bruk lokale filer, hvis de finnes&quot;, kan du prøve å deaktivere dette alternativet før du prøver nedlastingen nytt for å løse eventuelle problemer med lokale data.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="410"/>
<location filename="../../NUSGet.py" line="473"/>
<source>Ticket Not Available</source>
<translation>Billett Ikke Tilgjengelig</translation>
</message>
@ -446,12 +493,12 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">Ingen billett er tilgjengelig for den forespurte tittelen!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="414"/>
<location filename="../../NUSGet.py" line="477"/>
<source>A ticket could not be downloaded for the requested title, but you have selected &quot;Pack installable archive&quot; or &quot;Create decrypted contents&quot;. These options are not available for titles without a ticket. Only encrypted contents have been saved.</source>
<translation>En billett kunne ikke lastes ned for den forespurte tittelen, men du har valgt &quot;Pakk installerbart arkiv&quot; eller &quot;Opprett dekryptert innhold&quot;. Disse alternativene er ikke tilgjenelige for titler uten billett. Bare kryptert innhold har blitt lagret.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="416"/>
<location filename="../../NUSGet.py" line="479"/>
<source>Unknown Error</source>
<translation>Ukjent Feil</translation>
</message>
@ -460,12 +507,12 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">En ukjent feil har oppstått!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="419"/>
<location filename="../../NUSGet.py" line="482"/>
<source>Please try again. If this issue persists, please open a new issue on GitHub detailing what you were trying to do when this error occurred.</source>
<translation>Prøv igjen. Hvis dette problemet vedvarer, åpne et nytt issue GitHub med detaljer om hva du prøvde å gjøre da denne feilen oppstod.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="438"/>
<location filename="../../NUSGet.py" line="501"/>
<source>Script Issues Occurred</source>
<translation>Skriptfeil Oppstod</translation>
</message>
@ -474,32 +521,32 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">Noen feil oppstod under kjøring av nedlastingsskriptet.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="441"/>
<location filename="../../NUSGet.py" line="504"/>
<source>Check the log for more details about what issues were encountered.</source>
<translation>Sjekk loggen for mer informasjon om feilene som har oppstått.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="448"/>
<location filename="../../NUSGet.py" line="511"/>
<source>The following titles could not be downloaded due to an error. Please ensure that the Title ID and version listed in the script are valid.</source>
<translation>Følgende titler kunne ikke lastes ned grunn av en feil. Sjekk at Tittel IDen og versjon som er oppført i skriptet er gyldige.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="458"/>
<location filename="../../NUSGet.py" line="521"/>
<source>You enabled &quot;Create decrypted contents&quot; or &quot;Pack installable archive&quot;, but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
<translation>Du aktiverte &quot;Opprett dekryptert innhold&quot; eller &quot;Pakk installerbart archive&quot;, men følgende titler i skriptet har ikke tilgjengelige billetter. Hvis aktivert, ble kryptert innhold fortsatt lastet ned.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="477"/>
<location filename="../../NUSGet.py" line="540"/>
<source>Script Download Failed</source>
<translation>Skriptnedlasting Mislyktes</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="478"/>
<location filename="../../NUSGet.py" line="541"/>
<source>Open NUS Script</source>
<translation>Åpne NUS Skript</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="479"/>
<location filename="../../NUSGet.py" line="542"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>NUS Skript (*.nus *.json)</translation>
</message>
@ -508,7 +555,7 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">Det oppstod en feil under parsing av skriptfilen!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="491"/>
<location filename="../../NUSGet.py" line="554"/>
<source>Error encountered at line {lineno}, column {colno}. Please double-check the script and try again.</source>
<translation></translation>
</message>
@ -517,27 +564,27 @@ Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedl
<translation type="vanished">Det oppstod en feil under parsing av Tittel IDer!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="502"/>
<location filename="../../NUSGet.py" line="565"/>
<source>The title at index {index} does not have a Title ID!</source>
<translation>Tittelen ved indeks {index} har ikke en Tittel ID!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="555"/>
<location filename="../../NUSGet.py" line="618"/>
<source>Open Directory</source>
<translation>Åpen Mappe</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="566"/>
<location filename="../../NUSGet.py" line="629"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation>&lt;b&gt;Den angitte nedlastingsmappen finnes ikke!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="569"/>
<location filename="../../NUSGet.py" line="632"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation>Kontroller at den angitte nedlastingsmappen finnes, og at du har tillatelse fil å tilgang til den.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="175"/>
<location filename="../../NUSGet.py" line="226"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Påfør patcher IOS (gjelder kun WADer)</translation>
</message>
@ -555,12 +602,12 @@ Titler merket med en hake er fri og har en billett tilgjengelig, og kan dekrypte
Som standard, lastes titler ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedlastingsmappen din.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="173"/>
<location filename="../../NUSGet.py" line="224"/>
<source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Bruk Wii U NUS (raskere, påvirker bare Wii/vWii)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="242"/>
<location filename="../../NUSGet.py" line="305"/>
<source>NUSGet Update Available</source>
<translation>NUSGet Oppdatering Tilgjengelig</translation>
</message>
@ -569,7 +616,7 @@ Som standard, lastes titler ned til en mappe med navnet &quot;NUSGet Downloads&q
<translation type="vanished">Det finnes en nyere versjon av NUSGet tilgjengelig!</translation>
</message>
<message>
<location filename="../../modules/core.py" line="68"/>
<location filename="../../modules/core.py" line="74"/>
<source>
Could not check for updates.</source>
@ -578,7 +625,7 @@ Could not check for updates.</source>
Kunne ikke sjekke for oppdateringer.</translation>
</message>
<message>
<location filename="../../modules/core.py" line="78"/>
<location filename="../../modules/core.py" line="84"/>
<source>
There&apos;s a newer version of NUSGet available!</source>
@ -587,7 +634,7 @@ There&apos;s a newer version of NUSGet available!</source>
Det finnes en nyere versjon av NUSGet tilgjengelig!</translation>
</message>
<message>
<location filename="../../modules/core.py" line="80"/>
<location filename="../../modules/core.py" line="86"/>
<source>
You&apos;re running the latest release of NUSGet.</source>

View File

@ -9,67 +9,67 @@
<translation>Despre NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="33"/>
<source>NUSGet</source>
<translation>NUSGet</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="38"/>
<source>Version {nusget_version}</source>
<translation>Versiunea {nusget_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="44"/>
<source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
<translation>Folosește libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="49"/>
<source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
<translation>© 2024-2025 NinjaCheetah &amp; Contributors</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="65"/>
<source>View Project on GitHub</source>
<translation>Vedeți proiectul pe GitHub</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="81"/>
<source>Translations</source>
<translation>Traduceri</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="89"/>
<source>French (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</source>
<translation>Franceză (Français): &lt;a href=https://github.com/rougets style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rougets&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="91"/>
<source>German (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</source>
<translation>Germană (Deutsch): &lt;a href=https://github.com/yeah-its-gloria style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;yeah-its-gloria&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>Italian (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</source>
<translation>Italiană (Italiano): &lt;a href=https://github.com/LNLenost style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;LNLenost&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="95"/>
<source>Korean (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</source>
<translation>Coreană (): &lt;a href=https://github.com/DDinghoya style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DDinghoya&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="97"/>
<source>Norwegian (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</source>
<translation>Norvegiană (Norsk): &lt;a href=https://github.com/rolfiee style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;rolfiee&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="148"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="99"/>
<source>Romanian (Română): &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</source>
<translation>Română: &lt;a href=https://github.com/NotImplementedLife style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;NotImplementedLife&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="150"/>
<location filename="../../qt/py/ui_AboutDialog.py" line="101"/>
<source>Spanish (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</source>
<translation>Spaniolă (Español): &lt;a href=https://github.com/DarkMatterCore style=&apos;color: #4a86e8; text-decoration: none;&apos;&gt;&lt;b&gt;DarkMatterCore&lt;/b&gt;&lt;/a&gt;</translation>
</message>
@ -121,7 +121,7 @@ Titlurile marcate cu bifă sunt gratuite și au un tichet disponibil și pot fi
Titlurile vor fi descărcate într-un folder numit NUSGet Downloads în fișierul dvs. de download.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="242"/>
<location filename="../../NUSGet.py" line="305"/>
<source>NUSGet Update Available</source>
<translation>Actualizare NUSGet disponibilă</translation>
</message>
@ -143,102 +143,118 @@ Titlurile marcate cu bifă sunt libere și au un tichet valabil, ele pot fi decr
Implicit, titlurile vor fi descărcate într-un folder numit NUSGet Downloads în folderul dvs. de descărcări.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="173"/>
<location filename="../../NUSGet.py" line="224"/>
<source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Folosiți Wii U NUS (mai rapid, afectează doar Wii/vWii)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="243"/>
<location filename="../../NUSGet.py" line="306"/>
<source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation>&lt;b&gt;O nouă versiune de NUSGet este valabilă!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="344"/>
<location filename="../../NUSGet.py" line="407"/>
<source>No Output Selected</source>
<translation>Nu s-a selectat un output</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="345"/>
<location filename="../../NUSGet.py" line="408"/>
<source>You have not selected any format to output the data in!</source>
<translation>Nu ați selectat niciun format de ieșire!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="347"/>
<location filename="../../NUSGet.py" line="410"/>
<source>Please select at least one option for how you would like the download to be saved.</source>
<translation> rugăm selectați cel puțin o opțiune pentru modul în care doriți salvați datele descărcate.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="359"/>
<location filename="../../NUSGet.py" line="565"/>
<location filename="../../NUSGet.py" line="422"/>
<location filename="../../NUSGet.py" line="628"/>
<source>Invalid Download Directory</source>
<translation>Director de descărcare invalid</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="360"/>
<location filename="../../NUSGet.py" line="423"/>
<source>The specified download directory does not exist!</source>
<translation>Directorul de descărcare specificat nu există!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="363"/>
<location filename="../../NUSGet.py" line="426"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation> rugăm asigurați directorul de descărcare specificat există, și aveți permisiuni pentru a-l accesa.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<location filename="../../NUSGet.py" line="456"/>
<source>Invalid Title ID</source>
<translation>Title ID invalid</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="394"/>
<location filename="../../NUSGet.py" line="457"/>
<source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>&lt;b&gt; Title ID pe care l-ați introdus nu este într-un format valid!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<location filename="../../NUSGet.py" line="462"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation>&lt;b&gt;Nu s-a găsit niciun titlu cu Title ID sau versiunea introdusă!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="404"/>
<location filename="../../NUSGet.py" line="467"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation>&lt;b&gt;Decriptarea conținutului a eșuat! Nu s-a putut crea conținutul decriptat.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="411"/>
<location filename="../../NUSGet.py" line="474"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation>&lt;b&gt;Nu există tichet valabil pentru titlul cerut!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="417"/>
<location filename="../../NUSGet.py" line="480"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation>&lt;b&gt;S-a produs o eroare necunoscută!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="439"/>
<location filename="../../NUSGet.py" line="502"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation>&lt;b&gt;Au apărut câteva probleme la rularea scriptului de descărcare.&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="489"/>
<location filename="../../NUSGet.py" line="552"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation>&lt;b&gt;A apărut o eroare la procesarea fișierului script!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="500"/>
<location filename="../../NUSGet.py" line="563"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation>&lt;b&gt;A apărut o eroare la procesarea Title ID-urilor!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="661"/>
<location filename="../../NUSGet.py" line="671"/>
<source>Restart Required</source>
<translation>Repornire necesară</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="662"/>
<source>NUSGet must be restarted for the selected language to take effect.</source>
<translation>NUSGet trebuie repornit pentru ca noua limbă aibă efect.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="672"/>
<source>NUSGet must be restarted for the selected theme to take effect.</source>
<translation>NUSGet trebuie repornit pentru ca noua temă aibă efect.</translation>
</message>
<message>
<source>The Title ID you have entered is not in a valid format!</source>
<translation type="vanished">Title ID pe care l-ați introdus este invalid!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="396"/>
<location filename="../../NUSGet.py" line="459"/>
<source>Title IDs must be 16 digit strings of numbers and letters. Please enter a correctly formatted Title ID, or select one from the menu on the left.</source>
<translation>Title ID-urile trebuie conțină exact 16 cifre și/sau litere. rugăm introduceți un Title ID corect, sau selectați unul din meniul din stânga.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="398"/>
<location filename="../../NUSGet.py" line="461"/>
<source>Title ID/Version Not Found</source>
<translation>Title ID/Versiunea nu a fost găsită</translation>
</message>
@ -247,12 +263,12 @@ Implicit, titlurile vor fi descărcate într-un folder numit „NUSGet Downloads
<translation type="vanished">Niciun titlu care corespundă cu Title ID-ul sau cu versiunea introdusă nu a fost găsit!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="401"/>
<location filename="../../NUSGet.py" line="464"/>
<source>Please make sure that you have entered a valid Title ID, or selected one from the title database, and that the provided version exists for the title you are attempting to download.</source>
<translation> rugăm asigurați ați introdus un Title ID valid sau ați selectat unul din baza de date cu titluri, și versiunea introdusă există pentru titlul pe care încercați îl descărcați.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="403"/>
<location filename="../../NUSGet.py" line="466"/>
<source>Content Decryption Failed</source>
<translation>Decriptarea conținutului a eșuat</translation>
</message>
@ -261,12 +277,12 @@ Implicit, titlurile vor fi descărcate într-un folder numit „NUSGet Downloads
<translation type="vanished">Decriptarea conținutului nu a reușit. Nu s-a putut crea conținutul decriptat.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="407"/>
<location filename="../../NUSGet.py" line="470"/>
<source>Your TMD or Ticket may be damaged, or they may not correspond with the content being decrypted. If you have checked &quot;Use local files, if they exist&quot;, try disabling that option before trying the download again to fix potential issues with local data.</source>
<translation>TMD-ul sau Ticket-ul dvs. sunt corupte, sau nu corespund cu conținutul de decriptat. Dacă ați bifat Folosiți fișiere locale, dacă există, încercați debifați această opțiune înainte de a descărca din nou pentru a rezolva potențiale probleme cu datele existente local.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="410"/>
<location filename="../../NUSGet.py" line="473"/>
<source>Ticket Not Available</source>
<translation>Ticket-ul nu este valabil</translation>
</message>
@ -275,12 +291,12 @@ Implicit, titlurile vor fi descărcate într-un folder numit „NUSGet Downloads
<translation type="vanished">Niciun Ticket nu este valabil pentru titlul dorit!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="414"/>
<location filename="../../NUSGet.py" line="477"/>
<source>A ticket could not be downloaded for the requested title, but you have selected &quot;Pack installable archive&quot; or &quot;Create decrypted contents&quot;. These options are not available for titles without a ticket. Only encrypted contents have been saved.</source>
<translation>Nu se poate descărca un tichet pentru titlul cerut, dar ați selectat Împachetați arhiva instalabilă sau Creați conținut decriptat. Aceste opțiuni nu sunt valabile pentru titluri fărătichet. Doar conținuturile criptate au fost salvate.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="416"/>
<location filename="../../NUSGet.py" line="479"/>
<source>Unknown Error</source>
<translation>Eroare necunoscută</translation>
</message>
@ -289,12 +305,12 @@ Implicit, titlurile vor fi descărcate într-un folder numit „NUSGet Downloads
<translation type="vanished">S-a produs o eroare necunoscută!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="419"/>
<location filename="../../NUSGet.py" line="482"/>
<source>Please try again. If this issue persists, please open a new issue on GitHub detailing what you were trying to do when this error occurred.</source>
<translation> rugăm încercați din nou. Dacă problema persistă, rugăm deschideți un issue pe GitHub în care explicați ce ați încercat faceți atunci când această eroare a apărut.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="438"/>
<location filename="../../NUSGet.py" line="501"/>
<source>Script Issues Occurred</source>
<translation>Au apărut probleme cu scriptul</translation>
</message>
@ -303,32 +319,32 @@ Implicit, titlurile vor fi descărcate într-un folder numit „NUSGet Downloads
<translation type="vanished">Au apărut câteva probleme la rularea scriptului descărcat.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="441"/>
<location filename="../../NUSGet.py" line="504"/>
<source>Check the log for more details about what issues were encountered.</source>
<translation>Verificați logurile pentru mai multe detalii despre problemele întâmpinate.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="448"/>
<location filename="../../NUSGet.py" line="511"/>
<source>The following titles could not be downloaded due to an error. Please ensure that the Title ID and version listed in the script are valid.</source>
<translation>Următoarele titluri nu au putut fi descărcate din cauza unei erori. rugăm asigurați Title ID și versiunea listate în script sunt valide.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="458"/>
<location filename="../../NUSGet.py" line="521"/>
<source>You enabled &quot;Create decrypted contents&quot; or &quot;Pack installable archive&quot;, but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
<translation>Ați activat Creare conținut decriptat sau Împachetați arhiva instalabilă, dar următoarele titluri în script nu au tichete valabile.În acest caz, conținuturile encriptate au fost oricum descărcate.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="477"/>
<location filename="../../NUSGet.py" line="540"/>
<source>Script Download Failed</source>
<translation>Descărcarea scriptului a eșuat</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="478"/>
<location filename="../../NUSGet.py" line="541"/>
<source>Open NUS Script</source>
<translation>Deschideți script NUS</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="479"/>
<location filename="../../NUSGet.py" line="542"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>Scripturi NUS (*.nus *.json)</translation>
</message>
@ -337,7 +353,7 @@ Implicit, titlurile vor fi descărcate într-un folder numit „NUSGet Downloads
<translation type="vanished">A apărut o eroare la parssarea acestui fișier script!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="491"/>
<location filename="../../NUSGet.py" line="554"/>
<source>Error encountered at line {lineno}, column {colno}. Please double-check the script and try again.</source>
<translation>S-a produs o eroare la linia {lineno}, coloana {colno}. rugăm verificați scriptul și încercați din nou.</translation>
</message>
@ -346,22 +362,22 @@ Implicit, titlurile vor fi descărcate într-un folder numit „NUSGet Downloads
<translation type="vanished">A apărut o eroare la procesarea Title ID-urilor!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="502"/>
<location filename="../../NUSGet.py" line="565"/>
<source>The title at index {index} does not have a Title ID!</source>
<translation>Titlul la poziția {index} nu are un Title ID!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="555"/>
<location filename="../../NUSGet.py" line="618"/>
<source>Open Directory</source>
<translation>Deschideți folder</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="566"/>
<location filename="../../NUSGet.py" line="629"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation>&lt;b&gt;Directorul de descărcare specificat nu există!&lt;/b&gt;</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="569"/>
<location filename="../../NUSGet.py" line="632"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation> rugăm asigurați directorul de descărcare pe care vreți il folosiți există, și aveți permisiunea de a-l accesa.</translation>
</message>
@ -459,12 +475,43 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="471"/>
<location filename="../../qt/ui/MainMenu.ui" line="485"/>
<source>Options</source>
<translation>Opțiuni</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="489"/>
<source>Language</source>
<translation>Limbă</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="503"/>
<source>Theme</source>
<translation>Temă</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="520"/>
<source>About NUSGet</source>
<translation>Despre NUSGet</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="167"/>
<location filename="../../qt/ui/MainMenu.ui" line="545"/>
<location filename="../../qt/ui/MainMenu.ui" line="617"/>
<source>System (Default)</source>
<translation>Sistem (Implicit)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="625"/>
<source>Light</source>
<translation>Luminos</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="633"/>
<source>Dark</source>
<translation>Întunecat</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="218"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Împachetați arhiva instalabilă (WAD/TAD)</translation>
</message>
@ -474,17 +521,17 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Nume fișier</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="169"/>
<location filename="../../NUSGet.py" line="220"/>
<source>Keep encrypted contents</source>
<translation>Păstrați conținuturile encriptate</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="171"/>
<location filename="../../NUSGet.py" line="222"/>
<source>Create decrypted contents (*.app)</source>
<translation>Creați conținuturi decriptate (*.app)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="172"/>
<location filename="../../NUSGet.py" line="223"/>
<source>Use local files, if they exist</source>
<translation>Folosiți fișiere locale, dacă există</translation>
</message>
@ -493,7 +540,7 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation type="vanished">Folosiți Wii U NUS (mai rapid, doar pentru Wii/vWii)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="175"/>
<location filename="../../NUSGet.py" line="226"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Aplicați patch-uri pentru IOS (se aplică doar pentru WAD-uri)</translation>
</message>
@ -503,7 +550,7 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>vWII Setări titlu</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="176"/>
<location filename="../../NUSGet.py" line="227"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Re-encriptați titlul folosind cheia comună Wii</translation>
</message>
@ -513,12 +560,12 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Setări aplicație</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="177"/>
<location filename="../../NUSGet.py" line="228"/>
<source>Check for updates on startup</source>
<translation>Verificați dacă există actualizări la startup</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="178"/>
<location filename="../../NUSGet.py" line="229"/>
<source>Use a custom download directory</source>
<translation>Folosiți un director de descărcare propriu</translation>
</message>
@ -528,12 +575,12 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Selectează...</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="458"/>
<location filename="../../qt/ui/MainMenu.ui" line="477"/>
<source>Help</source>
<translation>Ajutor</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="482"/>
<location filename="../../qt/ui/MainMenu.ui" line="531"/>
<source>About Qt</source>
<translation>Despre Qt</translation>
</message>
@ -543,7 +590,7 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Cale de ieșire</translation>
</message>
<message>
<location filename="../../modules/core.py" line="68"/>
<location filename="../../modules/core.py" line="74"/>
<source>
Could not check for updates.</source>
@ -552,7 +599,7 @@ Could not check for updates.</source>
Nu s-a putut verifica dacă există actualizări.</translation>
</message>
<message>
<location filename="../../modules/core.py" line="78"/>
<location filename="../../modules/core.py" line="84"/>
<source>
There&apos;s a newer version of NUSGet available!</source>
@ -561,7 +608,7 @@ There&apos;s a newer version of NUSGet available!</source>
O nouă versiune de NUSGet este valabilă!</translation>
</message>
<message>
<location filename="../../modules/core.py" line="80"/>
<location filename="../../modules/core.py" line="86"/>
<source>
You&apos;re running the latest release of NUSGet.</source>