Merge remote-tracking branch 'upstream/main'

This commit is contained in:
Campbell 2025-05-08 22:26:27 -04:00
commit ee5012383f
Signed by: NinjaCheetah
GPG Key ID: B547958AF96ED344
22 changed files with 2741 additions and 2236 deletions

230
NUSGet.py
View File

@ -19,12 +19,11 @@
# nuitka-project: --include-data-dir={MAIN_DIRECTORY}/resources=resources # nuitka-project: --include-data-dir={MAIN_DIRECTORY}/resources=resources
import sys import sys
import platform
import webbrowser import webbrowser
from importlib.metadata import version from importlib.metadata import version
from PySide6.QtGui import QIcon from PySide6.QtGui import QIcon
from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox, QStyleFactory, QFileDialog 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, QTranslator, QLocale
from qt.py.ui_AboutDialog import AboutNUSGet from qt.py.ui_AboutDialog import AboutNUSGet
@ -84,50 +83,45 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# About and About Qt Buttons # About and About Qt Buttons
self.ui.actionAbout.triggered.connect(self.about_nusget) self.ui.actionAbout.triggered.connect(self.about_nusget)
self.ui.actionAbout_Qt.triggered.connect(lambda: QMessageBox.aboutQt(self)) self.ui.actionAbout_Qt.triggered.connect(lambda: QMessageBox.aboutQt(self))
self.ui.pack_archive_chkbox.toggled.connect( self.ui.pack_archive_checkbox.toggled.connect(
lambda: connect_is_enabled_to_checkbox([self.ui.archive_file_entry], self.ui.pack_archive_chkbox)) lambda: connect_is_enabled_to_checkbox([self.ui.archive_file_entry], self.ui.pack_archive_checkbox))
self.ui.custom_out_dir_chkbox.toggled.connect( self.ui.custom_out_dir_checkbox.toggled.connect(
lambda: connect_is_enabled_to_checkbox([self.ui.custom_out_dir_entry, self.ui.custom_out_dir_btn], lambda: connect_is_enabled_to_checkbox([self.ui.custom_out_dir_entry, self.ui.custom_out_dir_btn],
self.ui.custom_out_dir_chkbox)) self.ui.custom_out_dir_checkbox))
# Load auto-update settings, and initialize them if they don't exist. # Load auto-update settings, and initialize them if they don't exist.
try: try:
self.ui.auto_update_chkbox.setChecked(config_data["auto_update"]) self.ui.auto_update_checkbox.setChecked(config_data["auto_update"])
except KeyError: except KeyError:
update_setting(config_data, "auto_update", self.ui.auto_update_chkbox.isChecked()) update_setting(config_data, "auto_update", self.ui.auto_update_checkbox.isChecked())
self.ui.auto_update_chkbox.toggled.connect( self.ui.auto_update_checkbox.toggled.connect(
lambda: update_setting(config_data, "auto_update", self.ui.auto_update_chkbox.isChecked())) lambda: update_setting(config_data, "auto_update", self.ui.auto_update_checkbox.isChecked()))
# Load custom output directory if one is saved and it is valid. Only enable the checkbox to actually use the # Load custom output directory if one is saved and it is valid. Only enable the checkbox to actually use the
# custom dir if use_out_path is set to true. # custom dir if "use_out_path" is set to true.
try: try:
out_dir = pathlib.Path(config_data["out_path"]) out_dir = pathlib.Path(config_data["out_path"])
if out_dir.exists() and out_dir.is_dir(): if out_dir.exists() and out_dir.is_dir():
self.ui.custom_out_dir_entry.setText(str(out_dir)) self.ui.custom_out_dir_entry.setText(str(out_dir))
if config_data["use_out_path"]: if config_data["use_out_path"]:
self.ui.custom_out_dir_chkbox.setChecked(True) self.ui.custom_out_dir_checkbox.setChecked(True)
except KeyError: except KeyError:
pass pass
# Register this callback after the previous check to avoid an extra config write. # Register this callback after the previous check to avoid an extra config write.
self.ui.custom_out_dir_chkbox.toggled.connect( self.ui.custom_out_dir_checkbox.toggled.connect(
lambda: update_setting(config_data, "use_out_path", self.ui.custom_out_dir_chkbox.isChecked())) lambda: update_setting(config_data, "use_out_path", self.ui.custom_out_dir_checkbox.isChecked()))
self.ui.tid_entry.textChanged.connect(self.tid_updated) self.ui.tid_entry.textChanged.connect(self.tid_updated)
self.ui.custom_out_dir_entry.textChanged.connect(self.custom_output_dir_changed) self.ui.custom_out_dir_entry.textChanged.connect(self.custom_output_dir_changed)
# Basic intro text set to automatically show when the app loads. This may be changed in the future. # Basic intro text set to automatically show when the app loads. This may be changed in the future.
libwiipy_version = "v" + version("libWiiPy") self.log_text = app.translate("MainWindow", "Select a title from the list on the left, or enter a "
libtwlpy_version = "v" + version("libTWLPy") "Title ID to begin.\n\nTitles marked with a checkmark are free and have a ticket "
self.log_text = (app.translate("MainWindow", "NUSGet v{nusget_version}\nDeveloped by NinjaCheetah\nPowered by libWiiPy " "available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not"
"{libwiipy_version}\nDSi support provided by libTWLPy {libtwlpy_version}\n\n" " have a ticket, and only their encrypted contents can be saved.\n\nBy default, titles "
"Select a title from the list on the left, or enter a Title ID to begin.\n\n" "will be downloaded to a folder named \"NUSGet Downloads\" inside your downloads folder.")
"Titles marked with a checkmark are free and have a ticket available, and can"
" be decrypted and/or packed into a WAD or TAD. Titles with an X do not have "
"a ticket, and only their encrypted contents can be saved.\n\nBy default, titles will be "
"downloaded to a folder named \"NUSGet Downloads\" inside your downloads folder.")
.format(nusget_version=nusget_version, libwiipy_version=libwiipy_version,
libtwlpy_version=libtwlpy_version))
self.ui.log_text_browser.setText(self.log_text) self.ui.log_text_browser.setText(self.log_text)
# Add console entries to dropdown and attach on change signal. # Add console entries to dropdown and attach on change signal.
self.ui.console_select_dropdown.addItem("Wii") self.ui.console_select_dropdown.addItems(["Wii", "vWii", "DSi"])
self.ui.console_select_dropdown.addItem("vWii") list_view = QListView()
self.ui.console_select_dropdown.addItem("DSi") list_view.setMouseTracking(True)
self.ui.console_select_dropdown.setView(list_view)
self.ui.console_select_dropdown.currentIndexChanged.connect(self.selected_console_changed) self.ui.console_select_dropdown.currentIndexChanged.connect(self.selected_console_changed)
# Title tree loading code. Now powered by Models:tm: # Title tree loading code. Now powered by Models:tm:
wii_model = NUSGetTreeModel(wii_database, root_name="Wii Titles") wii_model = NUSGetTreeModel(wii_database, root_name="Wii Titles")
@ -152,15 +146,18 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.setFixedSize(self.size()) self.setFixedSize(self.size())
# These connections allow for clicking the checkbox labels to toggle the checkboxes, if they're enabled. This is # These connections allow for clicking the checkbox labels to toggle the checkboxes, if they're enabled. This is
# required because checkboxes can't word wrap, so regular labels must be used in their place. # required because checkboxes can't word wrap, so regular labels must be used in their place.
connect_label_to_checkbox(self.ui.pack_archive_chkbox_lbl, self.ui.pack_archive_chkbox) self.ui.pack_archive_checkbox.label.setText(app.translate("MainWindow", "Pack installable archive (WAD/TAD)"))
connect_label_to_checkbox(self.ui.keep_enc_chkbox_lbl, self.ui.keep_enc_chkbox) self.ui.pack_archive_checkbox.setChecked(True)
connect_label_to_checkbox(self.ui.create_dec_chkbox_lbl, self.ui.create_dec_chkbox) self.ui.keep_enc_checkbox.label.setText(app.translate("MainWindow", "Keep encrypted contents"))
connect_label_to_checkbox(self.ui.use_local_chkbox_lbl, self.ui.use_local_chkbox) self.ui.keep_enc_checkbox.setChecked(True)
connect_label_to_checkbox(self.ui.use_wiiu_nus_chkbox_lbl, self.ui.use_wiiu_nus_chkbox) self.ui.create_dec_checkbox.label.setText(app.translate("MainWindow", "Create decrypted contents (*.app)"))
connect_label_to_checkbox(self.ui.patch_ios_chkbox_lbl, self.ui.patch_ios_chkbox) self.ui.use_local_checkbox.label.setText(app.translate("MainWindow", "Use local files, if they exist"))
connect_label_to_checkbox(self.ui.pack_vwii_mode_chkbox_lbl, self.ui.pack_vwii_mode_chkbox) self.ui.use_wiiu_nus_checkbox.label.setText(app.translate("MainWindow", "Use the Wii U NUS (faster, only affects Wii/vWii)"))
connect_label_to_checkbox(self.ui.auto_update_chkbox_lbl, self.ui.auto_update_chkbox) self.ui.use_wiiu_nus_checkbox.setChecked(True)
connect_label_to_checkbox(self.ui.custom_out_dir_chkbox_lbl, self.ui.custom_out_dir_chkbox) self.ui.patch_ios_checkbox.label.setText(app.translate("MainWindow", "Apply patches to IOS (Applies to WADs only)"))
self.ui.pack_vwii_mode_checkbox.label.setText(app.translate("MainWindow", "Re-encrypt title using the Wii Common Key"))
self.ui.auto_update_checkbox.label.setText(app.translate("MainWindow", "Check for updates on startup"))
self.ui.custom_out_dir_checkbox.label.setText(app.translate("MainWindow", "Use a custom download directory"))
try: try:
auto_update = config_data["auto_update"] auto_update = config_data["auto_update"]
except KeyError: except KeyError:
@ -205,9 +202,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
tid = self.ui.tid_entry.text() tid = self.ui.tid_entry.text()
if len(tid) == 16: if len(tid) == 16:
if tid[:8] == "00000001" and int(tid[-2:], 16) > 2: if tid[:8] == "00000001" and int(tid[-2:], 16) > 2:
self.ui.patch_ios_chkbox.setEnabled(True) self.ui.patch_ios_checkbox.setEnabled(True)
return return
self.ui.patch_ios_chkbox.setEnabled(False) self.ui.patch_ios_checkbox.setEnabled(False)
def update_log_text(self, new_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. # This method primarily exists to be the handler for the progress signal emitted by the worker thread.
@ -225,7 +222,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
msg_box.setStandardButtons(QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No) msg_box.setStandardButtons(QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No)
msg_box.setDefaultButton(QMessageBox.StandardButton.Yes) msg_box.setDefaultButton(QMessageBox.StandardButton.Yes)
msg_box.setWindowTitle(app.translate("MainWindow", "NUSGet Update Available")) msg_box.setWindowTitle(app.translate("MainWindow", "NUSGet Update Available"))
msg_box.setText(app.translate("MainWindow", "There's a newer version of NUSGet available!")) msg_box.setText(app.translate("MainWindow", "<b>There's a newer version of NUSGet available!</b>"))
msg_box.setInformativeText(app.translate("MainWindow", "You're currently running v{nusget_version}, " msg_box.setInformativeText(app.translate("MainWindow", "You're currently running v{nusget_version}, "
"but v{new_version} is available on GitHub. Would you like to view" "but v{new_version} is available on GitHub. Would you like to view"
" the latest version?" " the latest version?"
@ -281,17 +278,17 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.ui.version_entry.setEnabled(False) self.ui.version_entry.setEnabled(False)
self.ui.download_btn.setEnabled(False) self.ui.download_btn.setEnabled(False)
self.ui.script_btn.setEnabled(False) self.ui.script_btn.setEnabled(False)
self.ui.pack_archive_chkbox.setEnabled(False) self.ui.pack_archive_checkbox.setEnabled(False)
self.ui.keep_enc_chkbox.setEnabled(False) self.ui.keep_enc_checkbox.setEnabled(False)
self.ui.create_dec_chkbox.setEnabled(False) self.ui.create_dec_checkbox.setEnabled(False)
self.ui.use_local_chkbox.setEnabled(False) self.ui.use_local_checkbox.setEnabled(False)
self.ui.patch_ios_chkbox.setEnabled(False) self.ui.patch_ios_checkbox.setEnabled(False)
self.ui.use_wiiu_nus_chkbox.setEnabled(False) self.ui.use_wiiu_nus_checkbox.setEnabled(False)
self.ui.pack_vwii_mode_chkbox.setEnabled(False) self.ui.pack_vwii_mode_checkbox.setEnabled(False)
self.ui.archive_file_entry.setEnabled(False) self.ui.archive_file_entry.setEnabled(False)
self.ui.console_select_dropdown.setEnabled(False) self.ui.console_select_dropdown.setEnabled(False)
self.ui.auto_update_chkbox.setEnabled(False) self.ui.auto_update_checkbox.setEnabled(False)
self.ui.custom_out_dir_chkbox.setEnabled(False) self.ui.custom_out_dir_checkbox.setEnabled(False)
self.ui.custom_out_dir_entry.setEnabled(False) self.ui.custom_out_dir_entry.setEnabled(False)
self.ui.custom_out_dir_btn.setEnabled(False) self.ui.custom_out_dir_btn.setEnabled(False)
self.log_text = "" self.log_text = ""
@ -303,25 +300,25 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.ui.version_entry.setEnabled(True) self.ui.version_entry.setEnabled(True)
self.ui.download_btn.setEnabled(True) self.ui.download_btn.setEnabled(True)
self.ui.script_btn.setEnabled(True) self.ui.script_btn.setEnabled(True)
self.ui.pack_archive_chkbox.setEnabled(True) self.ui.pack_archive_checkbox.setEnabled(True)
self.ui.keep_enc_chkbox.setEnabled(True) self.ui.keep_enc_checkbox.setEnabled(True)
self.ui.create_dec_chkbox.setEnabled(True) self.ui.create_dec_checkbox.setEnabled(True)
self.ui.use_local_chkbox.setEnabled(True) self.ui.use_local_checkbox.setEnabled(True)
self.ui.patch_ios_chkbox.setEnabled(True) self.ui.patch_ios_checkbox.setEnabled(True)
self.ui.use_wiiu_nus_chkbox.setEnabled(True) self.ui.use_wiiu_nus_checkbox.setEnabled(True)
self.ui.console_select_dropdown.setEnabled(True) self.ui.console_select_dropdown.setEnabled(True)
if self.ui.pack_archive_chkbox.isChecked() is True: if self.ui.pack_archive_checkbox.isChecked() is True:
self.ui.archive_file_entry.setEnabled(True) self.ui.archive_file_entry.setEnabled(True)
self.ui.auto_update_chkbox.setEnabled(True) self.ui.auto_update_checkbox.setEnabled(True)
self.ui.custom_out_dir_chkbox.setEnabled(True) self.ui.custom_out_dir_checkbox.setEnabled(True)
if self.ui.custom_out_dir_chkbox.isChecked() is True: if self.ui.custom_out_dir_checkbox.isChecked() is True:
self.ui.custom_out_dir_entry.setEnabled(True) self.ui.custom_out_dir_entry.setEnabled(True)
self.ui.custom_out_dir_btn.setEnabled(True) self.ui.custom_out_dir_btn.setEnabled(True)
def download_btn_pressed(self): def download_btn_pressed(self):
# Throw an error and make a message box appear if you haven't selected any options to output the title. # Throw an error and make a message box appear if you haven't selected any options to output the title.
if (self.ui.pack_archive_chkbox.isChecked() is False and self.ui.keep_enc_chkbox.isChecked() is False and if (self.ui.pack_archive_checkbox.isChecked() is False and self.ui.keep_enc_checkbox.isChecked() is False and
self.ui.create_dec_chkbox.isChecked() is False): self.ui.create_dec_checkbox.isChecked() is False):
msg_box = QMessageBox() msg_box = QMessageBox()
msg_box.setIcon(QMessageBox.Icon.Critical) msg_box.setIcon(QMessageBox.Icon.Critical)
msg_box.setStandardButtons(QMessageBox.StandardButton.Ok) msg_box.setStandardButtons(QMessageBox.StandardButton.Ok)
@ -334,7 +331,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
return return
self.lock_ui() self.lock_ui()
# Check for a custom output directory, and ensure that it's valid. If it is, then use that. # Check for a custom output directory, and ensure that it's valid. If it is, then use that.
if self.ui.custom_out_dir_chkbox.isChecked() and self.ui.custom_out_dir_entry.text() != "": if self.ui.custom_out_dir_checkbox.isChecked() and self.ui.custom_out_dir_entry.text() != "":
out_path = pathlib.Path(self.ui.custom_out_dir_entry.text()) out_path = pathlib.Path(self.ui.custom_out_dir_entry.text())
if not out_path.exists() or not out_path.is_dir(): if not out_path.exists() or not out_path.is_dir():
msg_box = QMessageBox() msg_box = QMessageBox()
@ -353,15 +350,15 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# Create a new worker object to handle the download in a new thread. # Create a new worker object to handle the download in a new thread.
if self.ui.console_select_dropdown.currentText() == "DSi": if self.ui.console_select_dropdown.currentText() == "DSi":
worker = Worker(run_nus_download_dsi, out_path, self.ui.tid_entry.text(), worker = Worker(run_nus_download_dsi, out_path, self.ui.tid_entry.text(),
self.ui.version_entry.text(), self.ui.pack_archive_chkbox.isChecked(), self.ui.version_entry.text(), self.ui.pack_archive_checkbox.isChecked(),
self.ui.keep_enc_chkbox.isChecked(), self.ui.create_dec_chkbox.isChecked(), self.ui.keep_enc_checkbox.isChecked(), self.ui.create_dec_checkbox.isChecked(),
self.ui.use_local_chkbox.isChecked(), self.ui.archive_file_entry.text()) self.ui.use_local_checkbox.isChecked(), self.ui.archive_file_entry.text())
else: else:
worker = Worker(run_nus_download_wii, out_path, self.ui.tid_entry.text(), worker = Worker(run_nus_download_wii, out_path, self.ui.tid_entry.text(),
self.ui.version_entry.text(), self.ui.pack_archive_chkbox.isChecked(), self.ui.version_entry.text(), self.ui.pack_archive_checkbox.isChecked(),
self.ui.keep_enc_chkbox.isChecked(), self.ui.create_dec_chkbox.isChecked(), self.ui.keep_enc_checkbox.isChecked(), self.ui.create_dec_checkbox.isChecked(),
self.ui.use_wiiu_nus_chkbox.isChecked(), self.ui.use_local_chkbox.isChecked(), self.ui.use_wiiu_nus_checkbox.isChecked(), self.ui.use_local_checkbox.isChecked(),
self.ui.pack_vwii_mode_chkbox.isChecked(), self.ui.patch_ios_chkbox.isChecked(), self.ui.pack_vwii_mode_checkbox.isChecked(), self.ui.patch_ios_checkbox.isChecked(),
self.ui.archive_file_entry.text()) self.ui.archive_file_entry.text())
worker.signals.result.connect(self.check_download_result) worker.signals.result.connect(self.check_download_result)
worker.signals.progress.connect(self.update_log_text) worker.signals.progress.connect(self.update_log_text)
@ -375,30 +372,30 @@ class MainWindow(QMainWindow, Ui_MainWindow):
msg_box.setDefaultButton(QMessageBox.StandardButton.Ok) msg_box.setDefaultButton(QMessageBox.StandardButton.Ok)
if result == -1: if result == -1:
window_title = app.translate("MainWindow", "Invalid Title ID") window_title = app.translate("MainWindow", "Invalid Title ID")
title_text = app.translate("MainWindow", "The Title ID you have entered is not in a valid format!") title_text = app.translate("MainWindow", "<b>The Title ID you have entered is not in a valid format!</b>")
body_text = app.translate("MainWindow", "Title IDs must be 16 digit strings of numbers and letters. Please enter a correctly " body_text = app.translate("MainWindow", "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.") "formatted Title ID, or select one from the menu on the left.")
elif result == -2: elif result == -2:
window_title = app.translate("MainWindow", "Title ID/Version Not Found") window_title = app.translate("MainWindow", "Title ID/Version Not Found")
title_text = app.translate("MainWindow", "No title with the provided Title ID or version could be found!") title_text = app.translate("MainWindow", "<b>No title with the provided Title ID or version could be found!</b>")
body_text = app.translate("MainWindow", "Please make sure that you have entered a valid Title ID, or selected one from the " body_text = app.translate("MainWindow", "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.") "title database, and that the provided version exists for the title you are attempting to download.")
elif result == -3: elif result == -3:
window_title = app.translate("MainWindow", "Content Decryption Failed") window_title = app.translate("MainWindow", "Content Decryption Failed")
title_text = app.translate("MainWindow", "Content decryption was not successful! Decrypted contents could not be created.") title_text = app.translate("MainWindow", "<b>Content decryption was not successful! Decrypted contents could not be created.</b>")
body_text = app.translate("MainWindow", "Your TMD or Ticket may be damaged, or they may not correspond with the content being " body_text = app.translate("MainWindow", "Your TMD or Ticket may be damaged, or they may not correspond with the content being "
"decrypted. If you have checked \"Use local files, if they exist\", try disabling that " "decrypted. If you have checked \"Use local files, if they exist\", try disabling that "
"option before trying the download again to fix potential issues with local data.") "option before trying the download again to fix potential issues with local data.")
elif result == 1: elif result == 1:
msg_box.setIcon(QMessageBox.Icon.Warning) msg_box.setIcon(QMessageBox.Icon.Warning)
window_title = app.translate("MainWindow", "Ticket Not Available") window_title = app.translate("MainWindow", "Ticket Not Available")
title_text = app.translate("MainWindow", "No Ticket is Available for the Requested Title!") title_text = app.translate("MainWindow", "<b>No Ticket is Available for the Requested Title!</b>")
body_text = app.translate("MainWindow", "A ticket could not be downloaded for the requested title, but you have selected \"Pack" body_text = app.translate("MainWindow", "A ticket could not be downloaded for the requested title, but you have selected \"Pack"
" installable archive\" or \"Create decrypted contents\". These options are not " " installable archive\" or \"Create decrypted contents\". These options are not "
"available for titles without a ticket. Only encrypted contents have been saved.") "available for titles without a ticket. Only encrypted contents have been saved.")
else: else:
window_title = app.translate("MainWindow", "Unknown Error") window_title = app.translate("MainWindow", "Unknown Error")
title_text = app.translate("MainWindow", "An Unknown Error has Occurred!") title_text = app.translate("MainWindow", "<b>An Unknown Error has Occurred!</b>")
body_text = app.translate("MainWindow", "Please try again. If this issue persists, please open a new issue on GitHub detailing" body_text = app.translate("MainWindow", "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.") " what you were trying to do when this error occurred.")
if result != 0: if result != 0:
@ -421,7 +418,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
msg_box.setStandardButtons(QMessageBox.StandardButton.Ok) msg_box.setStandardButtons(QMessageBox.StandardButton.Ok)
msg_box.setDefaultButton(QMessageBox.StandardButton.Ok) msg_box.setDefaultButton(QMessageBox.StandardButton.Ok)
msg_box.setWindowTitle(app.translate("MainWindow", "Script Issues Occurred")) msg_box.setWindowTitle(app.translate("MainWindow", "Script Issues Occurred"))
msg_box.setText(app.translate("MainWindow", "Some issues occurred while running the download script.")) msg_box.setText(app.translate("MainWindow", "<b>Some issues occurred while running the download script.</b>"))
msg_box.setInformativeText( msg_box.setInformativeText(
app.translate("MainWindow", "Check the log for more details about what issues were encountered.")) app.translate("MainWindow", "Check the log for more details about what issues were encountered."))
msg_box.exec() msg_box.exec()
@ -448,11 +445,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def selected_console_changed(self): def selected_console_changed(self):
# Callback function to enable or disable console-specific settings based on the selected console. # Callback function to enable or disable console-specific settings based on the selected console.
if self.ui.console_select_dropdown.currentText() == "vWii": if self.ui.console_select_dropdown.currentText() == "vWii":
self.ui.pack_vwii_mode_chkbox.setEnabled(True) self.ui.pack_vwii_mode_checkbox.setEnabled(True)
elif self.ui.console_select_dropdown.currentText() == "Wii": elif self.ui.console_select_dropdown.currentText() == "Wii":
self.ui.pack_vwii_mode_chkbox.setEnabled(False) self.ui.pack_vwii_mode_checkbox.setEnabled(False)
elif self.ui.console_select_dropdown.currentText() == "DSi": elif self.ui.console_select_dropdown.currentText() == "DSi":
self.ui.pack_vwii_mode_chkbox.setEnabled(False) self.ui.pack_vwii_mode_checkbox.setEnabled(False)
def script_btn_pressed(self): def script_btn_pressed(self):
msg_box = QMessageBox() msg_box = QMessageBox()
@ -471,7 +468,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
with open(file_name[0]) as script_file: with open(file_name[0]) as script_file:
script_data = json.load(script_file) script_data = json.load(script_file)
except json.JSONDecodeError as e: except json.JSONDecodeError as e:
msg_box.setText(app.translate("MainWindow", "An error occurred while parsing the script file!")) msg_box.setText(app.translate("MainWindow", "<b>An error occurred while parsing the script file!</b>"))
msg_box.setInformativeText(app.translate("MainWindow", f"Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.")) msg_box.setInformativeText(app.translate("MainWindow", f"Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again."))
msg_box.exec() msg_box.exec()
return return
@ -481,7 +478,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
try: try:
tid = title["Title ID"] tid = title["Title ID"]
except KeyError: except KeyError:
msg_box.setText(app.translate("MainWindow", "An error occurred while parsing Title IDs!")) msg_box.setText(app.translate("MainWindow", "<b>An error occurred while parsing Title IDs!</b>"))
msg_box.setInformativeText(app.translate("MainWindow", f"The title at index {script_data.index(title)} does not have a Title ID!")) msg_box.setInformativeText(app.translate("MainWindow", f"The title at index {script_data.index(title)} does not have a Title ID!"))
msg_box.exec() msg_box.exec()
return return
@ -524,10 +521,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
break break
titles.append(BatchTitleData(tid, title_version, console, archive_name)) titles.append(BatchTitleData(tid, title_version, console, archive_name))
self.lock_ui() self.lock_ui()
worker = Worker(run_nus_download_batch, out_folder, titles, self.ui.pack_archive_chkbox.isChecked(), worker = Worker(run_nus_download_batch, out_folder, titles, self.ui.pack_archive_checkbox.isChecked(),
self.ui.keep_enc_chkbox.isChecked(), self.ui.create_dec_chkbox.isChecked(), self.ui.keep_enc_checkbox.isChecked(), self.ui.create_dec_checkbox.isChecked(),
self.ui.use_wiiu_nus_chkbox.isChecked(), self.ui.use_local_chkbox.isChecked(), self.ui.use_wiiu_nus_checkbox.isChecked(), self.ui.use_local_checkbox.isChecked(),
self.ui.pack_vwii_mode_chkbox.isChecked(), self.ui.patch_ios_chkbox.isChecked()) self.ui.pack_vwii_mode_checkbox.isChecked(), self.ui.patch_ios_checkbox.isChecked())
worker.signals.result.connect(self.check_batch_result) worker.signals.result.connect(self.check_batch_result)
worker.signals.progress.connect(self.update_log_text) worker.signals.progress.connect(self.update_log_text)
self.threadpool.start(worker) self.threadpool.start(worker)
@ -546,7 +543,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
msg_box.setStandardButtons(QMessageBox.StandardButton.Ok) msg_box.setStandardButtons(QMessageBox.StandardButton.Ok)
msg_box.setDefaultButton(QMessageBox.StandardButton.Ok) msg_box.setDefaultButton(QMessageBox.StandardButton.Ok)
msg_box.setWindowTitle(app.translate("MainWindow", "Invalid Download Directory")) msg_box.setWindowTitle(app.translate("MainWindow", "Invalid Download Directory"))
msg_box.setText(app.translate("MainWindow", "The specified download directory does not exist!")) msg_box.setText(app.translate("MainWindow", "<b>The specified download directory does not exist!</b>"))
msg_box.setInformativeText(app.translate("MainWindow", msg_box.setInformativeText(app.translate("MainWindow",
"Please make sure the download directory you want to use exists, and " "Please make sure the download directory you want to use exists, and "
"that you have permission to access it.")) "that you have permission to access it."))
@ -569,19 +566,18 @@ class MainWindow(QMainWindow, Ui_MainWindow):
save_config(config_data) save_config(config_data)
def about_nusget(self): def about_nusget(self):
version_str = app.translate("MainWindow", "Version {nusget_version}".format(nusget_version=nusget_version)) about_box = AboutNUSGet([nusget_version, version("libWiiPy"), version("libTWLPy")])
about_box = AboutNUSGet(version_str)
about_box.exec() about_box.exec()
if __name__ == "__main__": if __name__ == "__main__":
app = QApplication(sys.argv) app = QApplication(sys.argv)
# Load the database files, this will work for both the raw Python file and compiled standalone/onefile binaries. # Load the database files, this will work for both the raw Python file and compiled standalone/onefile binaries.
database_file = open(os.path.join(os.path.dirname(__file__), "data/wii-database.json")) database_file = open(os.path.join(os.path.dirname(__file__), "data", "wii-database.json"))
wii_database = json.load(database_file) wii_database = json.load(database_file)
database_file = open(os.path.join(os.path.dirname(__file__), "data/vwii-database.json")) database_file = open(os.path.join(os.path.dirname(__file__), "data", "vwii-database.json"))
vwii_database = json.load(database_file) vwii_database = json.load(database_file)
database_file = open(os.path.join(os.path.dirname(__file__), "data/dsi-database.json")) database_file = open(os.path.join(os.path.dirname(__file__), "data", "dsi-database.json"))
dsi_database = json.load(database_file) dsi_database = json.load(database_file)
# Load the user's Downloads directory, which of course requires different steps on Windows vs macOS/Linux. # Load the user's Downloads directory, which of course requires different steps on Windows vs macOS/Linux.
if os.name == 'nt': if os.name == 'nt':
@ -610,28 +606,34 @@ if __name__ == "__main__":
config_data: dict = {"auto_update": True} config_data: dict = {"auto_update": True}
save_config(config_data) save_config(config_data)
# Load the system plugins directory on Linux for system styles, if it exists. Try using Breeze if available, because # This is essentially obsolete now with the addition of the custom stylesheet, but I'm keeping it just in case.
# it looks nice, but fallback on kvantum if it isn't, since kvantum is likely to exist. If all else fails, fusion. # # Load the system plugins directory on Linux for system styles, if it exists. Try using Breeze if available, because
if platform.system() == "Linux": # # it looks nice, but fallback on kvantum if it isn't, since kvantum is likely to exist. If all else fails, fusion.
if os.path.isdir("/usr/lib/qt6/plugins"): # if platform.system() == "Linux":
import subprocess # if os.path.isdir("/usr/lib/qt6/plugins"):
try: # import subprocess
# This CANNOT be the best way to get the system Qt version, but it's what I came up with for now. # try:
result = subprocess.run(['/usr/lib/qt6/bin/qtdiag'], stdout=subprocess.PIPE) # # This CANNOT be the best way to get the system Qt version, but it's what I came up with for now.
result_str = result.stdout.decode("utf-8").split("\n")[0] # result = subprocess.run(['/usr/lib/qt6/bin/qtdiag'], stdout=subprocess.PIPE)
sys_qt_ver = result_str.split(" ")[1].split(".") # result_str = result.stdout.decode("utf-8").split("\n")[0]
pyside_qt_ver = version("PySide6").split(".") # sys_qt_ver = result_str.split(" ")[1].split(".")
if sys_qt_ver[0:2] == pyside_qt_ver[0:2]: # pyside_qt_ver = version("PySide6").split(".")
app.addLibraryPath("/usr/lib/qt6/plugins") # if sys_qt_ver[0:2] == pyside_qt_ver[0:2]:
if "Breeze" in QStyleFactory.keys(): # app.addLibraryPath("/usr/lib/qt6/plugins")
app.setStyle("Breeze") # if "Breeze" in QStyleFactory.keys():
elif "kvantum" in QStyleFactory.keys(): # app.setStyle("Breeze")
app.setStyle("kvantum") # elif "kvantum" in QStyleFactory.keys():
except Exception as e: # app.setStyle("kvantum")
print(e) # except Exception as e:
# The macOS Qt theme sucks, so let's avoid using it. # print(e)
elif platform.system() == "Darwin":
app.setStyle("fusion") # Load Fusion because that's objectively the best base theme, and then load the fancy stylesheet on top to make
# NUSGet look nice and pretty.
app.setStyle("fusion")
stylesheet = open(os.path.join(os.path.dirname(__file__), "resources", "style.qss")).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)
app.setStyleSheet(stylesheet)
# Load base Qt translations, and then app-specific translations. # Load base Qt translations, and then app-specific translations.
path = QLibraryInfo.path(QLibraryInfo.LibraryPath.TranslationsPath) path = QLibraryInfo.path(QLibraryInfo.LibraryPath.TranslationsPath)
@ -639,13 +641,13 @@ if __name__ == "__main__":
if translator.load(QLocale.system(), 'qtbase', '_', path): if translator.load(QLocale.system(), 'qtbase', '_', path):
app.installTranslator(translator) app.installTranslator(translator)
translator = QTranslator(app) translator = QTranslator(app)
path = os.path.join(os.path.dirname(__file__), "resources/translations") path = os.path.join(os.path.dirname(__file__), "resources", "translations")
if translator.load(QLocale.system(), 'nusget', '_', path): if translator.load(QLocale.system(), 'nusget', '_', path):
app.installTranslator(translator) app.installTranslator(translator)
window = MainWindow() window = MainWindow()
window.setWindowTitle("NUSGet") window.setWindowTitle("NUSGet")
window.setWindowIcon(QIcon(os.path.join(os.path.dirname(__file__), "resources/icon.png"))) app.setWindowIcon(QIcon(os.path.join(os.path.dirname(__file__), "resources", "icon.png")))
window.show() window.show()
sys.exit(app.exec()) sys.exit(app.exec())

View File

@ -3,7 +3,7 @@
"NUSGet.py", "NUSGet.py",
"./modules/core.py", "./modules/core.py",
"./qt/ui/MainMenu.ui", "./qt/ui/MainMenu.ui",
"./qt/ui/AboutNUSGet.ui", "./qt/py/ui_AboutDialog.py",
"./resources/translations/nusget_es.ts", "./resources/translations/nusget_es.ts",
"./resources/translations/nusget_no.ts", "./resources/translations/nusget_no.ts",
"./resources/translations/nusget_nb.ts", "./resources/translations/nusget_nb.ts",

View File

@ -72,6 +72,7 @@ On Windows, you can use the PowerShell script `Build.ps1` in place of the Makefi
## Translations ## Translations
A huge thanks to all the wonderful translators who've helped make NUSGet available to more people! A huge thanks to all the wonderful translators who've helped make NUSGet available to more people!
- **French:** [@rougets](https://github.com/rougets)
- **German:** [@yeah-its-gloria](https://github.com/yeah-its-gloria) - **German:** [@yeah-its-gloria](https://github.com/yeah-its-gloria)
- **Italian:** [@LNLenost](https://github.com/LNLenost) - **Italian:** [@LNLenost](https://github.com/LNLenost)
- **Korean:** [@DDinghoya](https://github.com/DDinghoya) - **Korean:** [@DDinghoya](https://github.com/DDinghoya)

View File

@ -64,7 +64,9 @@ def check_nusget_updates(app, current_version: str, progress_callback=None) -> s
new_version_split = new_version.split('.') new_version_split = new_version.split('.')
current_version_split = current_version.split('.') current_version_split = current_version.split('.')
for place in range(len(new_version_split)): for place in range(len(new_version_split)):
if new_version_split[place] > current_version_split[place]: if new_version_split[place] < current_version_split[place]:
return None
elif new_version_split[place] > current_version_split[place]:
progress_callback.emit(app.translate("MainWindow", "\n\nThere's a newer version of NUSGet available!")) progress_callback.emit(app.translate("MainWindow", "\n\nThere's a newer version of NUSGet available!"))
return new_version return new_version
progress_callback.emit(app.translate("MainWindow", "\n\nYou're running the latest release of NUSGet.")) progress_callback.emit(app.translate("MainWindow", "\n\nYou're running the latest release of NUSGet."))

View File

@ -1,13 +1,160 @@
# "qt/py/ui_AboutDialog.py", licensed under the MIT license # "qt/py/ui_AboutDialog.py", licensed under the MIT license
# Copyright 2024-2025 NinjaCheetah and Contributors # Copyright 2024-2025 NinjaCheetah and Contributors
# Thanks Isla and Alex for making such a nice about dialog that I could then "borrow" :p
from PySide6.QtWidgets import QDialog import os
from qt.py.ui_AboutNUSGet import Ui_AboutNUSGet import pathlib
import webbrowser
from PySide6.QtCore import Qt, QCoreApplication
from PySide6.QtWidgets import QDialog, QLabel, QVBoxLayout, QPushButton
from PySide6.QtGui import QIcon
class AboutNUSGet(QDialog): class AboutNUSGet(QDialog):
def __init__(self, version_str): def __init__(self, versions):
super().__init__() super().__init__()
self.ui = Ui_AboutNUSGet() self.setWindowTitle(self.tr("About NUSGet"))
self.ui.setupUi(self) self.setFixedWidth(450)
self.setFixedHeight(500)
self.ui.version_lbl.setText(version_str) # Set background color to match main app
self.setStyleSheet("""
Credits {
background-color: #222222;
color: #ffffff;
}
QLabel {
color: #ffffff;
}
QLabel[class="title"] {
font-size: 20px;
font-weight: bold;
color: #ffffff;
}
QLabel[class="version"] {
font-size: 13px;
color: #aaaaaa;
}
QLabel[class="copyright"] {
font-size: 12px;
color: #888888;
}
QLabel[class="header"] {
font-size: 14px;
font-weight: bold;
border-bottom: 1px solid #444444;
padding-bottom: 4px;
margin-top: 8px;
}
QPushButton {
background-color: transparent;
border: 1px solid rgba(70, 70, 70, 1);
border-radius: 8px;
padding: 8px 12px;
margin: 4px 0px;
font-size: 13px;
font-weight: 500;
color: #ffffff;
text-align: center;
}
QPushButton:hover {
background-color: rgba(60, 60, 60, 1);
border-color: #4a86e8;
}
QPushButton:pressed {
background-color: rgba(26, 115, 232, 0.15);
border: 1px solid #1a73e8;
}""")
# Create main layout
self.layout = QVBoxLayout()
self.layout.setSpacing(4)
self.layout.setContentsMargins(30, 20, 30, 20)
# Logo
logo_label = QLabel()
icon = QIcon(os.path.join(pathlib.Path(os.path.dirname(__file__)).resolve().parent.parent, "resources", "icon.png"))
logo_pixmap = icon.pixmap(96, 96)
logo_label.setPixmap(logo_pixmap)
logo_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
# Title
title_label = QLabel(self.tr("NUSGet"))
title_label.setProperty("class", "title")
title_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
# NUSGet Version
version_label = QLabel(self.tr("Version {nusget_version}".format(nusget_version=versions[0])))
version_label.setProperty("class", "version")
version_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
# Library Versions
libraries_label = QLabel(self.tr("Using libWiiPy {libwiipy_version} & libTWLPy {libtwlpy_version}"
.format(libwiipy_version=versions[1], libtwlpy_version=versions[2])))
libraries_label.setProperty("class", "version")
libraries_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
# Copyright
copyright_label = QLabel(self.tr("© 2024-2025 NinjaCheetah & Contributors"))
copyright_label.setProperty("class", "copyright")
copyright_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
# Add header section
self.layout.addWidget(logo_label)
self.layout.addWidget(title_label)
self.layout.addWidget(version_label)
self.layout.addWidget(libraries_label)
self.layout.addWidget(copyright_label)
self.layout.addSpacing(15)
# External links layout
links_layout = QVBoxLayout()
# GitHub button
self.github_button = QPushButton(self.tr("View Project on GitHub"))
self.github_button.clicked.connect(lambda: webbrowser.open("https://github.com/NinjaCheetah/NUSGet"))
links_layout.addWidget(self.github_button)
# Add the links layout to main layout
self.layout.addLayout(links_layout)
self.layout.addSpacing(15)
# Add a horizontal line
line = QLabel()
line.setStyleSheet("background-color: #444444; height: 1px;")
line.setFixedHeight(1)
self.layout.addWidget(line)
self.layout.addSpacing(10)
# Team members header
team_header = QLabel(self.tr("Translations"))
team_header.setProperty("class", "header")
self.layout.addWidget(team_header)
self.layout.addSpacing(5)
# Team members with roles
self.people = {
"rougets": QLabel(self.tr(
"French (Français): <a href=https://github.com/rougets style='color: #4a86e8; text-decoration: none;'><b>rougets</b></a>")),
"yeah-its-gloria": QLabel(self.tr(
"German (Deutsch): <a href=https://github.com/yeah-its-gloria style='color: #4a86e8; text-decoration: none;'><b>yeah-its-gloria</b></a>")),
"LNLenost": QLabel(self.tr(
"Italian (Italiano): <a href=https://github.com/LNLenost style='color: #4a86e8; text-decoration: none;'><b>LNLenost</b></a>")),
"DDinghoya": QLabel(self.tr(
"Korean (\ud55c\uad6d\uc5b4): <a href=https://github.com/DDinghoya style='color: #4a86e8; text-decoration: none;'><b>DDinghoya</b></a>")),
"rolfiee": QLabel(self.tr(
"Norwegian (Norsk): <a href=https://github.com/rolfiee style='color: #4a86e8; text-decoration: none;'><b>rolfiee</b></a>")),
"NotImplementedLife": QLabel(self.tr(
"Romanian (Rom\u00e2n\u0103): <a href=https://github.com/NotImplementedLife style='color: #4a86e8; text-decoration: none;'><b>NotImplementedLife</b></a>"))
}
# Add team members to layout
for credit in self.people.values():
credit.setOpenExternalLinks(True)
credit.setContentsMargins(15, 0, 0, 0)
self.layout.addWidget(credit)
# Add spacer at the bottom
self.layout.addStretch()
self.setLayout(self.layout)

View File

@ -1,131 +0,0 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'AboutNUSGet.ui'
##
## Created by: Qt User Interface Compiler version 6.9.0
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
QMetaObject, QObject, QPoint, QRect,
QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QAbstractButton, QApplication, QDialog, QDialogButtonBox,
QHBoxLayout, QLabel, QLayout, QSizePolicy,
QSpacerItem, QTextBrowser, QVBoxLayout, QWidget)
class Ui_AboutNUSGet(object):
def setupUi(self, AboutNUSGet):
if not AboutNUSGet.objectName():
AboutNUSGet.setObjectName(u"AboutNUSGet")
AboutNUSGet.resize(400, 300)
self.verticalLayout = QVBoxLayout(AboutNUSGet)
self.verticalLayout.setObjectName(u"verticalLayout")
self.outer_layout = QHBoxLayout()
self.outer_layout.setObjectName(u"outer_layout")
self.icon_layout = QVBoxLayout()
self.icon_layout.setObjectName(u"icon_layout")
self.icon_layout.setSizeConstraint(QLayout.SizeConstraint.SetDefaultConstraint)
self.icon_lbl = QLabel(AboutNUSGet)
icon = QIcon("resources/icon.png")
pixmap = icon.pixmap(QSize(75, 75))
self.icon_lbl.setPixmap(pixmap)
self.icon_lbl.setObjectName(u"icon_lbl")
self.icon_lbl.setMaximumSize(QSize(75, 75))
self.icon_layout.addWidget(self.icon_lbl)
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.icon_layout.addItem(self.verticalSpacer)
self.outer_layout.addLayout(self.icon_layout)
self.details_layout = QVBoxLayout()
self.details_layout.setObjectName(u"details_layout")
self.about_title_lbl = QLabel(AboutNUSGet)
self.about_title_lbl.setObjectName(u"about_title_lbl")
font = QFont()
font.setPointSize(15)
font.setBold(True)
self.about_title_lbl.setFont(font)
self.details_layout.addWidget(self.about_title_lbl)
self.version_lbl = QLabel(AboutNUSGet)
self.version_lbl.setObjectName(u"version_lbl")
font1 = QFont()
font1.setBold(True)
self.version_lbl.setFont(font1)
self.details_layout.addWidget(self.version_lbl)
self.detail_text_lbl = QLabel(AboutNUSGet)
self.detail_text_lbl.setObjectName(u"detail_text_lbl")
self.detail_text_lbl.setWordWrap(True)
self.details_layout.addWidget(self.detail_text_lbl)
self.textBrowser = QTextBrowser(AboutNUSGet)
self.textBrowser.setObjectName(u"textBrowser")
self.details_layout.addWidget(self.textBrowser)
self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.details_layout.addItem(self.verticalSpacer_2)
self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.details_layout.addItem(self.horizontalSpacer)
self.outer_layout.addLayout(self.details_layout)
self.verticalLayout.addLayout(self.outer_layout)
self.buttonBox = QDialogButtonBox(AboutNUSGet)
self.buttonBox.setObjectName(u"buttonBox")
self.buttonBox.setOrientation(Qt.Orientation.Horizontal)
self.buttonBox.setStandardButtons(QDialogButtonBox.StandardButton.Close)
self.verticalLayout.addWidget(self.buttonBox)
self.retranslateUi(AboutNUSGet)
self.buttonBox.accepted.connect(AboutNUSGet.accept)
self.buttonBox.rejected.connect(AboutNUSGet.reject)
QMetaObject.connectSlotsByName(AboutNUSGet)
# setupUi
def retranslateUi(self, AboutNUSGet):
AboutNUSGet.setWindowTitle(QCoreApplication.translate("AboutNUSGet", u"Dialog", None))
self.icon_lbl.setText("")
self.about_title_lbl.setText(QCoreApplication.translate("AboutNUSGet", u"About NUSGet", None))
self.version_lbl.setText(QCoreApplication.translate("AboutNUSGet", u"Placeholder Version String", None))
self.detail_text_lbl.setText(QCoreApplication.translate("AboutNUSGet", u"Copyright (c) 2024-2025 NinjaCheetah & Contributors", None))
self.textBrowser.setHtml(QCoreApplication.translate("AboutNUSGet", u"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"hr { height: 1px; border-width: 0; }\n"
"li.unchecked::marker { content: \"\\2610\"; }\n"
"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=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:700;\">Translations</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">German (Deutsch): <a href=\"https://github.com/yeah-its-gloria\"><span style=\" text-decoration: underline; color:#3586ff;\">yeah-its-gloria</span></a></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; mar"
"gin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Italian (Italiano): <a href=\"https://github.com/LNLenost\"><span style=\" text-decoration: underline; color:#3586ff;\">LNLenost</span></a></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Korean (\ud55c\uad6d\uc5b4): <a href=\"https://github.com/DDinghoya\"><span style=\" text-decoration: underline; color:#3586ff;\">DDinghoya</span></a></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Norwegian (Norsk): <a href=\"https://github.com/rolfiee\"><span style=\" text-decoration: underline; color:#3586ff;\">rolfiee</span></a></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Romanian (Rom\u00e2n\u0103): <a href=\"https://github.com/NotImplementedLife\"><span style=\" text-decoration: underline; color:#3586ff;\">"
"NotImplementedLife</span></a></p></body></html>", None))
# retranslateUi

View File

@ -16,19 +16,21 @@ from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
QIcon, QImage, QKeySequence, QLinearGradient, QIcon, QImage, QKeySequence, QLinearGradient,
QPainter, QPalette, QPixmap, QRadialGradient, QPainter, QPalette, QPixmap, QRadialGradient,
QTransform) QTransform)
from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QHBoxLayout, from PySide6.QtWidgets import (QApplication, QComboBox, QHBoxLayout, QHeaderView,
QHeaderView, QLabel, QLayout, QLineEdit, QLabel, QLayout, QLineEdit, QMainWindow,
QMainWindow, QMenu, QMenuBar, QPushButton, QMenu, QMenuBar, QPushButton, QSizePolicy,
QSizePolicy, QSpacerItem, QTabWidget, QTextBrowser, QSpacerItem, QTabWidget, QTextBrowser, QTreeView,
QTreeView, QVBoxLayout, QWidget) QVBoxLayout, QWidget)
from qt.py.ui_WrapCheckboxWidget import WrapCheckboxWidget
class Ui_MainWindow(object): class Ui_MainWindow(object):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
if not MainWindow.objectName(): if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow") MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(1010, 625) MainWindow.resize(1010, 675)
MainWindow.setMinimumSize(QSize(1010, 625)) MainWindow.setMinimumSize(QSize(1010, 675))
MainWindow.setMaximumSize(QSize(1010, 625)) MainWindow.setMaximumSize(QSize(1010, 675))
self.actionAbout = QAction(MainWindow) self.actionAbout = QAction(MainWindow)
self.actionAbout.setObjectName(u"actionAbout") self.actionAbout.setObjectName(u"actionAbout")
icon = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.HelpAbout)) icon = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.HelpAbout))
@ -175,7 +177,7 @@ class Ui_MainWindow(object):
self.horizontalLayout_5.setObjectName(u"horizontalLayout_5") self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
self.horizontalLayout_5.setSizeConstraint(QLayout.SizeConstraint.SetMinimumSize) self.horizontalLayout_5.setSizeConstraint(QLayout.SizeConstraint.SetMinimumSize)
self.verticalLayout_7 = QVBoxLayout() self.verticalLayout_7 = QVBoxLayout()
self.verticalLayout_7.setSpacing(5) self.verticalLayout_7.setSpacing(4)
self.verticalLayout_7.setObjectName(u"verticalLayout_7") self.verticalLayout_7.setObjectName(u"verticalLayout_7")
self.verticalLayout_7.setSizeConstraint(QLayout.SizeConstraint.SetMinimumSize) self.verticalLayout_7.setSizeConstraint(QLayout.SizeConstraint.SetMinimumSize)
self.label_3 = QLabel(self.centralwidget) self.label_3 = QLabel(self.centralwidget)
@ -186,31 +188,10 @@ class Ui_MainWindow(object):
self.verticalLayout_7.addWidget(self.label_3) self.verticalLayout_7.addWidget(self.label_3)
self.pack_archive_row = QHBoxLayout() self.pack_archive_checkbox = WrapCheckboxWidget(self.centralwidget)
self.pack_archive_row.setSpacing(10) self.pack_archive_checkbox.setObjectName(u"pack_archive_checkbox")
self.pack_archive_row.setObjectName(u"pack_archive_row")
self.pack_archive_chkbox = QCheckBox(self.centralwidget)
self.pack_archive_chkbox.setObjectName(u"pack_archive_chkbox")
sizePolicy1.setHeightForWidth(self.pack_archive_chkbox.sizePolicy().hasHeightForWidth())
self.pack_archive_chkbox.setSizePolicy(sizePolicy1)
self.pack_archive_chkbox.setText(u"")
self.pack_archive_chkbox.setChecked(True)
self.pack_archive_row.addWidget(self.pack_archive_chkbox) self.verticalLayout_7.addWidget(self.pack_archive_checkbox)
self.pack_archive_chkbox_lbl = QLabel(self.centralwidget)
self.pack_archive_chkbox_lbl.setObjectName(u"pack_archive_chkbox_lbl")
sizePolicy4 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.MinimumExpanding)
sizePolicy4.setHorizontalStretch(0)
sizePolicy4.setVerticalStretch(0)
sizePolicy4.setHeightForWidth(self.pack_archive_chkbox_lbl.sizePolicy().hasHeightForWidth())
self.pack_archive_chkbox_lbl.setSizePolicy(sizePolicy4)
self.pack_archive_chkbox_lbl.setWordWrap(True)
self.pack_archive_row.addWidget(self.pack_archive_chkbox_lbl)
self.verticalLayout_7.addLayout(self.pack_archive_row)
self.archive_file_entry = QLineEdit(self.centralwidget) self.archive_file_entry = QLineEdit(self.centralwidget)
self.archive_file_entry.setObjectName(u"archive_file_entry") self.archive_file_entry.setObjectName(u"archive_file_entry")
@ -218,124 +199,33 @@ class Ui_MainWindow(object):
self.verticalLayout_7.addWidget(self.archive_file_entry) self.verticalLayout_7.addWidget(self.archive_file_entry)
self.keep_enc_row = QHBoxLayout() self.keep_enc_checkbox = WrapCheckboxWidget(self.centralwidget)
self.keep_enc_row.setSpacing(10) self.keep_enc_checkbox.setObjectName(u"keep_enc_checkbox")
self.keep_enc_row.setObjectName(u"keep_enc_row")
self.keep_enc_chkbox = QCheckBox(self.centralwidget)
self.keep_enc_chkbox.setObjectName(u"keep_enc_chkbox")
sizePolicy1.setHeightForWidth(self.keep_enc_chkbox.sizePolicy().hasHeightForWidth())
self.keep_enc_chkbox.setSizePolicy(sizePolicy1)
self.keep_enc_chkbox.setText(u"")
self.keep_enc_chkbox.setChecked(True)
self.keep_enc_row.addWidget(self.keep_enc_chkbox) self.verticalLayout_7.addWidget(self.keep_enc_checkbox)
self.keep_enc_chkbox_lbl = QLabel(self.centralwidget) self.create_dec_checkbox = WrapCheckboxWidget(self.centralwidget)
self.keep_enc_chkbox_lbl.setObjectName(u"keep_enc_chkbox_lbl") self.create_dec_checkbox.setObjectName(u"create_dec_checkbox")
sizePolicy4.setHeightForWidth(self.keep_enc_chkbox_lbl.sizePolicy().hasHeightForWidth())
self.keep_enc_chkbox_lbl.setSizePolicy(sizePolicy4)
self.keep_enc_chkbox_lbl.setWordWrap(True)
self.keep_enc_row.addWidget(self.keep_enc_chkbox_lbl) self.verticalLayout_7.addWidget(self.create_dec_checkbox)
self.use_local_checkbox = WrapCheckboxWidget(self.centralwidget)
self.use_local_checkbox.setObjectName(u"use_local_checkbox")
self.verticalLayout_7.addLayout(self.keep_enc_row) self.verticalLayout_7.addWidget(self.use_local_checkbox)
self.create_dec_row = QHBoxLayout() self.use_wiiu_nus_checkbox = WrapCheckboxWidget(self.centralwidget)
self.create_dec_row.setSpacing(10) self.use_wiiu_nus_checkbox.setObjectName(u"use_wiiu_nus_checkbox")
self.create_dec_row.setObjectName(u"create_dec_row")
self.create_dec_chkbox = QCheckBox(self.centralwidget)
self.create_dec_chkbox.setObjectName(u"create_dec_chkbox")
sizePolicy1.setHeightForWidth(self.create_dec_chkbox.sizePolicy().hasHeightForWidth())
self.create_dec_chkbox.setSizePolicy(sizePolicy1)
self.create_dec_chkbox.setText(u"")
self.create_dec_row.addWidget(self.create_dec_chkbox) self.verticalLayout_7.addWidget(self.use_wiiu_nus_checkbox)
self.create_dec_chkbox_lbl = QLabel(self.centralwidget) self.patch_ios_checkbox = WrapCheckboxWidget(self.centralwidget)
self.create_dec_chkbox_lbl.setObjectName(u"create_dec_chkbox_lbl") self.patch_ios_checkbox.setObjectName(u"patch_ios_checkbox")
sizePolicy4.setHeightForWidth(self.create_dec_chkbox_lbl.sizePolicy().hasHeightForWidth()) self.patch_ios_checkbox.setEnabled(False)
self.create_dec_chkbox_lbl.setSizePolicy(sizePolicy4)
self.create_dec_chkbox_lbl.setWordWrap(True)
self.create_dec_row.addWidget(self.create_dec_chkbox_lbl) self.verticalLayout_7.addWidget(self.patch_ios_checkbox)
self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_7.addLayout(self.create_dec_row)
self.use_local_row = QHBoxLayout()
self.use_local_row.setSpacing(10)
self.use_local_row.setObjectName(u"use_local_row")
self.use_local_chkbox = QCheckBox(self.centralwidget)
self.use_local_chkbox.setObjectName(u"use_local_chkbox")
self.use_local_chkbox.setEnabled(True)
sizePolicy1.setHeightForWidth(self.use_local_chkbox.sizePolicy().hasHeightForWidth())
self.use_local_chkbox.setSizePolicy(sizePolicy1)
self.use_local_chkbox.setText(u"")
self.use_local_row.addWidget(self.use_local_chkbox)
self.use_local_chkbox_lbl = QLabel(self.centralwidget)
self.use_local_chkbox_lbl.setObjectName(u"use_local_chkbox_lbl")
sizePolicy4.setHeightForWidth(self.use_local_chkbox_lbl.sizePolicy().hasHeightForWidth())
self.use_local_chkbox_lbl.setSizePolicy(sizePolicy4)
self.use_local_chkbox_lbl.setWordWrap(True)
self.use_local_row.addWidget(self.use_local_chkbox_lbl)
self.verticalLayout_7.addLayout(self.use_local_row)
self.use_wiiu_nus_row = QHBoxLayout()
self.use_wiiu_nus_row.setSpacing(10)
self.use_wiiu_nus_row.setObjectName(u"use_wiiu_nus_row")
self.use_wiiu_nus_row.setSizeConstraint(QLayout.SizeConstraint.SetDefaultConstraint)
self.use_wiiu_nus_chkbox = QCheckBox(self.centralwidget)
self.use_wiiu_nus_chkbox.setObjectName(u"use_wiiu_nus_chkbox")
sizePolicy2.setHeightForWidth(self.use_wiiu_nus_chkbox.sizePolicy().hasHeightForWidth())
self.use_wiiu_nus_chkbox.setSizePolicy(sizePolicy2)
self.use_wiiu_nus_chkbox.setLayoutDirection(Qt.LayoutDirection.LeftToRight)
self.use_wiiu_nus_chkbox.setText(u"")
self.use_wiiu_nus_chkbox.setChecked(True)
self.use_wiiu_nus_row.addWidget(self.use_wiiu_nus_chkbox)
self.use_wiiu_nus_chkbox_lbl = QLabel(self.centralwidget)
self.use_wiiu_nus_chkbox_lbl.setObjectName(u"use_wiiu_nus_chkbox_lbl")
sizePolicy4.setHeightForWidth(self.use_wiiu_nus_chkbox_lbl.sizePolicy().hasHeightForWidth())
self.use_wiiu_nus_chkbox_lbl.setSizePolicy(sizePolicy4)
self.use_wiiu_nus_chkbox_lbl.setWordWrap(True)
self.use_wiiu_nus_row.addWidget(self.use_wiiu_nus_chkbox_lbl)
self.verticalLayout_7.addLayout(self.use_wiiu_nus_row)
self.patch_ios_row = QHBoxLayout()
self.patch_ios_row.setSpacing(10)
self.patch_ios_row.setObjectName(u"patch_ios_row")
self.patch_ios_chkbox = QCheckBox(self.centralwidget)
self.patch_ios_chkbox.setObjectName(u"patch_ios_chkbox")
self.patch_ios_chkbox.setEnabled(False)
sizePolicy1.setHeightForWidth(self.patch_ios_chkbox.sizePolicy().hasHeightForWidth())
self.patch_ios_chkbox.setSizePolicy(sizePolicy1)
self.patch_ios_chkbox.setText(u"")
self.patch_ios_row.addWidget(self.patch_ios_chkbox)
self.patch_ios_chkbox_lbl = QLabel(self.centralwidget)
self.patch_ios_chkbox_lbl.setObjectName(u"patch_ios_chkbox_lbl")
self.patch_ios_chkbox_lbl.setEnabled(True)
sizePolicy4.setHeightForWidth(self.patch_ios_chkbox_lbl.sizePolicy().hasHeightForWidth())
self.patch_ios_chkbox_lbl.setSizePolicy(sizePolicy4)
self.patch_ios_chkbox_lbl.setWordWrap(True)
self.patch_ios_row.addWidget(self.patch_ios_chkbox_lbl)
self.verticalLayout_7.addLayout(self.patch_ios_row)
self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Ignored)
self.verticalLayout_7.addItem(self.verticalSpacer_2) self.verticalLayout_7.addItem(self.verticalSpacer_2)
@ -347,6 +237,7 @@ class Ui_MainWindow(object):
self.horizontalLayout_5.addLayout(self.verticalLayout_7) self.horizontalLayout_5.addLayout(self.verticalLayout_7)
self.verticalLayout_8 = QVBoxLayout() self.verticalLayout_8 = QVBoxLayout()
self.verticalLayout_8.setSpacing(4)
self.verticalLayout_8.setObjectName(u"verticalLayout_8") self.verticalLayout_8.setObjectName(u"verticalLayout_8")
self.verticalLayout_8.setSizeConstraint(QLayout.SizeConstraint.SetMinimumSize) self.verticalLayout_8.setSizeConstraint(QLayout.SizeConstraint.SetMinimumSize)
self.label_4 = QLabel(self.centralwidget) self.label_4 = QLabel(self.centralwidget)
@ -355,31 +246,11 @@ class Ui_MainWindow(object):
self.verticalLayout_8.addWidget(self.label_4) self.verticalLayout_8.addWidget(self.label_4)
self.pack_vwii_mode_row = QHBoxLayout() self.pack_vwii_mode_checkbox = WrapCheckboxWidget(self.centralwidget)
self.pack_vwii_mode_row.setObjectName(u"pack_vwii_mode_row") self.pack_vwii_mode_checkbox.setObjectName(u"pack_vwii_mode_checkbox")
self.pack_vwii_mode_chkbox = QCheckBox(self.centralwidget) self.pack_vwii_mode_checkbox.setEnabled(False)
self.pack_vwii_mode_chkbox.setObjectName(u"pack_vwii_mode_chkbox")
self.pack_vwii_mode_chkbox.setEnabled(False)
sizePolicy1.setHeightForWidth(self.pack_vwii_mode_chkbox.sizePolicy().hasHeightForWidth())
self.pack_vwii_mode_chkbox.setSizePolicy(sizePolicy1)
self.pack_vwii_mode_chkbox.setText(u"")
self.pack_vwii_mode_row.addWidget(self.pack_vwii_mode_chkbox) self.verticalLayout_8.addWidget(self.pack_vwii_mode_checkbox)
self.pack_vwii_mode_chkbox_lbl = QLabel(self.centralwidget)
self.pack_vwii_mode_chkbox_lbl.setObjectName(u"pack_vwii_mode_chkbox_lbl")
self.pack_vwii_mode_chkbox_lbl.setEnabled(True)
sizePolicy5 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
sizePolicy5.setHorizontalStretch(0)
sizePolicy5.setVerticalStretch(0)
sizePolicy5.setHeightForWidth(self.pack_vwii_mode_chkbox_lbl.sizePolicy().hasHeightForWidth())
self.pack_vwii_mode_chkbox_lbl.setSizePolicy(sizePolicy5)
self.pack_vwii_mode_chkbox_lbl.setWordWrap(True)
self.pack_vwii_mode_row.addWidget(self.pack_vwii_mode_chkbox_lbl)
self.verticalLayout_8.addLayout(self.pack_vwii_mode_row)
self.label_2 = QLabel(self.centralwidget) self.label_2 = QLabel(self.centralwidget)
self.label_2.setObjectName(u"label_2") self.label_2.setObjectName(u"label_2")
@ -387,39 +258,15 @@ class Ui_MainWindow(object):
self.verticalLayout_8.addWidget(self.label_2) self.verticalLayout_8.addWidget(self.label_2)
self.auto_update_row = QHBoxLayout() self.auto_update_checkbox = WrapCheckboxWidget(self.centralwidget)
self.auto_update_row.setObjectName(u"auto_update_row") self.auto_update_checkbox.setObjectName(u"auto_update_checkbox")
self.auto_update_chkbox = QCheckBox(self.centralwidget)
self.auto_update_chkbox.setObjectName(u"auto_update_chkbox")
sizePolicy1.setHeightForWidth(self.auto_update_chkbox.sizePolicy().hasHeightForWidth())
self.auto_update_chkbox.setSizePolicy(sizePolicy1)
self.auto_update_row.addWidget(self.auto_update_chkbox) self.verticalLayout_8.addWidget(self.auto_update_checkbox)
self.auto_update_chkbox_lbl = QLabel(self.centralwidget) self.custom_out_dir_checkbox = WrapCheckboxWidget(self.centralwidget)
self.auto_update_chkbox_lbl.setObjectName(u"auto_update_chkbox_lbl") self.custom_out_dir_checkbox.setObjectName(u"custom_out_dir_checkbox")
self.auto_update_row.addWidget(self.auto_update_chkbox_lbl) self.verticalLayout_8.addWidget(self.custom_out_dir_checkbox)
self.verticalLayout_8.addLayout(self.auto_update_row)
self.custom_out_dir_row = QHBoxLayout()
self.custom_out_dir_row.setObjectName(u"custom_out_dir_row")
self.custom_out_dir_chkbox = QCheckBox(self.centralwidget)
self.custom_out_dir_chkbox.setObjectName(u"custom_out_dir_chkbox")
sizePolicy1.setHeightForWidth(self.custom_out_dir_chkbox.sizePolicy().hasHeightForWidth())
self.custom_out_dir_chkbox.setSizePolicy(sizePolicy1)
self.custom_out_dir_row.addWidget(self.custom_out_dir_chkbox)
self.custom_out_dir_chkbox_lbl = QLabel(self.centralwidget)
self.custom_out_dir_chkbox_lbl.setObjectName(u"custom_out_dir_chkbox_lbl")
self.custom_out_dir_row.addWidget(self.custom_out_dir_chkbox_lbl)
self.verticalLayout_8.addLayout(self.custom_out_dir_row)
self.custom_out_dir_entry_row = QHBoxLayout() self.custom_out_dir_entry_row = QHBoxLayout()
self.custom_out_dir_entry_row.setObjectName(u"custom_out_dir_entry_row") self.custom_out_dir_entry_row.setObjectName(u"custom_out_dir_entry_row")
@ -438,7 +285,7 @@ class Ui_MainWindow(object):
self.verticalLayout_8.addLayout(self.custom_out_dir_entry_row) self.verticalLayout_8.addLayout(self.custom_out_dir_entry_row)
self.verticalSpacer = QSpacerItem(20, 50, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.MinimumExpanding) self.verticalSpacer = QSpacerItem(20, 100, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_8.addItem(self.verticalSpacer) self.verticalLayout_8.addItem(self.verticalSpacer)
@ -501,20 +348,9 @@ class Ui_MainWindow(object):
self.download_btn.setText(QCoreApplication.translate("MainWindow", u"Start Download", None)) self.download_btn.setText(QCoreApplication.translate("MainWindow", u"Start Download", None))
self.script_btn.setText(QCoreApplication.translate("MainWindow", u"Run Script", None)) self.script_btn.setText(QCoreApplication.translate("MainWindow", u"Run Script", None))
self.label_3.setText(QCoreApplication.translate("MainWindow", u"General Settings", None)) self.label_3.setText(QCoreApplication.translate("MainWindow", u"General Settings", None))
self.pack_archive_chkbox_lbl.setText(QCoreApplication.translate("MainWindow", u"Pack installable archive (WAD/TAD)", None))
self.archive_file_entry.setPlaceholderText(QCoreApplication.translate("MainWindow", u"File Name", None)) self.archive_file_entry.setPlaceholderText(QCoreApplication.translate("MainWindow", u"File Name", None))
self.keep_enc_chkbox_lbl.setText(QCoreApplication.translate("MainWindow", u"Keep encrypted contents", None))
self.create_dec_chkbox_lbl.setText(QCoreApplication.translate("MainWindow", u"Create decrypted contents (*.app)", None))
self.use_local_chkbox_lbl.setText(QCoreApplication.translate("MainWindow", u"Use local files, if they exist", None))
self.use_wiiu_nus_chkbox_lbl.setText(QCoreApplication.translate("MainWindow", u"Use the Wii U NUS (faster, only effects Wii/vWii)", None))
self.patch_ios_chkbox_lbl.setText(QCoreApplication.translate("MainWindow", u"Apply patches to IOS (Applies to WADs only)", None))
self.label_4.setText(QCoreApplication.translate("MainWindow", u"vWii Title Settings", None)) self.label_4.setText(QCoreApplication.translate("MainWindow", u"vWii Title Settings", None))
self.pack_vwii_mode_chkbox_lbl.setText(QCoreApplication.translate("MainWindow", u"Re-encrypt title using the Wii Common Key", None))
self.label_2.setText(QCoreApplication.translate("MainWindow", u"App Settings", None)) self.label_2.setText(QCoreApplication.translate("MainWindow", u"App Settings", None))
self.auto_update_chkbox.setText("")
self.auto_update_chkbox_lbl.setText(QCoreApplication.translate("MainWindow", u"Check for updates on startup", None))
self.custom_out_dir_chkbox.setText("")
self.custom_out_dir_chkbox_lbl.setText(QCoreApplication.translate("MainWindow", u"Use a custom download directory", None))
self.custom_out_dir_entry.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Output Path", None)) self.custom_out_dir_entry.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Output Path", None))
self.custom_out_dir_btn.setText(QCoreApplication.translate("MainWindow", u"Select...", None)) self.custom_out_dir_btn.setText(QCoreApplication.translate("MainWindow", u"Select...", None))
self.log_text_browser.setMarkdown("") self.log_text_browser.setMarkdown("")

View File

@ -0,0 +1,46 @@
from PySide6.QtCore import Qt, QSize
from PySide6.QtWidgets import QCheckBox, QHBoxLayout, QLabel, QWidget, QSizePolicy, QLayout
class WrapCheckboxWidget(QWidget):
def __init__(self, text, parent=None):
super().__init__(parent)
self.setAttribute(Qt.WA_StyledBackground, True)
self.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.MinimumExpanding)
self.checkbox = QCheckBox("")
sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Maximum, QSizePolicy.Policy.Fixed)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.checkbox.sizePolicy().hasHeightForWidth())
self.checkbox.setSizePolicy(sizePolicy1)
self.label = QLabel(text)
self.label.setAlignment(Qt.AlignVCenter | Qt.AlignLeft)
self.label.setWordWrap(True)
self.label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
layout = QHBoxLayout(self)
layout.setContentsMargins(5, 5, 5, 5)
layout.setSizeConstraint(QLayout.SetMinimumSize)
layout.addWidget(self.checkbox)
layout.addWidget(self.label)
# Connect signals so that clicking the label still changes the state of the checkbox.
def toggle_checkbox(event):
if self.checkbox.isEnabled() and event.button() == Qt.LeftButton:
self.checkbox.toggle()
self.label.mousePressEvent = toggle_checkbox
# Bind checkbox stuff for easier access.
self.toggled = self.checkbox.toggled
def isChecked(self):
return self.checkbox.isChecked()
def setChecked(self, checked):
self.checkbox.setChecked(checked)
def setEnabled(self, enabled):
super().setEnabled(enabled)
self.checkbox.setEnabled(enabled)
self.label.setEnabled(enabled)

View File

@ -7,19 +7,19 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1010</width> <width>1010</width>
<height>625</height> <height>675</height>
</rect> </rect>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>1010</width> <width>1010</width>
<height>625</height> <height>675</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>1010</width> <width>1010</width>
<height>625</height> <height>675</height>
</size> </size>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -222,7 +222,7 @@
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_7"> <layout class="QVBoxLayout" name="verticalLayout_7">
<property name="spacing"> <property name="spacing">
<number>5</number> <number>4</number>
</property> </property>
<property name="sizeConstraint"> <property name="sizeConstraint">
<enum>QLayout::SizeConstraint::SetMinimumSize</enum> <enum>QLayout::SizeConstraint::SetMinimumSize</enum>
@ -240,43 +240,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="pack_archive_row"> <widget class="WrapCheckboxWidget" name="pack_archive_checkbox" native="true"/>
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QCheckBox" name="pack_archive_chkbox">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="pack_archive_chkbox_lbl">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Pack installable archive (WAD/TAD)</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="archive_file_entry"> <widget class="QLineEdit" name="archive_file_entry">
@ -289,205 +253,23 @@
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="keep_enc_row"> <widget class="WrapCheckboxWidget" name="keep_enc_checkbox" native="true"/>
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QCheckBox" name="keep_enc_chkbox">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="keep_enc_chkbox_lbl">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Keep encrypted contents</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="create_dec_row"> <widget class="WrapCheckboxWidget" name="create_dec_checkbox" native="true"/>
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QCheckBox" name="create_dec_chkbox">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="create_dec_chkbox_lbl">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Create decrypted contents (*.app)</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="use_local_row"> <widget class="WrapCheckboxWidget" name="use_local_checkbox" native="true"/>
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QCheckBox" name="use_local_chkbox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="use_local_chkbox_lbl">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Use local files, if they exist</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="use_wiiu_nus_row"> <widget class="WrapCheckboxWidget" name="use_wiiu_nus_checkbox" native="true"/>
<property name="spacing">
<number>10</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SizeConstraint::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QCheckBox" name="use_wiiu_nus_chkbox">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="layoutDirection">
<enum>Qt::LayoutDirection::LeftToRight</enum>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="use_wiiu_nus_chkbox_lbl">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Use the Wii U NUS (faster, only effects Wii/vWii)</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="patch_ios_row"> <widget class="WrapCheckboxWidget" name="patch_ios_checkbox" native="true">
<property name="spacing"> <property name="enabled">
<number>10</number> <bool>false</bool>
</property> </property>
<item> </widget>
<widget class="QCheckBox" name="patch_ios_chkbox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="patch_ios_chkbox_lbl">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Apply patches to IOS (Applies to WADs only)</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<spacer name="verticalSpacer_2"> <spacer name="verticalSpacer_2">
@ -495,7 +277,7 @@
<enum>Qt::Orientation::Vertical</enum> <enum>Qt::Orientation::Vertical</enum>
</property> </property>
<property name="sizeType"> <property name="sizeType">
<enum>QSizePolicy::Policy::Ignored</enum> <enum>QSizePolicy::Policy::Expanding</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
@ -525,6 +307,9 @@
</item> </item>
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_8"> <layout class="QVBoxLayout" name="verticalLayout_8">
<property name="spacing">
<number>4</number>
</property>
<property name="sizeConstraint"> <property name="sizeConstraint">
<enum>QLayout::SizeConstraint::SetMinimumSize</enum> <enum>QLayout::SizeConstraint::SetMinimumSize</enum>
</property> </property>
@ -541,43 +326,11 @@
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="pack_vwii_mode_row"> <widget class="WrapCheckboxWidget" name="pack_vwii_mode_checkbox" native="true">
<item> <property name="enabled">
<widget class="QCheckBox" name="pack_vwii_mode_chkbox"> <bool>false</bool>
<property name="enabled"> </property>
<bool>false</bool> </widget>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="pack_vwii_mode_chkbox_lbl">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Re-encrypt title using the Wii Common Key</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<widget class="QLabel" name="label_2"> <widget class="QLabel" name="label_2">
@ -592,52 +345,10 @@
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="auto_update_row"> <widget class="WrapCheckboxWidget" name="auto_update_checkbox" native="true"/>
<item>
<widget class="QCheckBox" name="auto_update_chkbox">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="auto_update_chkbox_lbl">
<property name="text">
<string>Check for updates on startup</string>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="custom_out_dir_row"> <widget class="WrapCheckboxWidget" name="custom_out_dir_checkbox" native="true"/>
<item>
<widget class="QCheckBox" name="custom_out_dir_chkbox">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="custom_out_dir_chkbox_lbl">
<property name="text">
<string>Use a custom download directory</string>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="custom_out_dir_entry_row"> <layout class="QHBoxLayout" name="custom_out_dir_entry_row">
@ -669,12 +380,12 @@
<enum>Qt::Orientation::Vertical</enum> <enum>Qt::Orientation::Vertical</enum>
</property> </property>
<property name="sizeType"> <property name="sizeType">
<enum>QSizePolicy::Policy::MinimumExpanding</enum> <enum>QSizePolicy::Policy::Expanding</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>50</height> <height>100</height>
</size> </size>
</property> </property>
</spacer> </spacer>
@ -762,6 +473,14 @@ li.checked::marker { content: &quot;\2612&quot;; }
</property> </property>
</action> </action>
</widget> </widget>
<customwidgets>
<customwidget>
<class>WrapCheckboxWidget</class>
<extends>QWidget</extends>
<header>qt/py/ui_WrapCheckboxWidget</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/> <resources/>
<connections/> <connections/>
</ui> </ui>

View File

@ -1,5 +1,5 @@
pyside6 pyside6
nuitka nuitka~=2.6.0
libWiiPy libWiiPy
libTWLPy libTWLPy
zstandard zstandard

3
resources/check.svg Normal file
View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
<polyline points="20 6 9 17 4 12"></polyline>
</svg>

After

Width:  |  Height:  |  Size: 263 B

59
resources/down_arrow.svg Normal file
View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="16"
height="16"
viewBox="0 0 16 16"
version="1.1"
id="svg1"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
sodipodi:docname="down_arrow.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="2"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
inkscape:zoom="57.72"
inkscape:cx="8.004158"
inkscape:cy="8.4026334"
inkscape:window-width="1920"
inkscape:window-height="1012"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.154168;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="path1"
inkscape:flatsided="false"
sodipodi:sides="3"
sodipodi:cx="5.0945272"
sodipodi:cy="5.9900498"
sodipodi:r1="1.9104478"
sodipodi:r2="0.95522392"
sodipodi:arg1="1.5707963"
sodipodi:arg2="2.6179939"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 5.0945273,7.9004977 4.2672791,6.4676618 3.4400309,5.034826 l 1.6544964,-10e-8 1.6544963,0 -0.8272482,1.4328359 z"
inkscape:transform-center-y="0.68257261"
transform="matrix(2.3912596,0,0,1.4291353,-4.1823371,-1.2431638)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
<rect x="2" y="2" width="20" height="20" rx="3"></rect>
</svg>

After

Width:  |  Height:  |  Size: 273 B

362
resources/style.qss Normal file
View File

@ -0,0 +1,362 @@
/* "resources/style.qss" from NUSGet by NinjaCheetah & Contributors */
/* Much of this QSS was written by Alex (https://github.com/Humanoidear) */
/* from WiiLink for the fancy new WiiLink Patcher GUI. Used with permission. */
QMainWindow, QDialog {
background-color: #222222;
}
QMainWindow QLabel {
color: #ffffff;
}
QMenuBar {
background-color: #2b2b2b;
}
QMenuBar::item:selected {
background-color: #1a73e8;
}
QMenu {
background-color: #222222;
border: 1px solid rgba(70, 70, 70, 1);
border-radius: 8px;
padding: 6px 10px;
margin: 4px 0px;
}
QMenu::item:selected {
background-color: #1a73e8;
}
QAction {
background-color: #222222;
border: 1px solid rgba(70, 70, 70, 1);
border-radius: 8px;
padding: 6px 10px;
margin: 4px 0px;
}
QRadioButton {
background-color: transparent;
border: 1px solid rgba(70, 70, 70, 1);
border-radius: 8px;
padding: 8px 10px;
font-size: 13px;
font-weight: 500;
color: #ffffff;
}
QRadioButton:hover {
background-color: rgba(60, 60, 60, 1);
border-color: #4a86e8;
}
QRadioButton:checked {
background-color: rgba(26, 115, 232, 0.08);
border: 1px solid #1a73e8;
color: #1a73e8;
}
QRadioButton::indicator {
width: 18px;
height: 18px;
border-radius: 5px;
border: 1px solid #5f6368;
margin-right: 8px;
subcontrol-position: left center;
}
QRadioButton::indicator:checked {
background-color: #1a73e8;
border: 1px solid #1a73e8;
image: url("{IMAGE_PREFIX}/rounded_square.svg");
}
QRadioButton::indicator:hover {
border-color: #1a73e8;
}
QLineEdit {
background-color: transparent;
border: 1px solid rgba(70, 70, 70, 1);
border-radius: 8px;
padding: 6px 10px;
margin: 4px 0px;
font-size: 13px;
color: #ffffff;
selection-background-color: #1a73e8;
}
QLineEdit:focus {
border-color: #1a73e8;
}
QLineEdit:disabled {
background-color: rgba(70, 70, 70, 0.5);
border: 1px solid rgba(100, 100, 100, 0.3);
color: rgba(255, 255, 255, 0.3);
}
QTabWidget::pane {
border: 1px solid rgba(70, 70, 70, 1);
border-top-right-radius: 8px;
border-bottom-right-radius: 8px;
border-bottom-left-radius: 8px;
background-color: #2b2b2b;
top: -1px;
}
QTabBar::tab {
background-color: transparent;
border-top: 1px solid rgba(70, 70, 70, 1);
border-left: 1px solid rgba(70, 70, 70, 1);
border-right: 1px solid rgba(70, 70, 70, 1);
border-top-left-radius: 6px;
border-top-right-radius: 6px;
padding: 6px 10px;
font-size: 13px;
font-weight: 500;
color: #ffffff;
}
QTabBar::tab:selected, QTabBar::tab:hover {
background-color: #2b2b2b;
}
QTreeView {
show-decoration-selected: 1;
outline: 0;
background-color: #1a1a1a;
border: 0;
border-radius: 8px;
}
QTreeView QHeaderView::section {
background-color: #2b2b2b;
border: 0;
font-weight: 500;
}
QTreeView::item:hover {
background-color: rgba(60, 60, 60, 1);
}
QTreeView::item:focus {
background-color: rgba(26, 115, 232, 0.08);
}
QTreeView::item:selected {
background-color: #1a73e8;
}
QTreeView QScrollBar:vertical {
margin-top: 16px;
}
QTreeView QScrollBar::sub-line:vertical {
border: 0;
background: #2b2b2b;
height: 16px;
}
QTextBrowser {
background-color: #1a1a1a;
selection-background-color: #1a73e8;
}
QPushButton {
outline: 0;
show-decoration-selected: 1;
background-color: transparent;
border: 1px solid rgba(70, 70, 70, 1);
border-radius: 8px;
padding: 6px 10px;
margin: 4px 0px;
font-size: 13px;
font-weight: 500;
color: #ffffff;
}
QPushButton:hover {
background-color: rgba(60, 60, 60, 1);
border-color: #4a86e8;
}
QPushButton:focus {
background-color: rgba(60, 60, 60, 1);
border-color: #4a86e8;
}
QPushButton:pressed {
background-color: rgba(26, 115, 232, 0.15);
border: 1px solid #1a73e8;
}
QPushButton:disabled {
background-color: rgba(70, 70, 70, 0.5);
border: 1px solid rgba(100, 100, 100, 0.3);
color: rgba(255, 255, 255, 0.3);
}
QComboBox {
background-color: transparent;
border: 1px solid rgba(70, 70, 70, 1);
border-radius: 8px;
padding: 6px 10px;
margin: 4px 0px;
font-size: 13px;
font-weight: 500;
color: #ffffff;
}
QComboBox:on {
background-color: rgba(26, 115, 232, 0.15);
border: 1px solid #1a73e8;
}
QComboBox:hover {
background-color: rgba(60, 60, 60, 1);
border-color: #4a86e8;
}
QComboBox:focus {
background-color: rgba(60, 60, 60, 1);
border-color: #4a86e8;
}
QComboBox::drop-down {
border: 0;
width: 24px;
}
QComboBox::down-arrow {
image: url("{IMAGE_PREFIX}/down_arrow.svg");
}
QComboBox QAbstractItemView {
background-color: #222222;
border: 1px solid rgba(70, 70, 70, 1);
border-radius: 8px;
padding: 6px 10px;
outline: 0;
show-decoration-selected: 1;
}
QComboBox QAbstractItemView::item:selected {
background-color: #1a73e8;
}
QComboBox QAbstractItemView::item:hover {
background-color: #1a73e8;
}
QScrollBar:vertical {
border: 0;
border-radius: 8px;
padding: 2px 0 2px 0;
background-color: #222222;
}
QScrollBar::handle:vertical {
background-color: rgba(60, 60, 60, 1);
margin: 0px 2px 0px 2px;
width: 10px;
border: 1px solid rgba(70, 70, 70, 1);
border-radius: 4px;
}
QScrollBar::handle:vertical:hover {
background-color: rgba(26, 115, 232, 0.4);
}
QScrollBar::add-line:vertical {
height: 0;
subcontrol-position: bottom;
subcontrol-origin: margin;
}
QScrollBar::sub-line:vertical {
height: 0;
subcontrol-position: top;
subcontrol-origin: margin;
}
QScrollBar:horizontal {
border: 0;
border-radius: 8px;
padding: 2px 0 2px 0;
background-color: #222222;
}
QScrollBar::handle:horizontal {
background-color: rgba(60, 60, 60, 1);
margin: 0px 2px 0px 2px;
border: 1px solid rgba(70, 70, 70, 1);
border-radius: 4px;
}
QScrollBar::handle:horizontal:hover {
background-color: rgba(26, 115, 232, 0.4);
}
QScrollBar::add-line:horizontal {
height: 0;
subcontrol-position: bottom;
subcontrol-origin: margin;
}
QScrollBar::sub-line:horizontal {
height: 0;
subcontrol-position: top;
subcontrol-origin: margin;
}
WrapCheckboxWidget {
show-decoration-selected: 1;
outline: 0;
background-color: transparent;
border: 1px solid rgba(70, 70, 70, 1);
border-radius: 8px;
padding: 12px 10px;
font-size: 13px;
font-weight: 500;
color: #ffffff;
}
WrapCheckboxWidget:hover {
background-color: rgba(60, 60, 60, 1);
border-color: #4a86e8;
}
WrapCheckboxWidget:disabled {
background-color: rgba(70, 70, 70, 0.5);
border: 1px solid rgba(100, 100, 100, 0.3);
color: rgba(255, 255, 255, 0.3);
}
WrapCheckboxWidget QLabel:disabled {
color: #919191;
}
WrapCheckboxWidget QCheckBox::indicator {
width: 16px;
height: 16px;
border-radius: 4px;
border: 1px solid #5f6368;
}
WrapCheckboxWidget QCheckBox::indicator:checked {
background-color: #1a73e8;
border: 1px solid #1a73e8;
image: url("{IMAGE_PREFIX}/check.svg");
}
WrapCheckboxWidget QCheckBox::indicator:hover {
border-color: #1a73e8;
}
WrapCheckboxWidget QCheckBox:checked {
color: #1a73e8;
}

View File

@ -4,40 +4,63 @@
<context> <context>
<name>AboutNUSGet</name> <name>AboutNUSGet</name>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="14"/> <location filename="../../qt/py/ui_AboutDialog.py" line="16"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="63"/>
<source>About NUSGet</source> <source>About NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="75"/> <location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<source>Placeholder Version String</source> <source>NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="82"/> <location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<source>Copyright (c) 2024-2025 NinjaCheetah &amp; Contributors</source> <source>Version {nusget_version}</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="92"/> <location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; <translation type="unfinished"></translation>
p, li { white-space: pre-wrap; } </message>
hr { height: 1px; border-width: 0; } <message>
li.unchecked::marker { content: &quot;\2610&quot;; } <location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
li.checked::marker { content: &quot;\2612&quot;; } <source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;.AppleSystemUIFont&apos;; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Translations&lt;/span&gt;&lt;/p&gt; </message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;German (Deutsch): &lt;a href=&quot;https://github.com/yeah-its-gloria&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;yeah-its-gloria&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Italian (Italiano): &lt;a href=&quot;https://github.com/LNLenost&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;LNLenost&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Korean (): &lt;a href=&quot;https://github.com/DDinghoya&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;DDinghoya&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <source>View Project on GitHub</source>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Norwegian (Norsk): &lt;a href=&quot;https://github.com/rolfiee&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;rolfiee&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Romanian (Română): &lt;a href=&quot;https://github.com/NotImplementedLife&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;NotImplementedLife&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> </message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<source>Translations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -92,13 +115,17 @@ Titel, welche mit einem Häkchen markiert sind, sind frei verfügbar und haben e
Titel werden in einem &quot;NUSGet Downloads&quot; Ordner innerhalb des Downloads-Ordners gespeichert.</translation> Titel werden in einem &quot;NUSGet Downloads&quot; Ordner innerhalb des Downloads-Ordners gespeichert.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="124"/> <location filename="../../NUSGet.py" line="224"/>
<source>NUSGet v{nusget_version} <source>NUSGet Update Available</source>
Developed by NinjaCheetah <translation>NUSGet-Update verfügbar</translation>
Powered by libWiiPy {libwiipy_version} </message>
DSi support provided by libTWLPy {libtwlpy_version} <message>
<source>There&apos;s a newer version of NUSGet available!</source>
Select a title from the list on the left, or enter a Title ID to begin. <translation type="vanished">Eine neuere Version von NUSGet ist verfügbar.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="119"/>
<source>Select a title from the list on the left, or enter a Title ID to begin.
Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved. Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved.
@ -106,195 +133,231 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="227"/> <location filename="../../NUSGet.py" line="155"/>
<source>NUSGet Update Available</source> <source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>NUSGet-Update verfügbar</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="228"/> <location filename="../../NUSGet.py" line="225"/>
<source>There&apos;s a newer version of NUSGet available!</source> <source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation>Eine neuere Version von NUSGet ist verfügbar.</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="329"/> <location filename="../../NUSGet.py" line="326"/>
<source>No Output Selected</source> <source>No Output Selected</source>
<translatorcomment>Changed from &quot;output&quot; to &quot;packaging&quot; for clarity</translatorcomment> <translatorcomment>Changed from &quot;output&quot; to &quot;packaging&quot; for clarity</translatorcomment>
<translation>Keine Verpackmethode ausgewählt</translation> <translation>Keine Verpackmethode ausgewählt</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="330"/> <location filename="../../NUSGet.py" line="327"/>
<source>You have not selected any format to output the data in!</source> <source>You have not selected any format to output the data in!</source>
<translation>Es wurde keine Methode zum Verpacken der Inhalte ausgewählt.</translation> <translation>Es wurde keine Methode zum Verpacken der Inhalte ausgewählt.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="332"/> <location filename="../../NUSGet.py" line="329"/>
<source>Please select at least one option for how you would like the download to be saved.</source> <source>Please select at least one option for how you would like the download to be saved.</source>
<translatorcomment>Explicitly mentions options for clarity</translatorcomment> <translatorcomment>Explicitly mentions options for clarity</translatorcomment>
<translation>Es muss mindestens &quot;verschlüsselte Inhalte speichern&quot;, &quot;entschlüsselte Inhalte speichern (*.app)&quot; oder &quot;Installierbar verpacken (WAD/TAD)&quot; ausgewählt worden sein.</translation> <translation>Es muss mindestens &quot;verschlüsselte Inhalte speichern&quot;, &quot;entschlüsselte Inhalte speichern (*.app)&quot; oder &quot;Installierbar verpacken (WAD/TAD)&quot; ausgewählt worden sein.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="344"/> <location filename="../../NUSGet.py" line="341"/>
<location filename="../../NUSGet.py" line="548"/> <location filename="../../NUSGet.py" line="545"/>
<source>Invalid Download Directory</source> <source>Invalid Download Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="345"/> <location filename="../../NUSGet.py" line="342"/>
<location filename="../../NUSGet.py" line="549"/>
<source>The specified download directory does not exist!</source> <source>The specified download directory does not exist!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="348"/> <location filename="../../NUSGet.py" line="345"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source> <source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="378"/> <location filename="../../NUSGet.py" line="375"/>
<source>Invalid Title ID</source> <source>Invalid Title ID</source>
<translation>Fehlerhafte Title-ID</translation> <translation>Fehlerhafte Title-ID</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="379"/> <location filename="../../NUSGet.py" line="376"/>
<source>The Title ID you have entered is not in a valid format!</source> <source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>Die eingegebene Title-ID ist nicht korrekt.</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="381"/> <location filename="../../NUSGet.py" line="381"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="386"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="421"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="471"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="481"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Title ID you have entered is not in a valid format!</source>
<translation type="vanished">Die eingegebene Title-ID ist nicht korrekt.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="378"/>
<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> <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>Die Title-ID muss mindestens 16 alphanumerische Zeichen enthalten.</translation> <translation>Die Title-ID muss mindestens 16 alphanumerische Zeichen enthalten.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="383"/> <location filename="../../NUSGet.py" line="380"/>
<source>Title ID/Version Not Found</source> <source>Title ID/Version Not Found</source>
<translation>Title-ID/Version nicht gefunden</translation> <translation>Title-ID/Version nicht gefunden</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="384"/>
<source>No title with the provided Title ID or version could be found!</source> <source>No title with the provided Title ID or version could be found!</source>
<translatorcomment>The title was moved into the body, and the title was made less of a mouthful, for ease of translation</translatorcomment> <translatorcomment>The title was moved into the body, and the title was made less of a mouthful, for ease of translation</translatorcomment>
<translation>Es konnte kein Titel mit der gegebenen Title-ID oder Version gefunden werden.</translation> <translation type="vanished">Es konnte kein Titel mit der gegebenen Title-ID oder Version gefunden werden.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="386"/> <location filename="../../NUSGet.py" line="383"/>
<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> <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>Die Title-ID könnte möglicherweise fehlerhaft sein.</translation> <translation>Die Title-ID könnte möglicherweise fehlerhaft sein.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="388"/> <location filename="../../NUSGet.py" line="385"/>
<source>Content Decryption Failed</source> <source>Content Decryption Failed</source>
<translation>Entschlüsselung fehlgeschlagen</translation> <translation>Entschlüsselung fehlgeschlagen</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="389"/>
<source>Content decryption was not successful! Decrypted contents could not be created.</source> <source>Content decryption was not successful! Decrypted contents could not be created.</source>
<translation>Die Inhalte des Titels konnten nicht korrekt entschlüsselt werden.</translation> <translation type="vanished">Die Inhalte des Titels konnten nicht korrekt entschlüsselt werden.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="392"/> <location filename="../../NUSGet.py" line="389"/>
<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> <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>Die gespeicherte TMD oder das Ticket könnten möglicherweise fehlerhaft sein. &quot;Lokale Dateien nutzen&quot; kann deaktiviert werden, um diese erneut herunterzuladen.</translation> <translation>Die gespeicherte TMD oder das Ticket könnten möglicherweise fehlerhaft sein. &quot;Lokale Dateien nutzen&quot; kann deaktiviert werden, um diese erneut herunterzuladen.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="395"/> <location filename="../../NUSGet.py" line="392"/>
<source>Ticket Not Available</source> <source>Ticket Not Available</source>
<translation>Ticket nicht verfügbar</translation> <translation>Ticket nicht verfügbar</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="396"/>
<source>No Ticket is Available for the Requested Title!</source> <source>No Ticket is Available for the Requested Title!</source>
<translation>Es konnte kein Ticket für den geforderten Titel gefunden werden.</translation> <translation type="vanished">Es konnte kein Ticket für den geforderten Titel gefunden werden.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="399"/> <location filename="../../NUSGet.py" line="396"/>
<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> <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>Das Ticket zum Entschlüsseln konnte nicht heruntergeladen werden, jedoch ist &quot;Installierbar verpacken&quot; bzw. &quot;Entschlüsselte Inhalte speichern&quot; aktiv. Diese Optionen erfordern ein Ticket, daher wurden nur verschlüsselte Inhalte gespeichert.</translation> <translation>Das Ticket zum Entschlüsseln konnte nicht heruntergeladen werden, jedoch ist &quot;Installierbar verpacken&quot; bzw. &quot;Entschlüsselte Inhalte speichern&quot; aktiv. Diese Optionen erfordern ein Ticket, daher wurden nur verschlüsselte Inhalte gespeichert.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="401"/> <location filename="../../NUSGet.py" line="398"/>
<source>Unknown Error</source> <source>Unknown Error</source>
<translation>Unbekannter Fehler</translation> <translation>Unbekannter Fehler</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="402"/>
<source>An Unknown Error has Occurred!</source> <source>An Unknown Error has Occurred!</source>
<translation>Ein unbekannter Fehler ist aufgetreten.</translation> <translation type="vanished">Ein unbekannter Fehler ist aufgetreten.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="404"/> <location filename="../../NUSGet.py" line="401"/>
<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> <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>Versuchen Sie es erneut. Sofern das Problem bestehen bleibt, können Sie ein Issue auf GitHub öffnen, um den Fehler zu berichten.</translation> <translation>Versuchen Sie es erneut. Sofern das Problem bestehen bleibt, können Sie ein Issue auf GitHub öffnen, um den Fehler zu berichten.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="423"/> <location filename="../../NUSGet.py" line="420"/>
<source>Script Issues Occurred</source> <source>Script Issues Occurred</source>
<translation>Script-Fehler</translation> <translation>Script-Fehler</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="424"/>
<source>Some issues occurred while running the download script.</source> <source>Some issues occurred while running the download script.</source>
<translation>Ein Fehler ist im Script aufgetreten.</translation> <translation type="vanished">Ein Fehler ist im Script aufgetreten.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="426"/> <location filename="../../NUSGet.py" line="423"/>
<source>Check the log for more details about what issues were encountered.</source> <source>Check the log for more details about what issues were encountered.</source>
<translatorcomment>To keep the indirectness of other text, this was changed to &quot;Error details have been written to the log.&quot;</translatorcomment> <translatorcomment>To keep the indirectness of other text, this was changed to &quot;Error details have been written to the log.&quot;</translatorcomment>
<translation>Fehlerdetails wurden in den Log geschrieben.</translation> <translation>Fehlerdetails wurden in den Log geschrieben.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="433"/> <location filename="../../NUSGet.py" line="430"/>
<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> <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 angezeigten Titel konnten wegen einem Fehler nicht heruntergeladen werden. Die Title-ID oder Version im Script könnte wohlmöglich fehlerhaft sein.</translation> <translation>Die angezeigten Titel konnten wegen einem Fehler nicht heruntergeladen werden. Die Title-ID oder Version im Script könnte wohlmöglich fehlerhaft sein.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="443"/> <location filename="../../NUSGet.py" line="440"/>
<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> <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;Entschlüsselte Inhalte speichern&quot; bzw. &quot;Installierbar verpacken&quot; ist aktiv, jedoch fehlen Tickets für die angezeigten Titel. Sofern aktiv werden die verschlüsselten Inhalte trotzdem heruntergeladen.</translation> <translation>&quot;Entschlüsselte Inhalte speichern&quot; bzw. &quot;Installierbar verpacken&quot; ist aktiv, jedoch fehlen Tickets für die angezeigten Titel. Sofern aktiv werden die verschlüsselten Inhalte trotzdem heruntergeladen.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="462"/> <location filename="../../NUSGet.py" line="459"/>
<source>Script Download Failed</source> <source>Script Download Failed</source>
<translation>Script-Herunterladen fehlgeschlagen</translation> <translation>Script-Herunterladen fehlgeschlagen</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="463"/> <location filename="../../NUSGet.py" line="460"/>
<source>Open NUS Script</source> <source>Open NUS Script</source>
<translatorcomment>Translating the file type is pointless, since it&apos;s not an actual &quot;script&quot;</translatorcomment> <translatorcomment>Translating the file type is pointless, since it&apos;s not an actual &quot;script&quot;</translatorcomment>
<translation>NUS-Script öffnen</translation> <translation>NUS-Script öffnen</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="464"/> <location filename="../../NUSGet.py" line="461"/>
<source>NUS Scripts (*.nus *.json)</source> <source>NUS Scripts (*.nus *.json)</source>
<translatorcomment>&quot;Scripts&quot; isn&apos;t the correct way to pluralize a word, and &quot;Scripte&quot; would misalign with referring to them as &quot;Script&quot;, so we just keep it as-is (it sounds plural enough anyway!)</translatorcomment> <translatorcomment>&quot;Scripts&quot; isn&apos;t the correct way to pluralize a word, and &quot;Scripte&quot; would misalign with referring to them as &quot;Script&quot;, so we just keep it as-is (it sounds plural enough anyway!)</translatorcomment>
<translation>NUS-Script (*.nus *.json)</translation> <translation>NUS-Script (*.nus *.json)</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="474"/>
<source>An error occurred while parsing the script file!</source> <source>An error occurred while parsing the script file!</source>
<translation>Ein Fehler ist während des Parsen des Script aufgetreten.</translation> <translation type="vanished">Ein Fehler ist während des Parsen des Script aufgetreten.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="475"/> <location filename="../../NUSGet.py" line="472"/>
<source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source> <source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source>
<translation>Ein Fehler wurde in Linie {e.lineno}, Spalte {e.colno} gefunden. Das Script muss korrigiert werden.</translation> <translation>Ein Fehler wurde in Linie {e.lineno}, Spalte {e.colno} gefunden. Das Script muss korrigiert werden.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="484"/>
<source>An error occurred while parsing Title IDs!</source> <source>An error occurred while parsing Title IDs!</source>
<translation>Ein Fehler ist während des Parsen der Title-IDs aufgetreten.</translation> <translation type="vanished">Ein Fehler ist während des Parsen der Title-IDs aufgetreten.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="485"/> <location filename="../../NUSGet.py" line="482"/>
<source>The title at index {script_data.index(title)} does not have a Title ID!</source> <source>The title at index {script_data.index(title)} does not have a Title ID!</source>
<translation>Der Titel an Stelle {script_data.index(title)} hat keine Title-ID.</translation> <translation>Der Titel an Stelle {script_data.index(title)} hat keine Title-ID.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="538"/> <location filename="../../NUSGet.py" line="535"/>
<source>Open Directory</source> <source>Open Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="552"/> <location filename="../../NUSGet.py" line="546"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="549"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source> <source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -308,7 +371,7 @@ Could not check for updates.</source>
Konnte nicht nach Updates suchen.</translation> Konnte nicht nach Updates suchen.</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="68"/> <location filename="../../modules/core.py" line="70"/>
<source> <source>
There&apos;s a newer version of NUSGet available!</source> There&apos;s a newer version of NUSGet available!</source>
@ -317,7 +380,7 @@ There&apos;s a newer version of NUSGet available!</source>
Eine neuere Version von NUSGet ist verfügbar.</translation> Eine neuere Version von NUSGet ist verfügbar.</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="70"/> <location filename="../../modules/core.py" line="72"/>
<source> <source>
You&apos;re running the latest release of NUSGet.</source> You&apos;re running the latest release of NUSGet.</source>
@ -396,94 +459,7 @@ Die neuste Version von NUSGet ist bereits aktiv.</translation>
<translation>Einstellungen</translation> <translation>Einstellungen</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="272"/> <location filename="../../qt/ui/MainMenu.ui" line="425"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Installierbar verpacken (WAD/TAD)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="287"/>
<source>File Name</source>
<translation>Dateiname</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="321"/>
<source>Keep encrypted contents</source>
<translation>Verschlüsselte Inhalte speichern</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="357"/>
<source>Create decrypted contents (*.app)</source>
<translation>Entschlüsselte Inhalte speichern (*.app)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="396"/>
<source>Use local files, if they exist</source>
<translation>Lokale Dateien nutzen, sofern verfügbar</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="441"/>
<source>Use the Wii U NUS (faster, only effects Wii/vWii)</source>
<translation>Wii U-NUS nutzen (schneller, gilt nur für Wii/vWii)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="483"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translatorcomment>&quot;Patch&quot; does not have a good translation into German, and in most modding forums, it&apos;s used as is</translatorcomment>
<translation>Patches für IOS anwenden (Gilt nur für WAD)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="539"/>
<source>vWii Title Settings</source>
<translation>vWii Titel-Einstellungen</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="573"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translatorcomment>Common key does not get translated</translatorcomment>
<translation>Titel mit dem Common-Key der Wii neu verschlüsseln</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="590"/>
<source>App Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="612"/>
<source>Check for updates on startup</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="636"/>
<source>Use a custom download directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="660"/>
<source>Select...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="740"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="753"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="761"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="650"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="714"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
@ -494,5 +470,91 @@ 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;</source> &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;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../NUSGet.py" line="149"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Installierbar verpacken (WAD/TAD)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="251"/>
<source>File Name</source>
<translation>Dateiname</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="151"/>
<source>Keep encrypted contents</source>
<translation>Verschlüsselte Inhalte speichern</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="153"/>
<source>Create decrypted contents (*.app)</source>
<translation>Entschlüsselte Inhalte speichern (*.app)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="154"/>
<source>Use local files, if they exist</source>
<translation>Lokale Dateien nutzen, sofern verfügbar</translation>
</message>
<message>
<source>Use the Wii U NUS (faster, only effects Wii/vWii)</source>
<translation type="vanished">Wii U-NUS nutzen (schneller, gilt nur für Wii/vWii)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="157"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translatorcomment>&quot;Patch&quot; does not have a good translation into German, and in most modding forums, it&apos;s used as is</translatorcomment>
<translation>Patches für IOS anwenden (Gilt nur für WAD)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="324"/>
<source>vWii Title Settings</source>
<translation>vWii Titel-Einstellungen</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="158"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translatorcomment>Common key does not get translated</translatorcomment>
<translation>Titel mit dem Common-Key der Wii neu verschlüsseln</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="343"/>
<source>App Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="159"/>
<source>Check for updates on startup</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="160"/>
<source>Use a custom download directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="371"/>
<source>Select...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="451"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="464"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="472"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="361"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View File

@ -4,40 +4,63 @@
<context> <context>
<name>AboutNUSGet</name> <name>AboutNUSGet</name>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="14"/> <location filename="../../qt/py/ui_AboutDialog.py" line="16"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="63"/>
<source>About NUSGet</source> <source>About NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="75"/> <location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<source>Placeholder Version String</source> <source>NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="82"/> <location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<source>Copyright (c) 2024-2025 NinjaCheetah &amp; Contributors</source> <source>Version {nusget_version}</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="92"/> <location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; <translation type="unfinished"></translation>
p, li { white-space: pre-wrap; } </message>
hr { height: 1px; border-width: 0; } <message>
li.unchecked::marker { content: &quot;\2610&quot;; } <location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
li.checked::marker { content: &quot;\2612&quot;; } <source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;.AppleSystemUIFont&apos;; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Translations&lt;/span&gt;&lt;/p&gt; </message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;German (Deutsch): &lt;a href=&quot;https://github.com/yeah-its-gloria&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;yeah-its-gloria&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Italian (Italiano): &lt;a href=&quot;https://github.com/LNLenost&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;LNLenost&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Korean (): &lt;a href=&quot;https://github.com/DDinghoya&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;DDinghoya&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <source>View Project on GitHub</source>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Norwegian (Norsk): &lt;a href=&quot;https://github.com/rolfiee&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;rolfiee&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Romanian (Română): &lt;a href=&quot;https://github.com/NotImplementedLife&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;NotImplementedLife&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> </message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<source>Translations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -113,87 +136,7 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="272"/> <location filename="../../qt/ui/MainMenu.ui" line="425"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="287"/>
<source>File Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="321"/>
<source>Keep encrypted contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="357"/>
<source>Create decrypted contents (*.app)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="396"/>
<source>Use local files, if they exist</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="441"/>
<source>Use the Wii U NUS (faster, only effects Wii/vWii)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="539"/>
<source>vWii Title Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="573"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="590"/>
<source>App Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="612"/>
<source>Check for updates on startup</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="636"/>
<source>Use a custom download directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="660"/>
<source>Select...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="740"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="753"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="761"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="650"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="714"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
@ -205,18 +148,174 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="483"/> <location filename="../../NUSGet.py" line="149"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="251"/>
<source>File Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="151"/>
<source>Keep encrypted contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="153"/>
<source>Create decrypted contents (*.app)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="154"/>
<source>Use local files, if they exist</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="324"/>
<source>vWii Title Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="158"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="343"/>
<source>App Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="159"/>
<source>Check for updates on startup</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="160"/>
<source>Use a custom download directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="371"/>
<source>Select...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="451"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="464"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="472"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="361"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="157"/>
<source>Apply patches to IOS (Applies to WADs only)</source> <source>Apply patches to IOS (Applies to WADs only)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="124"/> <location filename="../../NUSGet.py" line="224"/>
<source>NUSGet v{nusget_version} <source>NUSGet Update Available</source>
Developed by NinjaCheetah <translation type="unfinished"></translation>
Powered by libWiiPy {libwiipy_version} </message>
DSi support provided by libTWLPy {libtwlpy_version} <message>
<location filename="../../NUSGet.py" line="326"/>
Select a title from the list on the left, or enter a Title ID to begin. <source>No Output Selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="327"/>
<source>You have not selected any format to output the data in!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="329"/>
<source>Please select at least one option for how you would like the download to be saved.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="341"/>
<location filename="../../NUSGet.py" line="545"/>
<source>Invalid Download Directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="342"/>
<source>The specified download directory does not exist!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="345"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="375"/>
<source>Invalid Title ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="376"/>
<source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="381"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="386"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="421"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="471"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="481"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="378"/>
<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>
</message>
<message>
<location filename="../../NUSGet.py" line="119"/>
<source>Select a title from the list on the left, or enter a Title ID to begin.
Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved. Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved.
@ -224,189 +323,112 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="227"/> <location filename="../../NUSGet.py" line="155"/>
<source>NUSGet Update Available</source> <source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="228"/> <location filename="../../NUSGet.py" line="225"/>
<source>There&apos;s a newer version of NUSGet available!</source> <source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="329"/> <location filename="../../NUSGet.py" line="380"/>
<source>No Output Selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="330"/>
<source>You have not selected any format to output the data in!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="332"/>
<source>Please select at least one option for how you would like the download to be saved.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="344"/>
<location filename="../../NUSGet.py" line="548"/>
<source>Invalid Download Directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="345"/>
<location filename="../../NUSGet.py" line="549"/>
<source>The specified download directory does not exist!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="348"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="378"/>
<source>Invalid Title ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="379"/>
<source>The Title ID you have entered is not in a valid format!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="381"/>
<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>
</message>
<message>
<location filename="../../NUSGet.py" line="383"/>
<source>Title ID/Version Not Found</source> <source>Title ID/Version Not Found</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="384"/> <location filename="../../NUSGet.py" line="383"/>
<source>No title with the provided Title ID or version could be found!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="386"/>
<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> <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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="388"/> <location filename="../../NUSGet.py" line="385"/>
<source>Content Decryption Failed</source> <source>Content Decryption Failed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="389"/> <location filename="../../NUSGet.py" line="389"/>
<source>Content decryption was not successful! Decrypted contents could not be created.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="392"/>
<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> <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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="395"/> <location filename="../../NUSGet.py" line="392"/>
<source>Ticket Not Available</source> <source>Ticket Not Available</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="396"/> <location filename="../../NUSGet.py" line="396"/>
<source>No Ticket is Available for the Requested Title!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<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> <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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="401"/> <location filename="../../NUSGet.py" line="398"/>
<source>Unknown Error</source> <source>Unknown Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="402"/> <location filename="../../NUSGet.py" line="401"/>
<source>An Unknown Error has Occurred!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="404"/>
<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> <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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="423"/> <location filename="../../NUSGet.py" line="420"/>
<source>Script Issues Occurred</source> <source>Script Issues Occurred</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="424"/> <location filename="../../NUSGet.py" line="423"/>
<source>Some issues occurred while running the download script.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="426"/>
<source>Check the log for more details about what issues were encountered.</source> <source>Check the log for more details about what issues were encountered.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="433"/> <location filename="../../NUSGet.py" line="430"/>
<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> <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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="443"/> <location filename="../../NUSGet.py" line="440"/>
<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> <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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="462"/> <location filename="../../NUSGet.py" line="459"/>
<source>Script Download Failed</source> <source>Script Download Failed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="463"/> <location filename="../../NUSGet.py" line="460"/>
<source>Open NUS Script</source> <source>Open NUS Script</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="464"/> <location filename="../../NUSGet.py" line="461"/>
<source>NUS Scripts (*.nus *.json)</source> <source>NUS Scripts (*.nus *.json)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="474"/> <location filename="../../NUSGet.py" line="472"/>
<source>An error occurred while parsing the script file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="475"/>
<source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source> <source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="484"/> <location filename="../../NUSGet.py" line="482"/>
<source>An error occurred while parsing Title IDs!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="485"/>
<source>The title at index {script_data.index(title)} does not have a Title ID!</source> <source>The title at index {script_data.index(title)} does not have a Title ID!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="538"/> <location filename="../../NUSGet.py" line="535"/>
<source>Open Directory</source> <source>Open Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="552"/> <location filename="../../NUSGet.py" line="546"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="549"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source> <source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -418,14 +440,14 @@ Could not check for updates.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="68"/> <location filename="../../modules/core.py" line="70"/>
<source> <source>
There&apos;s a newer version of NUSGet available!</source> There&apos;s a newer version of NUSGet available!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="70"/> <location filename="../../modules/core.py" line="72"/>
<source> <source>
You&apos;re running the latest release of NUSGet.</source> You&apos;re running the latest release of NUSGet.</source>

View File

@ -4,40 +4,63 @@
<context> <context>
<name>AboutNUSGet</name> <name>AboutNUSGet</name>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="14"/> <location filename="../../qt/py/ui_AboutDialog.py" line="16"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="63"/>
<source>About NUSGet</source> <source>About NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="75"/> <location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<source>Placeholder Version String</source> <source>NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="82"/> <location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<source>Copyright (c) 2024-2025 NinjaCheetah &amp; Contributors</source> <source>Version {nusget_version}</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="92"/> <location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; <translation type="unfinished"></translation>
p, li { white-space: pre-wrap; } </message>
hr { height: 1px; border-width: 0; } <message>
li.unchecked::marker { content: &quot;\2610&quot;; } <location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
li.checked::marker { content: &quot;\2612&quot;; } <source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;.AppleSystemUIFont&apos;; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Translations&lt;/span&gt;&lt;/p&gt; </message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;German (Deutsch): &lt;a href=&quot;https://github.com/yeah-its-gloria&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;yeah-its-gloria&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Italian (Italiano): &lt;a href=&quot;https://github.com/LNLenost&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;LNLenost&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Korean (): &lt;a href=&quot;https://github.com/DDinghoya&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;DDinghoya&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <source>View Project on GitHub</source>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Norwegian (Norsk): &lt;a href=&quot;https://github.com/rolfiee&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;rolfiee&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Romanian (Română): &lt;a href=&quot;https://github.com/NotImplementedLife&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;NotImplementedLife&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> </message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<source>Translations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -66,13 +89,17 @@ 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> 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>
<message> <message>
<location filename="../../NUSGet.py" line="124"/> <location filename="../../NUSGet.py" line="224"/>
<source>NUSGet v{nusget_version} <source>NUSGet Update Available</source>
Developed by NinjaCheetah <translation>Mise à jour NUSGet disponible</translation>
Powered by libWiiPy {libwiipy_version} </message>
DSi support provided by libTWLPy {libtwlpy_version} <message>
<source>There&apos;s a newer version of NUSGet available!</source>
Select a title from the list on the left, or enter a Title ID to begin. <translation type="vanished">Une nouvelle version de NUSGet est disponible !</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="119"/>
<source>Select a title from the list on the left, or enter a Title ID to begin.
Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved. Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved.
@ -80,189 +107,225 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="227"/> <location filename="../../NUSGet.py" line="155"/>
<source>NUSGet Update Available</source> <source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Mise à jour NUSGet disponible</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="228"/> <location filename="../../NUSGet.py" line="225"/>
<source>There&apos;s a newer version of NUSGet available!</source> <source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation>Une nouvelle version de NUSGet est disponible !</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="329"/> <location filename="../../NUSGet.py" line="326"/>
<source>No Output Selected</source> <source>No Output Selected</source>
<translation>Aucun format sélectionné</translation> <translation>Aucun format sélectionné</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="330"/> <location filename="../../NUSGet.py" line="327"/>
<source>You have not selected any format to output the data in!</source> <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> <translation>Veuillez sélectionner un format de sortie pour les données !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="332"/> <location filename="../../NUSGet.py" line="329"/>
<source>Please select at least one option for how you would like the download to be saved.</source> <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> <translation>Veuillez sélectionner au moins une option de téléchargement.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="344"/> <location filename="../../NUSGet.py" line="341"/>
<location filename="../../NUSGet.py" line="548"/> <location filename="../../NUSGet.py" line="545"/>
<source>Invalid Download Directory</source> <source>Invalid Download Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="345"/> <location filename="../../NUSGet.py" line="342"/>
<location filename="../../NUSGet.py" line="549"/>
<source>The specified download directory does not exist!</source> <source>The specified download directory does not exist!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="348"/> <location filename="../../NUSGet.py" line="345"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source> <source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="378"/> <location filename="../../NUSGet.py" line="375"/>
<source>Invalid Title ID</source> <source>Invalid Title ID</source>
<translation>ID de titre invalide</translation> <translation>ID de titre invalide</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="379"/> <location filename="../../NUSGet.py" line="376"/>
<source>The Title ID you have entered is not in a valid format!</source> <source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>L&apos;ID de titre que vous avez saisi a un format invalide !</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="381"/> <location filename="../../NUSGet.py" line="381"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="386"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="421"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="471"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="481"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation type="unfinished"></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="378"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="383"/> <location filename="../../NUSGet.py" line="380"/>
<source>Title ID/Version Not Found</source> <source>Title ID/Version Not Found</source>
<translation>ID de titre / Version introuvable</translation> <translation>ID de titre / Version introuvable</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="384"/>
<source>No title with the provided Title ID or version could be found!</source> <source>No title with the provided Title ID or version could be found!</source>
<translation>Aucun titre trouvé pour l&apos;ID ou la version fourni !</translation> <translation type="vanished">Aucun titre trouvé pour l&apos;ID ou la version fourni !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="386"/> <location filename="../../NUSGet.py" line="383"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="388"/> <location filename="../../NUSGet.py" line="385"/>
<source>Content Decryption Failed</source> <source>Content Decryption Failed</source>
<translation>Échec du décryptage</translation> <translation>Échec du décryptage</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="389"/>
<source>Content decryption was not successful! Decrypted contents could not be created.</source> <source>Content decryption was not successful! Decrypted contents could not be created.</source>
<translation>Le décryptage du contenu a échoué ! Le contenu décrypté ne peut être créé.</translation> <translation type="vanished">Le décryptage du contenu a échoué ! Le contenu décrypté ne peut être créé.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="392"/> <location filename="../../NUSGet.py" line="389"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="395"/> <location filename="../../NUSGet.py" line="392"/>
<source>Ticket Not Available</source> <source>Ticket Not Available</source>
<translation>Billet indisponible</translation> <translation>Billet indisponible</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="396"/>
<source>No Ticket is Available for the Requested Title!</source> <source>No Ticket is Available for the Requested Title!</source>
<translation>Aucun billet disponible pour le titre demandé !</translation> <translation type="vanished">Aucun billet disponible pour le titre demandé !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="399"/> <location filename="../../NUSGet.py" line="396"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="401"/> <location filename="../../NUSGet.py" line="398"/>
<source>Unknown Error</source> <source>Unknown Error</source>
<translation>Erreur inconnue</translation> <translation>Erreur inconnue</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="402"/>
<source>An Unknown Error has Occurred!</source> <source>An Unknown Error has Occurred!</source>
<translation>Une erreur inconnue est survenue !</translation> <translation type="vanished">Une erreur inconnue est survenue !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="404"/> <location filename="../../NUSGet.py" line="401"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="423"/> <location filename="../../NUSGet.py" line="420"/>
<source>Script Issues Occurred</source> <source>Script Issues Occurred</source>
<translation>Erreurs survenues dans le script</translation> <translation>Erreurs survenues dans le script</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="424"/>
<source>Some issues occurred while running the download script.</source> <source>Some issues occurred while running the download script.</source>
<translation>Des erreurs sont survenues pendant l&apos;exécution du script de téléchargement.</translation> <translation type="vanished">Des erreurs sont survenues pendant l&apos;exécution du script de téléchargement.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="426"/> <location filename="../../NUSGet.py" line="423"/>
<source>Check the log for more details about what issues were encountered.</source> <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> <translation>Vérifiez le journal pour plus de détails à propos des erreurs rencontrées.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="433"/> <location filename="../../NUSGet.py" line="430"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="443"/> <location filename="../../NUSGet.py" line="440"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="462"/> <location filename="../../NUSGet.py" line="459"/>
<source>Script Download Failed</source> <source>Script Download Failed</source>
<translation>Échec du script de téléchargement</translation> <translation>Échec du script de téléchargement</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="463"/> <location filename="../../NUSGet.py" line="460"/>
<source>Open NUS Script</source> <source>Open NUS Script</source>
<translation>Ouvrir un script NUS</translation> <translation>Ouvrir un script NUS</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="464"/> <location filename="../../NUSGet.py" line="461"/>
<source>NUS Scripts (*.nus *.json)</source> <source>NUS Scripts (*.nus *.json)</source>
<translation>Scripts NUS (*.nus *.json)</translation> <translation>Scripts NUS (*.nus *.json)</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="474"/>
<source>An error occurred while parsing the script file!</source> <source>An error occurred while parsing the script file!</source>
<translation>Une erreur est survenue pendant la lecture du script !</translation> <translation type="vanished">Une erreur est survenue pendant la lecture du script !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="475"/> <location filename="../../NUSGet.py" line="472"/>
<source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source> <source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source>
<translation>Erreur recontrée ligne {e.lineno}, colonne {e.colno}. Vérifiez le script et réessayez.</translation> <translation>Erreur recontrée ligne {e.lineno}, colonne {e.colno}. Vérifiez le script et réessayez.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="484"/>
<source>An error occurred while parsing Title IDs!</source> <source>An error occurred while parsing Title IDs!</source>
<translation>Une erreur est survenue à la lecture d&apos;un ID de titre !</translation> <translation type="vanished">Une erreur est survenue à la lecture d&apos;un ID de titre !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="485"/> <location filename="../../NUSGet.py" line="482"/>
<source>The title at index {script_data.index(title)} does not have a Title ID!</source> <source>The title at index {script_data.index(title)} does not have a Title ID!</source>
<translation>Le titre à l&apos;index {script_data.index(title)} n&apos;a pas d&apos;ID !</translation> <translation>Le titre à l&apos;index {script_data.index(title)} n&apos;a pas d&apos;ID !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="538"/> <location filename="../../NUSGet.py" line="535"/>
<source>Open Directory</source> <source>Open Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="552"/> <location filename="../../NUSGet.py" line="546"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="549"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source> <source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -332,92 +395,7 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation>Configuration</translation> <translation>Configuration</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="272"/> <location filename="../../qt/ui/MainMenu.ui" line="425"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Empaqueter une archive d&apos;installation (WAD / TAD)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="287"/>
<source>File Name</source>
<translation>Nom du fichier</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="321"/>
<source>Keep encrypted contents</source>
<translation>Conserver le contenu crypté</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="357"/>
<source>Create decrypted contents (*.app)</source>
<translation>Décrypter le contenu (*.app)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="396"/>
<source>Use local files, if they exist</source>
<translation>Utiliser des fichiers locaux, s&apos;ils existent</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="441"/>
<source>Use the Wii U NUS (faster, only effects Wii/vWii)</source>
<translation>Utiliser le NUS Wii U (plus rapide, n&apos;affecte que Wii / vWii)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="483"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Appliquer des modifications aux IOS (WAD uniquement)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="539"/>
<source>vWii Title Settings</source>
<translation>Titres vWii</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="573"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Encrypter le titre avec la clé commune Wii</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="590"/>
<source>App Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="612"/>
<source>Check for updates on startup</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="636"/>
<source>Use a custom download directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="660"/>
<source>Select...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="740"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="753"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="761"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="650"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="714"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
@ -428,6 +406,90 @@ 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;</source> &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;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../NUSGet.py" line="149"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Empaqueter une archive d&apos;installation (WAD / TAD)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="251"/>
<source>File Name</source>
<translation>Nom du fichier</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="151"/>
<source>Keep encrypted contents</source>
<translation>Conserver le contenu crypté</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="153"/>
<source>Create decrypted contents (*.app)</source>
<translation>Décrypter le contenu (*.app)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="154"/>
<source>Use local files, if they exist</source>
<translation>Utiliser des fichiers locaux, s&apos;ils existent</translation>
</message>
<message>
<source>Use the Wii U NUS (faster, only effects Wii/vWii)</source>
<translation type="vanished">Utiliser le NUS Wii U (plus rapide, n&apos;affecte que Wii / vWii)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="157"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Appliquer des modifications aux IOS (WAD uniquement)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="324"/>
<source>vWii Title Settings</source>
<translation>Titres vWii</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="158"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Encrypter le titre avec la clé commune Wii</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="343"/>
<source>App Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="159"/>
<source>Check for updates on startup</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="160"/>
<source>Use a custom download directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="371"/>
<source>Select...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="451"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="464"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="472"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="361"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../../modules/core.py" line="60"/> <location filename="../../modules/core.py" line="60"/>
<source> <source>
@ -438,7 +500,7 @@ Could not check for updates.</source>
Impossible de vérifier les mises à jour.</translation> Impossible de vérifier les mises à jour.</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="68"/> <location filename="../../modules/core.py" line="70"/>
<source> <source>
There&apos;s a newer version of NUSGet available!</source> There&apos;s a newer version of NUSGet available!</source>
@ -447,7 +509,7 @@ There&apos;s a newer version of NUSGet available!</source>
Une nouvelle version de NUSGet est disponible !</translation> Une nouvelle version de NUSGet est disponible !</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="70"/> <location filename="../../modules/core.py" line="72"/>
<source> <source>
You&apos;re running the latest release of NUSGet.</source> You&apos;re running the latest release of NUSGet.</source>

View File

@ -4,40 +4,63 @@
<context> <context>
<name>AboutNUSGet</name> <name>AboutNUSGet</name>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="14"/> <location filename="../../qt/py/ui_AboutDialog.py" line="16"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="63"/>
<source>About NUSGet</source> <source>About NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="75"/> <location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<source>Placeholder Version String</source> <source>NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="82"/> <location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<source>Copyright (c) 2024-2025 NinjaCheetah &amp; Contributors</source> <source>Version {nusget_version}</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="92"/> <location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; <translation type="unfinished"></translation>
p, li { white-space: pre-wrap; } </message>
hr { height: 1px; border-width: 0; } <message>
li.unchecked::marker { content: &quot;\2610&quot;; } <location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
li.checked::marker { content: &quot;\2612&quot;; } <source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;.AppleSystemUIFont&apos;; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Translations&lt;/span&gt;&lt;/p&gt; </message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;German (Deutsch): &lt;a href=&quot;https://github.com/yeah-its-gloria&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;yeah-its-gloria&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Italian (Italiano): &lt;a href=&quot;https://github.com/LNLenost&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;LNLenost&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Korean (): &lt;a href=&quot;https://github.com/DDinghoya&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;DDinghoya&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <source>View Project on GitHub</source>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Norwegian (Norsk): &lt;a href=&quot;https://github.com/rolfiee&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;rolfiee&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Romanian (Română): &lt;a href=&quot;https://github.com/NotImplementedLife&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;NotImplementedLife&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> </message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<source>Translations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -113,87 +136,66 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Impostazioni generali</translation> <translation>Impostazioni generali</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="272"/> <location filename="../../NUSGet.py" line="149"/>
<source>Pack installable archive (WAD/TAD)</source> <source>Pack installable archive (WAD/TAD)</source>
<translation>Archivio installabile (WAD/TAD)</translation> <translation>Archivio installabile (WAD/TAD)</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="287"/> <location filename="../../qt/ui/MainMenu.ui" line="251"/>
<source>File Name</source> <source>File Name</source>
<translation>Nome del file</translation> <translation>Nome del file</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="321"/> <location filename="../../NUSGet.py" line="151"/>
<source>Keep encrypted contents</source> <source>Keep encrypted contents</source>
<translation>Mantieni contenuti criptati</translation> <translation>Mantieni contenuti criptati</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="357"/> <location filename="../../NUSGet.py" line="153"/>
<source>Create decrypted contents (*.app)</source> <source>Create decrypted contents (*.app)</source>
<translation>Crea contenuto decriptato (*.app)</translation> <translation>Crea contenuto decriptato (*.app)</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="396"/> <location filename="../../NUSGet.py" line="154"/>
<source>Use local files, if they exist</source> <source>Use local files, if they exist</source>
<translation>Usa file locali, se esistenti</translation> <translation>Usa file locali, se esistenti</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="441"/>
<source>Use the Wii U NUS (faster, only effects Wii/vWii)</source> <source>Use the Wii U NUS (faster, only effects Wii/vWii)</source>
<translation>Usa il NUS di Wii U (più veloce, riguarda solo Wii/vWii)</translation> <translation type="vanished">Usa il NUS di Wii U (più veloce, riguarda solo Wii/vWii)</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="539"/> <location filename="../../qt/ui/MainMenu.ui" line="324"/>
<source>vWii Title Settings</source> <source>vWii Title Settings</source>
<translation>Impostazioni titoli vWii</translation> <translation>Impostazioni titoli vWii</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="573"/> <location filename="../../NUSGet.py" line="158"/>
<source>Re-encrypt title using the Wii Common Key</source> <source>Re-encrypt title using the Wii Common Key</source>
<translation>Cripta titolo usando la Chiave Comune Wii</translation> <translation>Cripta titolo usando la Chiave Comune Wii</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="590"/> <location filename="../../qt/ui/MainMenu.ui" line="343"/>
<source>App Settings</source> <source>App Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="612"/> <location filename="../../NUSGet.py" line="159"/>
<source>Check for updates on startup</source> <source>Check for updates on startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="636"/> <location filename="../../NUSGet.py" line="160"/>
<source>Use a custom download directory</source> <source>Use a custom download directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="660"/> <location filename="../../qt/ui/MainMenu.ui" line="371"/>
<source>Select...</source> <source>Select...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="740"/> <location filename="../../qt/ui/MainMenu.ui" line="425"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="753"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="761"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="650"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="714"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
@ -204,6 +206,26 @@ 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;</source> &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;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="451"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="464"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="472"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="361"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
@ -257,13 +279,8 @@ I titoli marcati da una spunta sono disponibili e hanno un ticket libero, e poss
I titoli verranno scaricati nella cartella &quot;NUSGet Downloads&quot; all&apos;interno della cartella Download.</translation> I titoli verranno scaricati nella cartella &quot;NUSGet Downloads&quot; all&apos;interno della cartella Download.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="124"/> <location filename="../../NUSGet.py" line="119"/>
<source>NUSGet v{nusget_version} <source>Select a title from the list on the left, or enter a Title ID to begin.
Developed by NinjaCheetah
Powered by libWiiPy {libwiipy_version}
DSi support provided by libTWLPy {libtwlpy_version}
Select a title from the list on the left, or enter a Title ID to begin.
Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved. Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved.
@ -271,179 +288,225 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="329"/> <location filename="../../NUSGet.py" line="155"/>
<source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="225"/>
<source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="326"/>
<source>No Output Selected</source> <source>No Output Selected</source>
<translation>Nessun output selezionato</translation> <translation>Nessun output selezionato</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="330"/> <location filename="../../NUSGet.py" line="327"/>
<source>You have not selected any format to output the data in!</source> <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> <translation>Non hai selezionato alcun formato in cui esportare i dati!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="332"/> <location filename="../../NUSGet.py" line="329"/>
<source>Please select at least one option for how you would like the download to be saved.</source> <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> <translation>Per favore scegli almeno un opzione per come vorresti che fosse salvato il download.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="344"/> <location filename="../../NUSGet.py" line="341"/>
<location filename="../../NUSGet.py" line="548"/> <location filename="../../NUSGet.py" line="545"/>
<source>Invalid Download Directory</source> <source>Invalid Download Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="345"/> <location filename="../../NUSGet.py" line="342"/>
<location filename="../../NUSGet.py" line="549"/>
<source>The specified download directory does not exist!</source> <source>The specified download directory does not exist!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="348"/> <location filename="../../NUSGet.py" line="345"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source> <source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="378"/> <location filename="../../NUSGet.py" line="375"/>
<source>Invalid Title ID</source> <source>Invalid Title ID</source>
<translation>ID Titolo invalido</translation> <translation>ID Titolo invalido</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="379"/> <location filename="../../NUSGet.py" line="376"/>
<source>The Title ID you have entered is not in a valid format!</source> <source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>L&apos; ID Titolo che hai inserito non è in un formato valido!</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="381"/> <location filename="../../NUSGet.py" line="381"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="386"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="421"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="471"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="481"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation type="unfinished"></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="378"/>
<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> <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>Gli ID Titolo sono un codice di 16 caratteri tra numeri e lettere. Per favore inserisci in ID Titolo formattato correttamente, o scegline uno dal menù a sinistra.</translation> <translation>Gli ID Titolo sono un codice di 16 caratteri tra numeri e lettere. Per favore inserisci in ID Titolo formattato correttamente, o scegline uno dal menù a sinistra.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="383"/> <location filename="../../NUSGet.py" line="380"/>
<source>Title ID/Version Not Found</source> <source>Title ID/Version Not Found</source>
<translation>ID Titolo/Versione non trovata</translation> <translation>ID Titolo/Versione non trovata</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="384"/>
<source>No title with the provided Title ID or version could be found!</source> <source>No title with the provided Title ID or version could be found!</source>
<translation>Non è stato trovato nessun titolo con l&apos; ID Titolo o versione data!</translation> <translation type="vanished">Non è stato trovato nessun titolo con l&apos; ID Titolo o versione data!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="386"/> <location filename="../../NUSGet.py" line="383"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="388"/> <location filename="../../NUSGet.py" line="385"/>
<source>Content Decryption Failed</source> <source>Content Decryption Failed</source>
<translation>Decriptazione contenuti fallita</translation> <translation>Decriptazione contenuti fallita</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="389"/>
<source>Content decryption was not successful! Decrypted contents could not be created.</source> <source>Content decryption was not successful! Decrypted contents could not be created.</source>
<translation>La decriptazione dei contenuti non è andata a buon fine! I contenuti decriptadi non sono stati creati.</translation> <translation type="vanished">La decriptazione dei contenuti non è andata a buon fine! I contenuti decriptadi non sono stati creati.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="392"/> <location filename="../../NUSGet.py" line="389"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="395"/> <location filename="../../NUSGet.py" line="392"/>
<source>Ticket Not Available</source> <source>Ticket Not Available</source>
<translation>Ticket non disponibile</translation> <translation>Ticket non disponibile</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="396"/>
<source>No Ticket is Available for the Requested Title!</source> <source>No Ticket is Available for the Requested Title!</source>
<translation>Nessun ticket disponibile per il titolo richiesto!</translation> <translation type="vanished">Nessun ticket disponibile per il titolo richiesto!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="399"/> <location filename="../../NUSGet.py" line="396"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="401"/> <location filename="../../NUSGet.py" line="398"/>
<source>Unknown Error</source> <source>Unknown Error</source>
<translation>Errore sconosciuto</translation> <translation>Errore sconosciuto</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="402"/>
<source>An Unknown Error has Occurred!</source> <source>An Unknown Error has Occurred!</source>
<translation>Errore sconosciuto!</translation> <translation type="vanished">Errore sconosciuto!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="404"/> <location filename="../../NUSGet.py" line="401"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="423"/> <location filename="../../NUSGet.py" line="420"/>
<source>Script Issues Occurred</source> <source>Script Issues Occurred</source>
<translation>Errore script</translation> <translation>Errore script</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="424"/>
<source>Some issues occurred while running the download script.</source> <source>Some issues occurred while running the download script.</source>
<translation>Ci sono stati degli errori con lo script di download.</translation> <translation type="vanished">Ci sono stati degli errori con lo script di download.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="426"/> <location filename="../../NUSGet.py" line="423"/>
<source>Check the log for more details about what issues were encountered.</source> <source>Check the log for more details about what issues were encountered.</source>
<translation>Guarda i log per più dettagli sull&apos;errore.</translation> <translation>Guarda i log per più dettagli sull&apos;errore.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="433"/> <location filename="../../NUSGet.py" line="430"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="443"/> <location filename="../../NUSGet.py" line="440"/>
<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> <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>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.</translation> <translation>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.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="462"/> <location filename="../../NUSGet.py" line="459"/>
<source>Script Download Failed</source> <source>Script Download Failed</source>
<translation>Download script fallito</translation> <translation>Download script fallito</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="463"/> <location filename="../../NUSGet.py" line="460"/>
<source>Open NUS Script</source> <source>Open NUS Script</source>
<translation>Apri script NUS</translation> <translation>Apri script NUS</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="464"/> <location filename="../../NUSGet.py" line="461"/>
<source>NUS Scripts (*.nus *.json)</source> <source>NUS Scripts (*.nus *.json)</source>
<translation>Scrpit NUS (*.nus *.txt)</translation> <translation>Scrpit NUS (*.nus *.txt)</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="474"/>
<source>An error occurred while parsing the script file!</source> <source>An error occurred while parsing the script file!</source>
<translation>Ci sono stati degli errori con lo script di download!</translation> <translation type="vanished">Ci sono stati degli errori con lo script di download!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="475"/> <location filename="../../NUSGet.py" line="472"/>
<source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source> <source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source>
<translation>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</translation> <translation>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="484"/>
<source>An error occurred while parsing Title IDs!</source> <source>An error occurred while parsing Title IDs!</source>
<translation>Ci sono stati degli errori con GLI id tITOLO!</translation> <translation type="vanished">Ci sono stati degli errori con GLI id tITOLO!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="485"/> <location filename="../../NUSGet.py" line="482"/>
<source>The title at index {script_data.index(title)} does not have a Title ID!</source> <source>The title at index {script_data.index(title)} does not have a Title ID!</source>
<translation>The title at index {script_data.index(title)} does not have a Title ID!</translation> <translation>The title at index {script_data.index(title)} does not have a Title ID!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="538"/> <location filename="../../NUSGet.py" line="535"/>
<source>Open Directory</source> <source>Open Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="552"/> <location filename="../../NUSGet.py" line="546"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="549"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source> <source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -485,19 +548,18 @@ 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> I titoli verranno scaricati nella cartella &quot;NUSGet&quot; all&apos;interno della cartella Download.</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="483"/> <location filename="../../NUSGet.py" line="157"/>
<source>Apply patches to IOS (Applies to WADs only)</source> <source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Applica patch agli IOS (Solo per le WAD)</translation> <translation>Applica patch agli IOS (Solo per le WAD)</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="227"/> <location filename="../../NUSGet.py" line="224"/>
<source>NUSGet Update Available</source> <source>NUSGet Update Available</source>
<translation>Aggiornamento di NUSGet disponibile</translation> <translation>Aggiornamento di NUSGet disponibile</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="228"/>
<source>There&apos;s a newer version of NUSGet available!</source> <source>There&apos;s a newer version of NUSGet available!</source>
<translation>Una nuova versione di NUSGet è disponibile!</translation> <translation type="vanished">Una nuova versione di NUSGet è disponibile!</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="60"/> <location filename="../../modules/core.py" line="60"/>
@ -507,14 +569,14 @@ Could not check for updates.</source>
<translation>Impossibile trovare eventuali aggiornamenti.</translation> <translation>Impossibile trovare eventuali aggiornamenti.</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="68"/> <location filename="../../modules/core.py" line="70"/>
<source> <source>
There&apos;s a newer version of NUSGet available!</source> There&apos;s a newer version of NUSGet available!</source>
<translation>Una nuova versione di NUSGet è disponibile!</translation> <translation>Una nuova versione di NUSGet è disponibile!</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="70"/> <location filename="../../modules/core.py" line="72"/>
<source> <source>
You&apos;re running the latest release of NUSGet.</source> You&apos;re running the latest release of NUSGet.</source>

View File

@ -4,40 +4,63 @@
<context> <context>
<name>AboutNUSGet</name> <name>AboutNUSGet</name>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="14"/> <location filename="../../qt/py/ui_AboutDialog.py" line="16"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="63"/>
<source>About NUSGet</source> <source>About NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="75"/> <location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<source>Placeholder Version String</source> <source>NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="82"/> <location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<source>Copyright (c) 2024-2025 NinjaCheetah &amp; Contributors</source> <source>Version {nusget_version}</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="92"/> <location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; <translation type="unfinished"></translation>
p, li { white-space: pre-wrap; } </message>
hr { height: 1px; border-width: 0; } <message>
li.unchecked::marker { content: &quot;\2610&quot;; } <location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
li.checked::marker { content: &quot;\2612&quot;; } <source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;.AppleSystemUIFont&apos;; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Translations&lt;/span&gt;&lt;/p&gt; </message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;German (Deutsch): &lt;a href=&quot;https://github.com/yeah-its-gloria&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;yeah-its-gloria&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Italian (Italiano): &lt;a href=&quot;https://github.com/LNLenost&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;LNLenost&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Korean (): &lt;a href=&quot;https://github.com/DDinghoya&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;DDinghoya&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <source>View Project on GitHub</source>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Norwegian (Norsk): &lt;a href=&quot;https://github.com/rolfiee&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;rolfiee&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Romanian (Română): &lt;a href=&quot;https://github.com/NotImplementedLife&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;NotImplementedLife&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> </message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<source>Translations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -113,87 +136,66 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="272"/> <location filename="../../NUSGet.py" line="149"/>
<source>Pack installable archive (WAD/TAD)</source> <source>Pack installable archive (WAD/TAD)</source>
<translation> (WAD/TAD) </translation> <translation> (WAD/TAD) </translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="287"/> <location filename="../../qt/ui/MainMenu.ui" line="251"/>
<source>File Name</source> <source>File Name</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="321"/> <location filename="../../NUSGet.py" line="151"/>
<source>Keep encrypted contents</source> <source>Keep encrypted contents</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="357"/> <location filename="../../NUSGet.py" line="153"/>
<source>Create decrypted contents (*.app)</source> <source>Create decrypted contents (*.app)</source>
<translation> (*.app) </translation> <translation> (*.app) </translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="396"/> <location filename="../../NUSGet.py" line="154"/>
<source>Use local files, if they exist</source> <source>Use local files, if they exist</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="441"/>
<source>Use the Wii U NUS (faster, only effects Wii/vWii)</source> <source>Use the Wii U NUS (faster, only effects Wii/vWii)</source>
<translation>Wii U NUS ( Wii/vWii에만 )</translation> <translation type="vanished">Wii U NUS ( Wii/vWii에만 )</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="539"/> <location filename="../../qt/ui/MainMenu.ui" line="324"/>
<source>vWii Title Settings</source> <source>vWii Title Settings</source>
<translation>vWii </translation> <translation>vWii </translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="573"/> <location filename="../../NUSGet.py" line="158"/>
<source>Re-encrypt title using the Wii Common Key</source> <source>Re-encrypt title using the Wii Common Key</source>
<translation>Wii </translation> <translation>Wii </translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="590"/> <location filename="../../qt/ui/MainMenu.ui" line="343"/>
<source>App Settings</source> <source>App Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="612"/> <location filename="../../NUSGet.py" line="159"/>
<source>Check for updates on startup</source> <source>Check for updates on startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="636"/> <location filename="../../NUSGet.py" line="160"/>
<source>Use a custom download directory</source> <source>Use a custom download directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="660"/> <location filename="../../qt/ui/MainMenu.ui" line="371"/>
<source>Select...</source> <source>Select...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="740"/> <location filename="../../qt/ui/MainMenu.ui" line="425"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="753"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="761"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="650"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="714"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
@ -204,6 +206,26 @@ 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;</source> &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;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="451"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="464"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="472"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="361"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
@ -257,13 +279,8 @@ DSi 지원 : libTWLPy {libtwlpy_version}에서 제공
&quot;NUSGet Downloads&quot; .</translation> &quot;NUSGet Downloads&quot; .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="124"/> <location filename="../../NUSGet.py" line="119"/>
<source>NUSGet v{nusget_version} <source>Select a title from the list on the left, or enter a Title ID to begin.
Developed by NinjaCheetah
Powered by libWiiPy {libwiipy_version}
DSi support provided by libTWLPy {libtwlpy_version}
Select a title from the list on the left, or enter a Title ID to begin.
Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved. Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved.
@ -271,179 +288,225 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="329"/> <location filename="../../NUSGet.py" line="155"/>
<source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="225"/>
<source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="326"/>
<source>No Output Selected</source> <source>No Output Selected</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="330"/> <location filename="../../NUSGet.py" line="327"/>
<source>You have not selected any format to output the data in!</source> <source>You have not selected any format to output the data in!</source>
<translation> !</translation> <translation> !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="332"/> <location filename="../../NUSGet.py" line="329"/>
<source>Please select at least one option for how you would like the download to be saved.</source> <source>Please select at least one option for how you would like the download to be saved.</source>
<translation> .</translation> <translation> .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="344"/> <location filename="../../NUSGet.py" line="341"/>
<location filename="../../NUSGet.py" line="548"/> <location filename="../../NUSGet.py" line="545"/>
<source>Invalid Download Directory</source> <source>Invalid Download Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="345"/> <location filename="../../NUSGet.py" line="342"/>
<location filename="../../NUSGet.py" line="549"/>
<source>The specified download directory does not exist!</source> <source>The specified download directory does not exist!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="348"/> <location filename="../../NUSGet.py" line="345"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source> <source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="378"/> <location filename="../../NUSGet.py" line="375"/>
<source>Invalid Title ID</source> <source>Invalid Title ID</source>
<translation> ID</translation> <translation> ID</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="379"/> <location filename="../../NUSGet.py" line="376"/>
<source>The Title ID you have entered is not in a valid format!</source> <source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation> ID의 !</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="381"/> <location filename="../../NUSGet.py" line="381"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="386"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="421"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="471"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="481"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation type="unfinished"></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="378"/>
<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> <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> <translation> ID는 16 . ID를 .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="383"/> <location filename="../../NUSGet.py" line="380"/>
<source>Title ID/Version Not Found</source> <source>Title ID/Version Not Found</source>
<translation> ID/ </translation> <translation> ID/ </translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="384"/>
<source>No title with the provided Title ID or version could be found!</source> <source>No title with the provided Title ID or version could be found!</source>
<translation> ID !</translation> <translation type="vanished"> ID !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="386"/> <location filename="../../NUSGet.py" line="383"/>
<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> <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> <translation> ID를 , .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="388"/> <location filename="../../NUSGet.py" line="385"/>
<source>Content Decryption Failed</source> <source>Content Decryption Failed</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="389"/>
<source>Content decryption was not successful! Decrypted contents could not be created.</source> <source>Content decryption was not successful! Decrypted contents could not be created.</source>
<translation> ! .</translation> <translation type="vanished"> ! .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="392"/> <location filename="../../NUSGet.py" line="389"/>
<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> <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> <translation>TMD . &quot; &quot; , .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="395"/> <location filename="../../NUSGet.py" line="392"/>
<source>Ticket Not Available</source> <source>Ticket Not Available</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="396"/>
<source>No Ticket is Available for the Requested Title!</source> <source>No Ticket is Available for the Requested Title!</source>
<translation> !</translation> <translation type="vanished"> !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="399"/> <location filename="../../NUSGet.py" line="396"/>
<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> <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> <translation> &quot; &quot; &quot; &quot; . . .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="401"/> <location filename="../../NUSGet.py" line="398"/>
<source>Unknown Error</source> <source>Unknown Error</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="402"/>
<source>An Unknown Error has Occurred!</source> <source>An Unknown Error has Occurred!</source>
<translation> !</translation> <translation type="vanished"> !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="404"/> <location filename="../../NUSGet.py" line="401"/>
<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> <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> <translation> . GitHub에서 .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="423"/> <location filename="../../NUSGet.py" line="420"/>
<source>Script Issues Occurred</source> <source>Script Issues Occurred</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="424"/>
<source>Some issues occurred while running the download script.</source> <source>Some issues occurred while running the download script.</source>
<translation> .</translation> <translation type="vanished"> .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="426"/> <location filename="../../NUSGet.py" line="423"/>
<source>Check the log for more details about what issues were encountered.</source> <source>Check the log for more details about what issues were encountered.</source>
<translation> .</translation> <translation> .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="433"/> <location filename="../../NUSGet.py" line="430"/>
<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> <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> <translation> . ID와 .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="443"/> <location filename="../../NUSGet.py" line="440"/>
<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> <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> <translation>&quot; &quot; &quot; &quot; . .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="462"/> <location filename="../../NUSGet.py" line="459"/>
<source>Script Download Failed</source> <source>Script Download Failed</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="463"/> <location filename="../../NUSGet.py" line="460"/>
<source>Open NUS Script</source> <source>Open NUS Script</source>
<translation>NUS </translation> <translation>NUS </translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="464"/> <location filename="../../NUSGet.py" line="461"/>
<source>NUS Scripts (*.nus *.json)</source> <source>NUS Scripts (*.nus *.json)</source>
<translation>NUS (*.nus *.json)</translation> <translation>NUS (*.nus *.json)</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="474"/>
<source>An error occurred while parsing the script file!</source> <source>An error occurred while parsing the script file!</source>
<translation> !</translation> <translation type="vanished"> !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="475"/> <location filename="../../NUSGet.py" line="472"/>
<source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source> <source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source>
<translation>{e.lineno} , {e.colno} . .</translation> <translation>{e.lineno} , {e.colno} . .</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="484"/>
<source>An error occurred while parsing Title IDs!</source> <source>An error occurred while parsing Title IDs!</source>
<translation> ID를 !</translation> <translation type="vanished"> ID를 !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="485"/> <location filename="../../NUSGet.py" line="482"/>
<source>The title at index {script_data.index(title)} does not have a Title ID!</source> <source>The title at index {script_data.index(title)} does not have a Title ID!</source>
<translation>{script_data.index(title)} ID가 !</translation> <translation>{script_data.index(title)} ID가 !</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="538"/> <location filename="../../NUSGet.py" line="535"/>
<source>Open Directory</source> <source>Open Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="552"/> <location filename="../../NUSGet.py" line="546"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="549"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source> <source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -486,19 +549,18 @@ DSi 지원 : libTWLPy {libtwlpy_version}에서 제공
&quot;NUSBet&quot; .</translation> &quot;NUSBet&quot; .</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="483"/> <location filename="../../NUSGet.py" line="157"/>
<source>Apply patches to IOS (Applies to WADs only)</source> <source>Apply patches to IOS (Applies to WADs only)</source>
<translation>IOS에 (WAD에만 )</translation> <translation>IOS에 (WAD에만 )</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="227"/> <location filename="../../NUSGet.py" line="224"/>
<source>NUSGet Update Available</source> <source>NUSGet Update Available</source>
<translation>NUSGet </translation> <translation>NUSGet </translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="228"/>
<source>There&apos;s a newer version of NUSGet available!</source> <source>There&apos;s a newer version of NUSGet available!</source>
<translation>NUSBet의 !</translation> <translation type="vanished">NUSBet의 !</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="60"/> <location filename="../../modules/core.py" line="60"/>
@ -510,7 +572,7 @@ Could not check for updates.</source>
.</translation> .</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="68"/> <location filename="../../modules/core.py" line="70"/>
<source> <source>
There&apos;s a newer version of NUSGet available!</source> There&apos;s a newer version of NUSGet available!</source>
@ -519,7 +581,7 @@ There&apos;s a newer version of NUSGet available!</source>
NUSBet의 !</translation> NUSBet의 !</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="70"/> <location filename="../../modules/core.py" line="72"/>
<source> <source>
You&apos;re running the latest release of NUSGet.</source> You&apos;re running the latest release of NUSGet.</source>

View File

@ -4,40 +4,63 @@
<context> <context>
<name>AboutNUSGet</name> <name>AboutNUSGet</name>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="14"/> <location filename="../../qt/py/ui_AboutDialog.py" line="16"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="63"/>
<source>About NUSGet</source> <source>About NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="75"/> <location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<source>Placeholder Version String</source> <source>NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="82"/> <location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<source>Copyright (c) 2024-2025 NinjaCheetah &amp; Contributors</source> <source>Version {nusget_version}</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="92"/> <location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; <translation type="unfinished"></translation>
p, li { white-space: pre-wrap; } </message>
hr { height: 1px; border-width: 0; } <message>
li.unchecked::marker { content: &quot;\2610&quot;; } <location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
li.checked::marker { content: &quot;\2612&quot;; } <source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;.AppleSystemUIFont&apos;; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Translations&lt;/span&gt;&lt;/p&gt; </message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;German (Deutsch): &lt;a href=&quot;https://github.com/yeah-its-gloria&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;yeah-its-gloria&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Italian (Italiano): &lt;a href=&quot;https://github.com/LNLenost&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;LNLenost&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Korean (): &lt;a href=&quot;https://github.com/DDinghoya&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;DDinghoya&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <source>View Project on GitHub</source>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Norwegian (Norsk): &lt;a href=&quot;https://github.com/rolfiee&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;rolfiee&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Romanian (Română): &lt;a href=&quot;https://github.com/NotImplementedLife&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;NotImplementedLife&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> </message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<source>Translations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -113,87 +136,66 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Generelle Instillinger</translation> <translation>Generelle Instillinger</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="272"/> <location filename="../../NUSGet.py" line="149"/>
<source>Pack installable archive (WAD/TAD)</source> <source>Pack installable archive (WAD/TAD)</source>
<translation>Pakke installerbart arkiv (WAD/TAD)</translation> <translation>Pakke installerbart arkiv (WAD/TAD)</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="287"/> <location filename="../../qt/ui/MainMenu.ui" line="251"/>
<source>File Name</source> <source>File Name</source>
<translation>Filnavn</translation> <translation>Filnavn</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="321"/> <location filename="../../NUSGet.py" line="151"/>
<source>Keep encrypted contents</source> <source>Keep encrypted contents</source>
<translation>Oppbevar kryptert innhold</translation> <translation>Oppbevar kryptert innhold</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="357"/> <location filename="../../NUSGet.py" line="153"/>
<source>Create decrypted contents (*.app)</source> <source>Create decrypted contents (*.app)</source>
<translation>Opprette dekryptert innold (*.app)</translation> <translation>Opprette dekryptert innold (*.app)</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="396"/> <location filename="../../NUSGet.py" line="154"/>
<source>Use local files, if they exist</source> <source>Use local files, if they exist</source>
<translation>Bruk lokale filer, hvis de finnes</translation> <translation>Bruk lokale filer, hvis de finnes</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="441"/>
<source>Use the Wii U NUS (faster, only effects Wii/vWii)</source> <source>Use the Wii U NUS (faster, only effects Wii/vWii)</source>
<translation>Bruk Wii U NUS (raskere, påvirker bare Wii/vWii)</translation> <translation type="vanished">Bruk Wii U NUS (raskere, påvirker bare Wii/vWii)</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="539"/> <location filename="../../qt/ui/MainMenu.ui" line="324"/>
<source>vWii Title Settings</source> <source>vWii Title Settings</source>
<translation>vWii Tittelinstillinger</translation> <translation>vWii Tittelinstillinger</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="573"/> <location filename="../../NUSGet.py" line="158"/>
<source>Re-encrypt title using the Wii Common Key</source> <source>Re-encrypt title using the Wii Common Key</source>
<translation>Krypter tittelen nytt ved hjelp av Wii Common Key</translation> <translation>Krypter tittelen nytt ved hjelp av Wii Common Key</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="590"/> <location filename="../../qt/ui/MainMenu.ui" line="343"/>
<source>App Settings</source> <source>App Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="612"/> <location filename="../../NUSGet.py" line="159"/>
<source>Check for updates on startup</source> <source>Check for updates on startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="636"/> <location filename="../../NUSGet.py" line="160"/>
<source>Use a custom download directory</source> <source>Use a custom download directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="660"/> <location filename="../../qt/ui/MainMenu.ui" line="371"/>
<source>Select...</source> <source>Select...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="740"/> <location filename="../../qt/ui/MainMenu.ui" line="425"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="753"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="761"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="650"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="714"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
@ -204,6 +206,26 @@ 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;</source> &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;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="451"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="464"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="472"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="361"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
@ -279,13 +301,231 @@ 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> Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedlastingsmappen din.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="124"/> <location filename="../../NUSGet.py" line="225"/>
<source>NUSGet v{nusget_version} <source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
Developed by NinjaCheetah <translation type="unfinished"></translation>
Powered by libWiiPy {libwiipy_version} </message>
DSi support provided by libTWLPy {libtwlpy_version} <message>
<location filename="../../NUSGet.py" line="326"/>
Select a title from the list on the left, or enter a Title ID to begin. <source>No Output Selected</source>
<translation>Ingen Utgang Valgt</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="327"/>
<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="329"/>
<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="341"/>
<location filename="../../NUSGet.py" line="545"/>
<source>Invalid Download Directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="342"/>
<source>The specified download directory does not exist!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="345"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="375"/>
<source>Invalid Title ID</source>
<translation>Ugyldig Tittel ID</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="376"/>
<source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="381"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="386"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="421"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="471"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="481"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation type="unfinished"></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="378"/>
<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="380"/>
<source>Title ID/Version Not Found</source>
<translation>Tittel ID/Versjon Ikke Funnet</translation>
</message>
<message>
<source>No title with the provided Title ID or version could be found!</source>
<translation type="vanished">Ingen tittel med oppgitt Tittel ID eller versjon ble funnet!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="383"/>
<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="385"/>
<source>Content Decryption Failed</source>
<translation>Dekryptering av Innhold Mislyktes</translation>
</message>
<message>
<source>Content decryption was not successful! Decrypted contents could not be created.</source>
<translation type="vanished">Dekryptering av innhold var ikke vellykket! Dekryptert innhold kunne ikke opprettes.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="389"/>
<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="392"/>
<source>Ticket Not Available</source>
<translation>Billett Ikke Tilgjengelig</translation>
</message>
<message>
<source>No Ticket is Available for the Requested Title!</source>
<translation type="vanished">Ingen billett er tilgjengelig for den forespurte tittelen!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="396"/>
<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="398"/>
<source>Unknown Error</source>
<translation>Ukjent Feil</translation>
</message>
<message>
<source>An Unknown Error has Occurred!</source>
<translation type="vanished">En ukjent feil har oppstått!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="401"/>
<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="420"/>
<source>Script Issues Occurred</source>
<translation>Skriptfeil Oppstod</translation>
</message>
<message>
<source>Some issues occurred while running the download script.</source>
<translation type="vanished">Noen feil oppstod under kjøring av nedlastingsskriptet.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="423"/>
<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="430"/>
<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="440"/>
<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="459"/>
<source>Script Download Failed</source>
<translation>Skriptnedlasting Mislyktes</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="460"/>
<source>Open NUS Script</source>
<translation>Åpne NUS Skript</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="461"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>NUS Skript (*.nus *.json)</translation>
</message>
<message>
<source>An error occurred while parsing the script file!</source>
<translation type="vanished">Det oppstod en feil under parsing av skriptfilen!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="472"/>
<source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source>
<translation></translation>
</message>
<message>
<source>An error occurred while parsing Title IDs!</source>
<translation type="vanished">Det oppstod en feil under parsing av Tittel IDer!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="482"/>
<source>The title at index {script_data.index(title)} does not have a Title ID!</source>
<translation>Tittelen ved indeks {script_data.index(title)} har ikke en Tittel ID!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="535"/>
<source>Open Directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="546"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="549"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="157"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Påfør patcher IOS (gjelder kun WADer)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="119"/>
<source>Select a title from the list on the left, or enter a Title ID to begin.
Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved. Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved.
@ -293,196 +533,18 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="329"/> <location filename="../../NUSGet.py" line="155"/>
<source>No Output Selected</source> <source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Ingen Utgang Valgt</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="330"/>
<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="332"/>
<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="344"/>
<location filename="../../NUSGet.py" line="548"/>
<source>Invalid Download Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="345"/> <location filename="../../NUSGet.py" line="224"/>
<location filename="../../NUSGet.py" line="549"/>
<source>The specified download directory does not exist!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="348"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="378"/>
<source>Invalid Title ID</source>
<translation>Ugyldig Tittel ID</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="379"/>
<source>The Title ID you have entered is not in a valid format!</source>
<translation>Tittel IDen du har angitt er ikke i et gyldig format!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="381"/>
<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="383"/>
<source>Title ID/Version Not Found</source>
<translation>Tittel ID/Versjon Ikke Funnet</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="384"/>
<source>No title with the provided Title ID or version could be found!</source>
<translation>Ingen tittel med oppgitt Tittel ID eller versjon ble funnet!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="386"/>
<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="388"/>
<source>Content Decryption Failed</source>
<translation>Dekryptering av Innhold Mislyktes</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="389"/>
<source>Content decryption was not successful! Decrypted contents could not be created.</source>
<translation>Dekryptering av innhold var ikke vellykket! Dekryptert innhold kunne ikke opprettes.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="392"/>
<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="395"/>
<source>Ticket Not Available</source>
<translation>Billett Ikke Tilgjengelig</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="396"/>
<source>No Ticket is Available for the Requested Title!</source>
<translation>Ingen billett er tilgjengelig for den forespurte tittelen!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<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="401"/>
<source>Unknown Error</source>
<translation>Ukjent Feil</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="402"/>
<source>An Unknown Error has Occurred!</source>
<translation>En ukjent feil har oppstått!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="404"/>
<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="423"/>
<source>Script Issues Occurred</source>
<translation>Skriptfeil Oppstod</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="424"/>
<source>Some issues occurred while running the download script.</source>
<translation>Noen feil oppstod under kjøring av nedlastingsskriptet.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="426"/>
<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="433"/>
<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="443"/>
<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="462"/>
<source>Script Download Failed</source>
<translation>Skriptnedlasting Mislyktes</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="463"/>
<source>Open NUS Script</source>
<translation>Åpne NUS Skript</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="464"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>NUS Skript (*.nus *.json)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="474"/>
<source>An error occurred while parsing the script file!</source>
<translation>Det oppstod en feil under parsing av skriptfilen!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="475"/>
<source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source>
<translation></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="484"/>
<source>An error occurred while parsing Title IDs!</source>
<translation>Det oppstod en feil under parsing av Tittel IDer!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="485"/>
<source>The title at index {script_data.index(title)} does not have a Title ID!</source>
<translation>Tittelen ved indeks {script_data.index(title)} har ikke en Tittel ID!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="538"/>
<source>Open Directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="552"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="483"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Påfør patcher IOS (gjelder kun WADer)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="227"/>
<source>NUSGet Update Available</source> <source>NUSGet Update Available</source>
<translation>NUSGet Oppdatering Tilgjengelig</translation> <translation>NUSGet Oppdatering Tilgjengelig</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="228"/>
<source>There&apos;s a newer version of NUSGet available!</source> <source>There&apos;s a newer version of NUSGet available!</source>
<translation>Det finnes en nyere versjon av NUSGet tilgjengelig!</translation> <translation type="vanished">Det finnes en nyere versjon av NUSGet tilgjengelig!</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="60"/> <location filename="../../modules/core.py" line="60"/>
@ -494,7 +556,7 @@ Could not check for updates.</source>
Kunne ikke sjekke for oppdateringer.</translation> Kunne ikke sjekke for oppdateringer.</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="68"/> <location filename="../../modules/core.py" line="70"/>
<source> <source>
There&apos;s a newer version of NUSGet available!</source> There&apos;s a newer version of NUSGet available!</source>
@ -503,7 +565,7 @@ There&apos;s a newer version of NUSGet available!</source>
Det finnes en nyere versjon av NUSGet tilgjengelig!</translation> Det finnes en nyere versjon av NUSGet tilgjengelig!</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="70"/> <location filename="../../modules/core.py" line="72"/>
<source> <source>
You&apos;re running the latest release of NUSGet.</source> You&apos;re running the latest release of NUSGet.</source>

View File

@ -4,40 +4,63 @@
<context> <context>
<name>AboutNUSGet</name> <name>AboutNUSGet</name>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="14"/> <location filename="../../qt/py/ui_AboutDialog.py" line="16"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="63"/>
<source>About NUSGet</source> <source>About NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="75"/> <location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<source>Placeholder Version String</source> <source>NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="82"/> <location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<source>Copyright (c) 2024-2025 NinjaCheetah &amp; Contributors</source> <source>Version {nusget_version}</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="92"/> <location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; <translation type="unfinished"></translation>
p, li { white-space: pre-wrap; } </message>
hr { height: 1px; border-width: 0; } <message>
li.unchecked::marker { content: &quot;\2610&quot;; } <location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
li.checked::marker { content: &quot;\2612&quot;; } <source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;.AppleSystemUIFont&apos;; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Translations&lt;/span&gt;&lt;/p&gt; </message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;German (Deutsch): &lt;a href=&quot;https://github.com/yeah-its-gloria&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;yeah-its-gloria&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Italian (Italiano): &lt;a href=&quot;https://github.com/LNLenost&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;LNLenost&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Korean (): &lt;a href=&quot;https://github.com/DDinghoya&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;DDinghoya&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <source>View Project on GitHub</source>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Norwegian (Norsk): &lt;a href=&quot;https://github.com/rolfiee&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;rolfiee&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Romanian (Română): &lt;a href=&quot;https://github.com/NotImplementedLife&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;NotImplementedLife&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> </message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<source>Translations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -113,87 +136,66 @@ li.checked::marker { content: &quot;\2612&quot;; }
<translation>Generelle Instillinger</translation> <translation>Generelle Instillinger</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="272"/> <location filename="../../NUSGet.py" line="149"/>
<source>Pack installable archive (WAD/TAD)</source> <source>Pack installable archive (WAD/TAD)</source>
<translation>Pakke installerbart arkiv (WAD/TAD)</translation> <translation>Pakke installerbart arkiv (WAD/TAD)</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="287"/> <location filename="../../qt/ui/MainMenu.ui" line="251"/>
<source>File Name</source> <source>File Name</source>
<translation>Filnavn</translation> <translation>Filnavn</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="321"/> <location filename="../../NUSGet.py" line="151"/>
<source>Keep encrypted contents</source> <source>Keep encrypted contents</source>
<translation>Oppbevar kryptert innhold</translation> <translation>Oppbevar kryptert innhold</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="357"/> <location filename="../../NUSGet.py" line="153"/>
<source>Create decrypted contents (*.app)</source> <source>Create decrypted contents (*.app)</source>
<translation>Opprette dekryptert innold (*.app)</translation> <translation>Opprette dekryptert innold (*.app)</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="396"/> <location filename="../../NUSGet.py" line="154"/>
<source>Use local files, if they exist</source> <source>Use local files, if they exist</source>
<translation>Bruk lokale filer, hvis de finnes</translation> <translation>Bruk lokale filer, hvis de finnes</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="441"/>
<source>Use the Wii U NUS (faster, only effects Wii/vWii)</source> <source>Use the Wii U NUS (faster, only effects Wii/vWii)</source>
<translation>Bruk Wii U NUS (raskere, påvirker bare Wii/vWii)</translation> <translation type="vanished">Bruk Wii U NUS (raskere, påvirker bare Wii/vWii)</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="539"/> <location filename="../../qt/ui/MainMenu.ui" line="324"/>
<source>vWii Title Settings</source> <source>vWii Title Settings</source>
<translation>vWii Tittelinstillinger</translation> <translation>vWii Tittelinstillinger</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="573"/> <location filename="../../NUSGet.py" line="158"/>
<source>Re-encrypt title using the Wii Common Key</source> <source>Re-encrypt title using the Wii Common Key</source>
<translation>Krypter tittelen nytt ved hjelp av Wii Common Key</translation> <translation>Krypter tittelen nytt ved hjelp av Wii Common Key</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="590"/> <location filename="../../qt/ui/MainMenu.ui" line="343"/>
<source>App Settings</source> <source>App Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="612"/> <location filename="../../NUSGet.py" line="159"/>
<source>Check for updates on startup</source> <source>Check for updates on startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="636"/> <location filename="../../NUSGet.py" line="160"/>
<source>Use a custom download directory</source> <source>Use a custom download directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="660"/> <location filename="../../qt/ui/MainMenu.ui" line="371"/>
<source>Select...</source> <source>Select...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="740"/> <location filename="../../qt/ui/MainMenu.ui" line="425"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="753"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="761"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="650"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="714"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
@ -204,6 +206,26 @@ 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;</source> &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;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="451"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="464"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="472"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="361"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
@ -279,13 +301,231 @@ 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> Titler er lastes ned til en mappe med navnet &quot;NUSGet Downloads&quot; i nedlastingsmappen din.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="124"/> <location filename="../../NUSGet.py" line="225"/>
<source>NUSGet v{nusget_version} <source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
Developed by NinjaCheetah <translation type="unfinished"></translation>
Powered by libWiiPy {libwiipy_version} </message>
DSi support provided by libTWLPy {libtwlpy_version} <message>
<location filename="../../NUSGet.py" line="326"/>
Select a title from the list on the left, or enter a Title ID to begin. <source>No Output Selected</source>
<translation>Ingen Utgang Valgt</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="327"/>
<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="329"/>
<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="341"/>
<location filename="../../NUSGet.py" line="545"/>
<source>Invalid Download Directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="342"/>
<source>The specified download directory does not exist!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="345"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="375"/>
<source>Invalid Title ID</source>
<translation>Ugyldig Tittel ID</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="376"/>
<source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="381"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="386"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="421"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="471"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="481"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation type="unfinished"></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="378"/>
<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="380"/>
<source>Title ID/Version Not Found</source>
<translation>Tittel ID/Versjon Ikke Funnet</translation>
</message>
<message>
<source>No title with the provided Title ID or version could be found!</source>
<translation type="vanished">Ingen tittel med oppgitt Tittel ID eller versjon ble funnet!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="383"/>
<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="385"/>
<source>Content Decryption Failed</source>
<translation>Dekryptering av Innhold Mislyktes</translation>
</message>
<message>
<source>Content decryption was not successful! Decrypted contents could not be created.</source>
<translation type="vanished">Dekryptering av innhold var ikke vellykket! Dekryptert innhold kunne ikke opprettes.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="389"/>
<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="392"/>
<source>Ticket Not Available</source>
<translation>Billett Ikke Tilgjengelig</translation>
</message>
<message>
<source>No Ticket is Available for the Requested Title!</source>
<translation type="vanished">Ingen billett er tilgjengelig for den forespurte tittelen!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="396"/>
<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="398"/>
<source>Unknown Error</source>
<translation>Ukjent Feil</translation>
</message>
<message>
<source>An Unknown Error has Occurred!</source>
<translation type="vanished">En ukjent feil har oppstått!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="401"/>
<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="420"/>
<source>Script Issues Occurred</source>
<translation>Skriptfeil Oppstod</translation>
</message>
<message>
<source>Some issues occurred while running the download script.</source>
<translation type="vanished">Noen feil oppstod under kjøring av nedlastingsskriptet.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="423"/>
<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="430"/>
<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="440"/>
<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="459"/>
<source>Script Download Failed</source>
<translation>Skriptnedlasting Mislyktes</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="460"/>
<source>Open NUS Script</source>
<translation>Åpne NUS Skript</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="461"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>NUS Skript (*.nus *.json)</translation>
</message>
<message>
<source>An error occurred while parsing the script file!</source>
<translation type="vanished">Det oppstod en feil under parsing av skriptfilen!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="472"/>
<source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source>
<translation></translation>
</message>
<message>
<source>An error occurred while parsing Title IDs!</source>
<translation type="vanished">Det oppstod en feil under parsing av Tittel IDer!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="482"/>
<source>The title at index {script_data.index(title)} does not have a Title ID!</source>
<translation>Tittelen ved indeks {script_data.index(title)} har ikke en Tittel ID!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="535"/>
<source>Open Directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="546"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="549"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="157"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Påfør patcher IOS (gjelder kun WADer)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="119"/>
<source>Select a title from the list on the left, or enter a Title ID to begin.
Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved. Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved.
@ -293,196 +533,18 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="329"/> <location filename="../../NUSGet.py" line="155"/>
<source>No Output Selected</source> <source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Ingen Utgang Valgt</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="330"/>
<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="332"/>
<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="344"/>
<location filename="../../NUSGet.py" line="548"/>
<source>Invalid Download Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="345"/> <location filename="../../NUSGet.py" line="224"/>
<location filename="../../NUSGet.py" line="549"/>
<source>The specified download directory does not exist!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="348"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="378"/>
<source>Invalid Title ID</source>
<translation>Ugyldig Tittel ID</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="379"/>
<source>The Title ID you have entered is not in a valid format!</source>
<translation>Tittel IDen du har angitt er ikke i et gyldig format!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="381"/>
<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="383"/>
<source>Title ID/Version Not Found</source>
<translation>Tittel ID/Versjon Ikke Funnet</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="384"/>
<source>No title with the provided Title ID or version could be found!</source>
<translation>Ingen tittel med oppgitt Tittel ID eller versjon ble funnet!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="386"/>
<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="388"/>
<source>Content Decryption Failed</source>
<translation>Dekryptering av Innhold Mislyktes</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="389"/>
<source>Content decryption was not successful! Decrypted contents could not be created.</source>
<translation>Dekryptering av innhold var ikke vellykket! Dekryptert innhold kunne ikke opprettes.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="392"/>
<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="395"/>
<source>Ticket Not Available</source>
<translation>Billett Ikke Tilgjengelig</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="396"/>
<source>No Ticket is Available for the Requested Title!</source>
<translation>Ingen billett er tilgjengelig for den forespurte tittelen!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<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="401"/>
<source>Unknown Error</source>
<translation>Ukjent Feil</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="402"/>
<source>An Unknown Error has Occurred!</source>
<translation>En ukjent feil har oppstått!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="404"/>
<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="423"/>
<source>Script Issues Occurred</source>
<translation>Skriptfeil Oppstod</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="424"/>
<source>Some issues occurred while running the download script.</source>
<translation>Noen feil oppstod under kjøring av nedlastingsskriptet.</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="426"/>
<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="433"/>
<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="443"/>
<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="462"/>
<source>Script Download Failed</source>
<translation>Skriptnedlasting Mislyktes</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="463"/>
<source>Open NUS Script</source>
<translation>Åpne NUS Skript</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="464"/>
<source>NUS Scripts (*.nus *.json)</source>
<translation>NUS Skript (*.nus *.json)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="474"/>
<source>An error occurred while parsing the script file!</source>
<translation>Det oppstod en feil under parsing av skriptfilen!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="475"/>
<source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source>
<translation></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="484"/>
<source>An error occurred while parsing Title IDs!</source>
<translation>Det oppstod en feil under parsing av Tittel IDer!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="485"/>
<source>The title at index {script_data.index(title)} does not have a Title ID!</source>
<translation>Tittelen ved indeks {script_data.index(title)} har ikke en Tittel ID!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="538"/>
<source>Open Directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="552"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="483"/>
<source>Apply patches to IOS (Applies to WADs only)</source>
<translation>Påfør patcher IOS (gjelder kun WADer)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="227"/>
<source>NUSGet Update Available</source> <source>NUSGet Update Available</source>
<translation>NUSGet Oppdatering Tilgjengelig</translation> <translation>NUSGet Oppdatering Tilgjengelig</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="228"/>
<source>There&apos;s a newer version of NUSGet available!</source> <source>There&apos;s a newer version of NUSGet available!</source>
<translation>Det finnes en nyere versjon av NUSGet tilgjengelig!</translation> <translation type="vanished">Det finnes en nyere versjon av NUSGet tilgjengelig!</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="60"/> <location filename="../../modules/core.py" line="60"/>
@ -494,7 +556,7 @@ Could not check for updates.</source>
Kunne ikke sjekke for oppdateringer.</translation> Kunne ikke sjekke for oppdateringer.</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="68"/> <location filename="../../modules/core.py" line="70"/>
<source> <source>
There&apos;s a newer version of NUSGet available!</source> There&apos;s a newer version of NUSGet available!</source>
@ -503,7 +565,7 @@ There&apos;s a newer version of NUSGet available!</source>
Det finnes en nyere versjon av NUSGet tilgjengelig!</translation> Det finnes en nyere versjon av NUSGet tilgjengelig!</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="70"/> <location filename="../../modules/core.py" line="72"/>
<source> <source>
You&apos;re running the latest release of NUSGet.</source> You&apos;re running the latest release of NUSGet.</source>

View File

@ -4,40 +4,63 @@
<context> <context>
<name>AboutNUSGet</name> <name>AboutNUSGet</name>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="14"/> <location filename="../../qt/py/ui_AboutDialog.py" line="16"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="63"/>
<source>About NUSGet</source> <source>About NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="75"/> <location filename="../../qt/py/ui_AboutDialog.py" line="82"/>
<source>Placeholder Version String</source> <source>NUSGet</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="82"/> <location filename="../../qt/py/ui_AboutDialog.py" line="87"/>
<source>Copyright (c) 2024-2025 NinjaCheetah &amp; Contributors</source> <source>Version {nusget_version}</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/AboutNUSGet.ui" line="92"/> <location filename="../../qt/py/ui_AboutDialog.py" line="93"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>Using libWiiPy {libwiipy_version} &amp; libTWLPy {libtwlpy_version}</source>
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; <translation type="unfinished"></translation>
p, li { white-space: pre-wrap; } </message>
hr { height: 1px; border-width: 0; } <message>
li.unchecked::marker { content: &quot;\2610&quot;; } <location filename="../../qt/py/ui_AboutDialog.py" line="98"/>
li.checked::marker { content: &quot;\2612&quot;; } <source>© 2024-2025 NinjaCheetah &amp; Contributors</source>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;.AppleSystemUIFont&apos;; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:700;&quot;&gt;Translations&lt;/span&gt;&lt;/p&gt; </message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;German (Deutsch): &lt;a href=&quot;https://github.com/yeah-its-gloria&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;yeah-its-gloria&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <message>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Italian (Italiano): &lt;a href=&quot;https://github.com/LNLenost&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;LNLenost&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <location filename="../../qt/py/ui_AboutDialog.py" line="114"/>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Korean (): &lt;a href=&quot;https://github.com/DDinghoya&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;DDinghoya&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <source>View Project on GitHub</source>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Norwegian (Norsk): &lt;a href=&quot;https://github.com/rolfiee&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;rolfiee&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; <translation type="unfinished"></translation>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Romanian (Română): &lt;a href=&quot;https://github.com/NotImplementedLife&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#3586ff;&quot;&gt;NotImplementedLife&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> </message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="130"/>
<source>Translations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="138"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="140"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="142"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="144"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/py/ui_AboutDialog.py" line="146"/>
<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 type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -88,13 +111,17 @@ 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> Titlurile vor fi descărcate într-un folder numit NUSGet Downloads în fișierul dvs. de download.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="124"/> <location filename="../../NUSGet.py" line="224"/>
<source>NUSGet v{nusget_version} <source>NUSGet Update Available</source>
Developed by NinjaCheetah <translation>Actualizare NUSGet disponibilă</translation>
Powered by libWiiPy {libwiipy_version} </message>
DSi support provided by libTWLPy {libtwlpy_version} <message>
<source>There&apos;s a newer version of NUSGet available!</source>
Select a title from the list on the left, or enter a Title ID to begin. <translation type="vanished">O nouă versiune NUSGet este disponibilă!</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="119"/>
<source>Select a title from the list on the left, or enter a Title ID to begin.
Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved. Titles marked with a checkmark are free and have a ticket available, and can be decrypted and/or packed into a WAD or TAD. Titles with an X do not have a ticket, and only their encrypted contents can be saved.
@ -102,189 +129,225 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="227"/> <location filename="../../NUSGet.py" line="155"/>
<source>NUSGet Update Available</source> <source>Use the Wii U NUS (faster, only affects Wii/vWii)</source>
<translation>Actualizare NUSGet disponibilă</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="228"/> <location filename="../../NUSGet.py" line="225"/>
<source>There&apos;s a newer version of NUSGet available!</source> <source>&lt;b&gt;There&apos;s a newer version of NUSGet available!&lt;/b&gt;</source>
<translation>O nouă versiune NUSGet este disponibilă!</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="329"/> <location filename="../../NUSGet.py" line="326"/>
<source>No Output Selected</source> <source>No Output Selected</source>
<translation>Nu s-a selectat un output</translation> <translation>Nu s-a selectat un output</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="330"/> <location filename="../../NUSGet.py" line="327"/>
<source>You have not selected any format to output the data in!</source> <source>You have not selected any format to output the data in!</source>
<translation>Nu ați selectat niciun format de ieșire!</translation> <translation>Nu ați selectat niciun format de ieșire!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="332"/> <location filename="../../NUSGet.py" line="329"/>
<source>Please select at least one option for how you would like the download to be saved.</source> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="344"/> <location filename="../../NUSGet.py" line="341"/>
<location filename="../../NUSGet.py" line="548"/> <location filename="../../NUSGet.py" line="545"/>
<source>Invalid Download Directory</source> <source>Invalid Download Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="345"/> <location filename="../../NUSGet.py" line="342"/>
<location filename="../../NUSGet.py" line="549"/>
<source>The specified download directory does not exist!</source> <source>The specified download directory does not exist!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="348"/> <location filename="../../NUSGet.py" line="345"/>
<source>Please make sure the specified download directory exists, and that you have permission to access it.</source> <source>Please make sure the specified download directory exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="378"/> <location filename="../../NUSGet.py" line="375"/>
<source>Invalid Title ID</source> <source>Invalid Title ID</source>
<translation>Title ID invalid</translation> <translation>Title ID invalid</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="379"/> <location filename="../../NUSGet.py" line="376"/>
<source>The Title ID you have entered is not in a valid format!</source> <source>&lt;b&gt;The Title ID you have entered is not in a valid format!&lt;/b&gt;</source>
<translation>Title ID pe care l-ați introdus este invalid!</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="381"/> <location filename="../../NUSGet.py" line="381"/>
<source>&lt;b&gt;No title with the provided Title ID or version could be found!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="386"/>
<source>&lt;b&gt;Content decryption was not successful! Decrypted contents could not be created.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="393"/>
<source>&lt;b&gt;No Ticket is Available for the Requested Title!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="399"/>
<source>&lt;b&gt;An Unknown Error has Occurred!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="421"/>
<source>&lt;b&gt;Some issues occurred while running the download script.&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="471"/>
<source>&lt;b&gt;An error occurred while parsing the script file!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="481"/>
<source>&lt;b&gt;An error occurred while parsing Title IDs!&lt;/b&gt;</source>
<translation type="unfinished"></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="378"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="383"/> <location filename="../../NUSGet.py" line="380"/>
<source>Title ID/Version Not Found</source> <source>Title ID/Version Not Found</source>
<translation>Title ID/Versiunea nu a fost găsită</translation> <translation>Title ID/Versiunea nu a fost găsită</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="384"/>
<source>No title with the provided Title ID or version could be found!</source> <source>No title with the provided Title ID or version could be found!</source>
<translation>Niciun titlu care corespundă cu Title ID-ul sau cu versiunea introdusă nu a fost găsit!</translation> <translation type="vanished">Niciun titlu care corespundă cu Title ID-ul sau cu versiunea introdusă nu a fost găsit!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="386"/> <location filename="../../NUSGet.py" line="383"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="388"/> <location filename="../../NUSGet.py" line="385"/>
<source>Content Decryption Failed</source> <source>Content Decryption Failed</source>
<translation>Decriptarea conținutului a eșuat</translation> <translation>Decriptarea conținutului a eșuat</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="389"/>
<source>Content decryption was not successful! Decrypted contents could not be created.</source> <source>Content decryption was not successful! Decrypted contents could not be created.</source>
<translation>Decriptarea conținutului nu a reușit. Nu s-a putut crea conținutul decriptat.</translation> <translation type="vanished">Decriptarea conținutului nu a reușit. Nu s-a putut crea conținutul decriptat.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="392"/> <location filename="../../NUSGet.py" line="389"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="395"/> <location filename="../../NUSGet.py" line="392"/>
<source>Ticket Not Available</source> <source>Ticket Not Available</source>
<translation>Ticket-ul nu este valabil</translation> <translation>Ticket-ul nu este valabil</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="396"/>
<source>No Ticket is Available for the Requested Title!</source> <source>No Ticket is Available for the Requested Title!</source>
<translation>Niciun Ticket nu este valabil pentru titlul dorit!</translation> <translation type="vanished">Niciun Ticket nu este valabil pentru titlul dorit!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="399"/> <location filename="../../NUSGet.py" line="396"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="401"/> <location filename="../../NUSGet.py" line="398"/>
<source>Unknown Error</source> <source>Unknown Error</source>
<translation>Eroare necunoscută</translation> <translation>Eroare necunoscută</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="402"/>
<source>An Unknown Error has Occurred!</source> <source>An Unknown Error has Occurred!</source>
<translation>S-a produs o eroare necunoscută!</translation> <translation type="vanished">S-a produs o eroare necunoscută!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="404"/> <location filename="../../NUSGet.py" line="401"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="423"/> <location filename="../../NUSGet.py" line="420"/>
<source>Script Issues Occurred</source> <source>Script Issues Occurred</source>
<translation>Au apărut probleme cu scriptul</translation> <translation>Au apărut probleme cu scriptul</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="424"/>
<source>Some issues occurred while running the download script.</source> <source>Some issues occurred while running the download script.</source>
<translation>Au apărut câteva probleme la rularea scriptului descărcat.</translation> <translation type="vanished">Au apărut câteva probleme la rularea scriptului descărcat.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="426"/> <location filename="../../NUSGet.py" line="423"/>
<source>Check the log for more details about what issues were encountered.</source> <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> <translation>Verificați logurile pentru mai multe detalii despre problemele întâmpinate.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="433"/> <location filename="../../NUSGet.py" line="430"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="443"/> <location filename="../../NUSGet.py" line="440"/>
<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> <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> <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>
<message> <message>
<location filename="../../NUSGet.py" line="462"/> <location filename="../../NUSGet.py" line="459"/>
<source>Script Download Failed</source> <source>Script Download Failed</source>
<translation>Descărcarea scriptului a eșuat</translation> <translation>Descărcarea scriptului a eșuat</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="463"/> <location filename="../../NUSGet.py" line="460"/>
<source>Open NUS Script</source> <source>Open NUS Script</source>
<translation>Deschideți script NUS</translation> <translation>Deschideți script NUS</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="464"/> <location filename="../../NUSGet.py" line="461"/>
<source>NUS Scripts (*.nus *.json)</source> <source>NUS Scripts (*.nus *.json)</source>
<translation>Scripturi NUS (*.nus *.json)</translation> <translation>Scripturi NUS (*.nus *.json)</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="474"/>
<source>An error occurred while parsing the script file!</source> <source>An error occurred while parsing the script file!</source>
<translation>A apărut o eroare la parssarea acestui fișier script!</translation> <translation type="vanished">A apărut o eroare la parssarea acestui fișier script!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="475"/> <location filename="../../NUSGet.py" line="472"/>
<source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source> <source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source>
<translation>S-a produs o eroare la linia {e.lineno}, coloana {e.colno}. rugăm verificați scriptul și încercați din nou.</translation> <translation>S-a produs o eroare la linia {e.lineno}, coloana {e.colno}. rugăm verificați scriptul și încercați din nou.</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="484"/>
<source>An error occurred while parsing Title IDs!</source> <source>An error occurred while parsing Title IDs!</source>
<translation>A apărut o eroare la procesarea Title ID-urilor!</translation> <translation type="vanished">A apărut o eroare la procesarea Title ID-urilor!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="485"/> <location filename="../../NUSGet.py" line="482"/>
<source>The title at index {script_data.index(title)} does not have a Title ID!</source> <source>The title at index {script_data.index(title)} does not have a Title ID!</source>
<translation>Titlul la poziția {script_data.index(title)} nu are un Title ID!</translation> <translation>Titlul la poziția {script_data.index(title)} nu are un Title ID!</translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="538"/> <location filename="../../NUSGet.py" line="535"/>
<source>Open Directory</source> <source>Open Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../NUSGet.py" line="552"/> <location filename="../../NUSGet.py" line="546"/>
<source>&lt;b&gt;The specified download directory does not exist!&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="549"/>
<source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source> <source>Please make sure the download directory you want to use exists, and that you have permission to access it.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -370,92 +433,7 @@ By default, titles will be downloaded to a folder named &quot;NUSGet Downloads&q
<translation>Setări Generale</translation> <translation>Setări Generale</translation>
</message> </message>
<message> <message>
<location filename="../../qt/ui/MainMenu.ui" line="272"/> <location filename="../../qt/ui/MainMenu.ui" line="425"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Împachetați arhiva instalabilă (WAD/TAD)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="287"/>
<source>File Name</source>
<translation>Nume fișier</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="321"/>
<source>Keep encrypted contents</source>
<translation>Păstrați conținuturile encriptate</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="357"/>
<source>Create decrypted contents (*.app)</source>
<translation>Creați conținuturi decriptate (*.app)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="396"/>
<source>Use local files, if they exist</source>
<translation>Folosiți fișiere locale, dacă există</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="441"/>
<source>Use the Wii U NUS (faster, only effects Wii/vWii)</source>
<translation>Folosiți Wii U NUS (mai rapid, doar pentru Wii/vWii)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="483"/>
<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>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="539"/>
<source>vWii Title Settings</source>
<translation>vWII Setări titlu</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="573"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Re-encriptați titlul folosind cheia comună Wii</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="590"/>
<source>App Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="612"/>
<source>Check for updates on startup</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="636"/>
<source>Use a custom download directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="660"/>
<source>Select...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="740"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="753"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="761"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="650"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="714"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
@ -466,6 +444,90 @@ 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;</source> &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;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../NUSGet.py" line="149"/>
<source>Pack installable archive (WAD/TAD)</source>
<translation>Împachetați arhiva instalabilă (WAD/TAD)</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="251"/>
<source>File Name</source>
<translation>Nume fișier</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="151"/>
<source>Keep encrypted contents</source>
<translation>Păstrați conținuturile encriptate</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="153"/>
<source>Create decrypted contents (*.app)</source>
<translation>Creați conținuturi decriptate (*.app)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="154"/>
<source>Use local files, if they exist</source>
<translation>Folosiți fișiere locale, dacă există</translation>
</message>
<message>
<source>Use the Wii U NUS (faster, only effects Wii/vWii)</source>
<translation type="vanished">Folosiți Wii U NUS (mai rapid, doar pentru Wii/vWii)</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="157"/>
<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>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="324"/>
<source>vWii Title Settings</source>
<translation>vWII Setări titlu</translation>
</message>
<message>
<location filename="../../NUSGet.py" line="158"/>
<source>Re-encrypt title using the Wii Common Key</source>
<translation>Re-encriptați titlul folosind cheia comună Wii</translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="343"/>
<source>App Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="159"/>
<source>Check for updates on startup</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../NUSGet.py" line="160"/>
<source>Use a custom download directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="371"/>
<source>Select...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="451"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="464"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="472"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../qt/ui/MainMenu.ui" line="361"/>
<source>Output Path</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../../modules/core.py" line="60"/> <location filename="../../modules/core.py" line="60"/>
<source> <source>
@ -476,7 +538,7 @@ Could not check for updates.</source>
Nu s-a putut verifica dacă există actualizări.</translation> Nu s-a putut verifica dacă există actualizări.</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="68"/> <location filename="../../modules/core.py" line="70"/>
<source> <source>
There&apos;s a newer version of NUSGet available!</source> There&apos;s a newer version of NUSGet available!</source>
@ -485,7 +547,7 @@ There&apos;s a newer version of NUSGet available!</source>
O nouă versiune de NUSGet este valabilă!</translation> O nouă versiune de NUSGet este valabilă!</translation>
</message> </message>
<message> <message>
<location filename="../../modules/core.py" line="70"/> <location filename="../../modules/core.py" line="72"/>
<source> <source>
You&apos;re running the latest release of NUSGet.</source> You&apos;re running the latest release of NUSGet.</source>