mirror of
https://github.com/NinjaCheetah/NUSGet.git
synced 2026-03-05 10:05:31 -05:00
Compare commits
27 Commits
v1.3.0
...
d63acba656
| Author | SHA1 | Date | |
|---|---|---|---|
|
d63acba656
|
|||
|
bcb86bc4b0
|
|||
|
|
1e0fda7407 | ||
|
0f96dc75a2
|
|||
|
e96d8932d0
|
|||
|
dcb1cdebca
|
|||
|
220fcc5e91
|
|||
|
ab28a7bf1a
|
|||
|
33bea6a560
|
|||
|
0bb87bf75f
|
|||
|
d1570711ac
|
|||
|
449a680d32
|
|||
|
|
35989d038a | ||
| bf313eedf3 | |||
|
92bfeb2374
|
|||
|
86da2d62b0
|
|||
|
1e88c22f7c
|
|||
|
c4ed6e6ee6
|
|||
|
b337be8c08
|
|||
|
76911db12d
|
|||
|
a361a45314
|
|||
|
724c7e554b
|
|||
|
469cd96392
|
|||
|
398654609b
|
|||
|
78f98b2c73
|
|||
|
5872ca4676
|
|||
|
147e72c8c9
|
83
NUSGet.py
83
NUSGet.py
@@ -18,10 +18,7 @@
|
||||
# nuitka-project: --include-data-dir={MAIN_DIRECTORY}/data=data
|
||||
# nuitka-project: --include-data-dir={MAIN_DIRECTORY}/resources=resources
|
||||
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
import pathlib
|
||||
import platform
|
||||
import webbrowser
|
||||
from importlib.metadata import version
|
||||
@@ -38,7 +35,7 @@ from modules.download_batch import run_nus_download_batch
|
||||
from modules.download_wii import run_nus_download_wii
|
||||
from modules.download_dsi import run_nus_download_dsi
|
||||
|
||||
nusget_version = "1.3.0"
|
||||
nusget_version = "1.3.2"
|
||||
|
||||
regions = {"World": ["41"], "USA/NTSC": ["45"], "Europe/PAL": ["50"], "Japan": ["4A"], "Korea": ["4B"], "China": ["43"],
|
||||
"Australia/NZ": ["55"]}
|
||||
@@ -84,6 +81,12 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
self.ui.script_btn.clicked.connect(self.script_btn_pressed)
|
||||
self.ui.pack_archive_chkbox.toggled.connect(
|
||||
lambda: self.ui.archive_file_entry.setEnabled(self.ui.pack_archive_chkbox.isChecked()))
|
||||
try:
|
||||
self.ui.auto_update_chkbox.setChecked(config_data["auto_update"])
|
||||
except KeyError:
|
||||
update_setting(config_data, "auto_update", self.ui.auto_update_chkbox.isChecked())
|
||||
self.ui.auto_update_chkbox.toggled.connect(
|
||||
lambda: update_setting(config_data, "auto_update", self.ui.auto_update_chkbox.isChecked()))
|
||||
self.ui.tid_entry.textChanged.connect(self.tid_updated)
|
||||
# Basic intro text set to automatically show when the app loads. This may be changed in the future.
|
||||
libwiipy_version = "v" + version("libWiiPy")
|
||||
@@ -133,11 +136,19 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
connect_label_to_checkbox(self.ui.use_wiiu_nus_chkbox_lbl, self.ui.use_wiiu_nus_chkbox)
|
||||
connect_label_to_checkbox(self.ui.patch_ios_chkbox_lbl, self.ui.patch_ios_chkbox)
|
||||
connect_label_to_checkbox(self.ui.pack_vwii_mode_chkbox_lbl, self.ui.pack_vwii_mode_chkbox)
|
||||
# Do a quick check to see if there's a newer release available, and inform the user if there is.
|
||||
worker = Worker(check_nusget_updates, app, nusget_version)
|
||||
worker.signals.result.connect(self.prompt_for_update)
|
||||
worker.signals.progress.connect(self.update_log_text)
|
||||
self.threadpool.start(worker)
|
||||
connect_label_to_checkbox(self.ui.auto_update_chkbox_lbl, self.ui.auto_update_chkbox)
|
||||
try:
|
||||
auto_update = config_data["auto_update"]
|
||||
except KeyError:
|
||||
auto_update = True
|
||||
config_data["auto_update"] = True
|
||||
save_config(config_data)
|
||||
if auto_update:
|
||||
# Do a quick check to see if there's a newer release available if auto-updates are enabled.
|
||||
worker = Worker(check_nusget_updates, app, nusget_version)
|
||||
worker.signals.result.connect(self.prompt_for_update)
|
||||
worker.signals.progress.connect(self.update_log_text)
|
||||
self.threadpool.start(worker)
|
||||
|
||||
def title_double_clicked(self, index):
|
||||
if self.ui.download_btn.isEnabled() is True:
|
||||
@@ -147,7 +158,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
title = source_index.internalPointer().metadata
|
||||
if title is not None:
|
||||
self.ui.console_select_dropdown.setCurrentIndex(self.ui.platform_tabs.currentIndex())
|
||||
selected_title = TitleData(title.tid, title.name, title.archive_name, title.version, title.ticket,
|
||||
selected_title = TitleData(title.tid, title.name, title.version, title.ticket,
|
||||
title.region, title.category, title.danger)
|
||||
self.load_title_data(selected_title)
|
||||
|
||||
@@ -212,23 +223,22 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
# Load the TID and version into the entry boxes.
|
||||
self.ui.tid_entry.setText(tid)
|
||||
self.ui.version_entry.setText(str(selected_title.version))
|
||||
# Load the WAD name, assuming it exists. This shouldn't ever be able to fail as the database has a WAD name
|
||||
# for every single title, regardless of whether it can be packed or not.
|
||||
archive_name = selected_title.archive_name
|
||||
if selected_title.category != "System" and selected_title.category != "IOS":
|
||||
# Create the WAD name by deriving it from the title name (basically just replace " " with "-").
|
||||
archive_name = selected_title.name.replace(" ", "-")
|
||||
if selected_title.category not in ["System", "IOS"]:
|
||||
archive_name += f"-{str(bytes.fromhex(tid).decode())[-4:]}"
|
||||
archive_name += f"-v{selected_title.version}"
|
||||
if selected_title.region != "World":
|
||||
archive_name += f"-{selected_title.region.split('/')[0]}"
|
||||
if self.ui.console_select_dropdown.currentText() == "DSi":
|
||||
archive_name += ".tad"
|
||||
elif self.ui.console_select_dropdown.currentText() == "vWii":
|
||||
if selected_title.category.find("System") != -1 or selected_title.category == "IOS":
|
||||
archive_name += "-vWii"
|
||||
archive_name += ".wad"
|
||||
else:
|
||||
if selected_title.category.find("System") != -1 or selected_title.category == "IOS":
|
||||
archive_name += "-Wii"
|
||||
if self.ui.console_select_dropdown.currentText() == "vWii":
|
||||
if selected_title.category.find("System") != -1 or selected_title.category == "IOS":
|
||||
archive_name += "-vWii"
|
||||
else:
|
||||
if selected_title.category.find("System") != -1 or selected_title.category == "IOS":
|
||||
archive_name += "-Wii"
|
||||
archive_name += ".wad"
|
||||
self.ui.archive_file_entry.setText(archive_name)
|
||||
danger_text = selected_title.danger
|
||||
@@ -449,7 +459,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
for r in regions:
|
||||
if f"{t['TID'][:-2]}{regions[r][0]}" == tid:
|
||||
try:
|
||||
archive_name = t["Archive Name"]
|
||||
archive_name = t["Name"].replace(" ", "-")
|
||||
break
|
||||
except KeyError:
|
||||
archive_name = ""
|
||||
@@ -457,7 +467,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
else:
|
||||
if t["TID"] == tid:
|
||||
try:
|
||||
archive_name = t["Archive Name"]
|
||||
archive_name = t["Name"].replace(" ", "-")
|
||||
break
|
||||
except KeyError:
|
||||
archive_name = ""
|
||||
@@ -498,15 +508,34 @@ if __name__ == "__main__":
|
||||
if not out_folder.is_dir():
|
||||
out_folder.mkdir()
|
||||
|
||||
# Load the config path and then the configuration data, if it exists. If not, then we should initialize it and write
|
||||
# it out.
|
||||
config_file = get_config_file()
|
||||
if config_file.exists():
|
||||
config_data = json.load(open(config_file))
|
||||
else:
|
||||
config_data = {"auto_update": True}
|
||||
save_config(config_data)
|
||||
|
||||
# Load the system plugins directory on Linux for system styles, if it exists. Try using Breeze if available, because
|
||||
# it looks nice, but fallback on kvantum if it isn't, since kvantum is likely to exist. If all else fails, fusion.
|
||||
if platform.system() == "Linux":
|
||||
if os.path.isdir("/usr/lib/qt6/plugins"):
|
||||
app.addLibraryPath("/usr/lib/qt6/plugins")
|
||||
if "Breeze" in QStyleFactory.keys():
|
||||
app.setStyle("Breeze")
|
||||
elif "kvantum" in QStyleFactory.keys():
|
||||
app.setStyle("kvantum")
|
||||
import subprocess
|
||||
try:
|
||||
# This CANNOT be the best way to get the system Qt version, but it's what I came up with for now.
|
||||
result = subprocess.run(['/usr/lib/qt6/bin/qtdiag'], stdout=subprocess.PIPE)
|
||||
result_str = result.stdout.decode("utf-8").split("\n")[0]
|
||||
sys_qt_ver = result_str.split(" ")[1].split(".")
|
||||
pyside_qt_ver = version("PySide6").split(".")
|
||||
if sys_qt_ver[0:2] == pyside_qt_ver[0:2]:
|
||||
app.addLibraryPath("/usr/lib/qt6/plugins")
|
||||
if "Breeze" in QStyleFactory.keys():
|
||||
app.setStyle("Breeze")
|
||||
elif "kvantum" in QStyleFactory.keys():
|
||||
app.setStyle("kvantum")
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
# Load qtbase translations, and then apps-specific translations.
|
||||
path = QLibraryInfo.path(QLibraryInfo.LibraryPath.TranslationsPath)
|
||||
|
||||
30
README.md
30
README.md
@@ -1,10 +1,17 @@
|
||||
# NUSGet
|
||||
A modern and supercharged NUS downloader built with Python and Qt6. Powered by libWiiPy and libTWLPy.
|
||||
|
||||
[](https://github.com/NinjaCheetah/NUSGet/actions/workflows/python-build.yml)
|
||||
|
||||
The name is a play on NuGet, the .NET package manager. Thank you [@Janni9009](https://github.com/Janni9009) for the name idea!
|
||||
# NUSGet After Dark
|
||||
A modern and supercharged NUS downloader built with Python and Qt6. Powered by libWiiPy and libTWLPy. Fork with features not acceptable for prod.
|
||||
<div align="center">
|
||||
<img src="https://github.com/user-attachments/assets/156eb949-93aa-4453-b7a0-99b784ec0c8c" alt="The icon for NUSGet" width=256 height=256>
|
||||
<h1>NUSGet</h1>
|
||||
<p>A modern and supercharged NUS downloader built with Python and Qt6.</p>
|
||||
<p>Powered by libWiiPy and libTWLPy.</p>
|
||||
<a href="https://github.com/NinjaCheetah/NUSGet/actions/workflows/python-build.yml">
|
||||
<img src="https://github.com/NinjaCheetah/NUSGet/actions/workflows/python-build.yml/badge.svg">
|
||||
</a>
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
## Features
|
||||
NUSGet allows you to download any content from the Nintendo Update Servers. Free content (content with a Ticket freely available on the servers) can be decrypted or packed directly into an installable archive (WAD/TAD).
|
||||
|
||||
@@ -12,11 +19,12 @@ NUSGet also offers the ability to create vWii WADs that can be installed from wi
|
||||
|
||||
The following features are available for all supported consoles:
|
||||
- Downloading encrypted contents (files like `00000000`, `00000001`, etc.) directly from the update servers for any title.
|
||||
- Creating decrypted contents (*.app files) from the encrypted contents on the servers. Only supported for free titles.
|
||||
- Creating decrypted contents (*.app files) from the encrypted contents on the servers.
|
||||
- Scripting support, allowing you to perform batch downloads of any titles for the Wii, vWii, or DSi in one script. (See `example-script.json` for an example of the scripting format.)
|
||||
|
||||
**For Wii and vWii titles only:**
|
||||
- "Pack installable archive (WAD/TAD)": Pack the encrypted contents, TMD, and Ticket into a WAD file that can be installed on a Wii or in Dolphin Emulator. Only supported for free titles.
|
||||
- "Pack installable archive (WAD/TAD)": Pack the encrypted contents, TMD, and Ticket into a WAD file that can be installed on a Wii or in Dolphin Emulator.
|
||||
- Forging Tickets for titles without a common Ticket available on the NUS by using the Title Key algorithm to derive the key needed to decrypt the title.
|
||||
|
||||
**For vWii titles only:**
|
||||
- "Re-encrypt title using the Wii Common Key": Re-encrypt the Title Key in a vWii title's Ticket before packing the WAD, so that the WAD can be installed via a normal WAD manager on the vWii, and can be extracted with legacy tools. **This also creates WADs that can be installed directly in Dolphin, allowing for running the vWii System Menu in Dolphin without a vWii NAND dump!**
|
||||
@@ -73,7 +81,7 @@ A huge thanks to all the wonderful translators who've helped make NUSGet availab
|
||||
If your language isn't present or is out of date, and you'd like to contribute, you can check out [TRANSLATING.md](https://github.com/NinjaCheetah/NUSGet/blob/main/TRANSLATING.md) for directions on how to translate NUSGet.
|
||||
|
||||
|
||||
## Why this and not NUSD?
|
||||
NUS Downloader (Nintendo Update Server Downloader), is an old tool for downloading titles from the Nintendo Update Servers for the Wii and DSi. Originally released in 2009, and effectively last updated in 2011, it stills works today, however it definitely shows its age, and is in need of a refresh. One of the major shortcomings of NUSD is that it only supports Windows, as most of the tools for the Wii from that era are written in C# and use the .NET Framework, especially since they tend to rely on the C# library libWiiSharp. NUSD also has far more limited support for DSi titles, and no support whatsoever for vWii titles.
|
||||
## Additional Thanks
|
||||
The name is a play on NuGet, the .NET package manager. Thank you [@Janni9009](https://github.com/Janni9009) for the name idea!
|
||||
|
||||
With my introduction of [libWiiPy](https://github.com/NinjaCheetah/libWiiPy), there's now a work-in-progress Python library designed to eventually have feature parity with libWiiSharp. At this point in time, the library is featured enough that every piece of libWiiSharp that NUSD relied on is now available in libWiiPy, so I decided to put that to use and create a replacement for it. NUSGet offers nearly all the same features as NUSD (currently there is no support for the DSi servers or for scripting), but is built on top of a modern library with a modern graphical framework, that being Qt6. A major benefit of this rewrite is that its fully cross-platform, and is natively compiled for Windows, Linux, and macOS.
|
||||
Thanks to all those who contributed to libWiiSharp and NUSD, without which this project would not exist.
|
||||
|
||||
@@ -6,11 +6,10 @@
|
||||
"Versions": {
|
||||
"World": [256, 512]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Nintendo-DS-Cartridge-Whitelist"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Launcher (System Menu)",
|
||||
"Name": "Launcher",
|
||||
"TID": "00030017484E41XX",
|
||||
"Versions": {
|
||||
"USA/NTSC": [512, 768, 1024, 1280, 1536, 1792],
|
||||
@@ -21,7 +20,6 @@
|
||||
"Australia/NZ": [512, 768, 1024, 1280, 1536, 1792]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Launcher",
|
||||
"Danger": "The Launcher (DSi Menu) is a critical part of the DSi's operation, and should not be modified unless you have Unlaunch installed."
|
||||
},
|
||||
{
|
||||
@@ -35,8 +33,7 @@
|
||||
"China": [4, 5, 6, 7, 8, 9],
|
||||
"Australia/NZ": [3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Version-Data"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "WiFi Firmware",
|
||||
@@ -45,7 +42,6 @@
|
||||
"World": [256, 512]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "WiFi-Firmware",
|
||||
"Danger": "The WiFi Firmware is the firmware that runs on the DSi's WiFi chip, and should not be modified. Your console WILL be bricked if this title is damaged or missing."
|
||||
}
|
||||
],
|
||||
@@ -56,8 +52,7 @@
|
||||
"Versions": {
|
||||
"World": [256]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "DS-Download-Play"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Flipnote Studio",
|
||||
@@ -67,8 +62,7 @@
|
||||
"Europe/PAL": [0],
|
||||
"Japan": [512]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Flipnote-Studio"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Nintendo 3DS Transfer Tool",
|
||||
@@ -80,8 +74,7 @@
|
||||
"Korea": [256],
|
||||
"Australia/NZ": [512, 768]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Nintendo-3DS-Transfer-Tool"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "Nintendo DSi Browser",
|
||||
@@ -91,8 +84,7 @@
|
||||
"Europe/PAL": [768],
|
||||
"Japan": [768]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Nintendo-DSi-Browser"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Nintendo DSi Camera",
|
||||
@@ -103,8 +95,7 @@
|
||||
"Japan": [256, 768, 1024],
|
||||
"Australia/NZ": [768, 1024]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Nintendo-DSi-Camera"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Nintendo DSi Shop",
|
||||
@@ -117,8 +108,7 @@
|
||||
"China": [768],
|
||||
"Australia/NZ": [1536, 1792, 2048, 2304, 2560, 2816, 3072]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Nintendo-DSi-Shop"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Nintendo DSi Sound",
|
||||
@@ -129,8 +119,7 @@
|
||||
"Japan": [256, 512],
|
||||
"Australia/NZ": [256, 512]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Nintendo-DSi-Sound"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Nintendo Zone",
|
||||
@@ -141,8 +130,7 @@
|
||||
"Japan": [512, 768],
|
||||
"Australia/NZ": [512, 768]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Nintendo-DSi-Sound"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "System Settings",
|
||||
@@ -155,8 +143,7 @@
|
||||
"China": [768],
|
||||
"Australia/NZ": [512, 768]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "System-Settings"
|
||||
"Ticket": true
|
||||
}
|
||||
],
|
||||
"DSiWare": [
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
"World": [6, 7]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "BC-NAND",
|
||||
"Danger": "BC-NAND is required for the Wii U to boot Wii titles. DO NOT modify it, or your Wii U will no longer be able to enter Wii mode."
|
||||
},
|
||||
{
|
||||
@@ -17,7 +16,6 @@
|
||||
"World": [1]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "BC-WFS",
|
||||
"Danger": "BC-WFS is required for the Wii U to be able to boot Dragon Quest X Online. Do NOT modify it, or your Wii U may experience issues with Wii mode."
|
||||
},
|
||||
{
|
||||
@@ -29,7 +27,6 @@
|
||||
"Japan": [512, 544, 608]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "System-Menu",
|
||||
"Danger": "The System Menu is a critical part of the vWii's operation, and should not be modified. If you intend to modify it, you should have Preloader installed, or else you may not be able to use the vWii.",
|
||||
"Public Versions": {
|
||||
"512": "4.3J - Wii U v1.0.0J",
|
||||
@@ -51,8 +48,7 @@
|
||||
"Versions": {
|
||||
"World": [6]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Mii-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Shopping Channel",
|
||||
@@ -60,8 +56,7 @@
|
||||
"Versions": {
|
||||
"World": [21]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Shopping-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Return to Wii U Menu",
|
||||
@@ -70,7 +65,6 @@
|
||||
"World": [0]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Return-to-Wii-U-Menu",
|
||||
"Danger": "\"Return to Wii U Menu\" is the channel launched from the vWii menu to reboot your console back into Wii U mode. While it generally should not be modified, modifying or removing it will not prevent the vWii from working."
|
||||
},
|
||||
{
|
||||
@@ -81,8 +75,7 @@
|
||||
"Europe/PAL": [0, 1, 2, 3, 4, 5],
|
||||
"Japan": [0, 1, 2, 3, 5]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Wii-Electronic-Manual"
|
||||
"Ticket": true
|
||||
}
|
||||
],
|
||||
"Hidden Channels": [
|
||||
@@ -95,8 +88,7 @@
|
||||
"Japan": [2]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Region-Select",
|
||||
"Danger": "\"Region Select\" is a hidden channel used during the Wii's initial setup. If this title is damaged or missing, you will not be able to set up your Wii again after a factory reset."
|
||||
"Danger": "\"Region Select\" is a hidden channel used by WiiConnect24 services such as Everybody Votes Channel, for the user regions."
|
||||
},
|
||||
{
|
||||
"Name": "Wii System Transfer (WagonCompat)",
|
||||
@@ -107,7 +99,6 @@
|
||||
"Japan": [29, 31]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Wii-System-Transfer-WC",
|
||||
"Danger": "Note: It is currently unknown how this channel works, but it is involved somehow in the Wii to vWii transfer process. It is recommended to not modify it. Also note that this is separate from the normal, non-hidden channel \"Wii System Transfer Tool\" that works alongside \"Wii U Transfer Tool\" on a source Wii."
|
||||
}
|
||||
],
|
||||
@@ -120,8 +111,7 @@
|
||||
"Europe/PAL": [516],
|
||||
"Japan": [516]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Wii-System-Transfer-Tool-WNP"
|
||||
"Ticket": false
|
||||
}
|
||||
],
|
||||
"IOS": [
|
||||
@@ -131,8 +121,7 @@
|
||||
"Versions": {
|
||||
"World": [1290]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS9"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 12",
|
||||
@@ -140,8 +129,7 @@
|
||||
"Versions": {
|
||||
"World": [782]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS12"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 13",
|
||||
@@ -149,8 +137,7 @@
|
||||
"Versions": {
|
||||
"World": [1288]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS13"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 14",
|
||||
@@ -158,8 +145,7 @@
|
||||
"Versions": {
|
||||
"World": [1288]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS14"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 15",
|
||||
@@ -167,8 +153,7 @@
|
||||
"Versions": {
|
||||
"World": [1288]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS15"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 17",
|
||||
@@ -176,8 +161,7 @@
|
||||
"Versions": {
|
||||
"World": [1288]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS17"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 21",
|
||||
@@ -185,8 +169,7 @@
|
||||
"Versions": {
|
||||
"World": [1295]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS21"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 22",
|
||||
@@ -194,8 +177,7 @@
|
||||
"Versions": {
|
||||
"World": [1550]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS22"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 28",
|
||||
@@ -203,8 +185,7 @@
|
||||
"Versions": {
|
||||
"World": [2063]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS28"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 31",
|
||||
@@ -212,8 +193,7 @@
|
||||
"Versions": {
|
||||
"World": [3864]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS31"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 33",
|
||||
@@ -221,8 +201,7 @@
|
||||
"Versions": {
|
||||
"World": [3864]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS33"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 34",
|
||||
@@ -230,8 +209,7 @@
|
||||
"Versions": {
|
||||
"World": [3864]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS34"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 35",
|
||||
@@ -239,8 +217,7 @@
|
||||
"Versions": {
|
||||
"World": [3864]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS35"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 36",
|
||||
@@ -248,8 +225,7 @@
|
||||
"Versions": {
|
||||
"World": [3864]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS36"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 37",
|
||||
@@ -257,8 +233,7 @@
|
||||
"Versions": {
|
||||
"World": [5919]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS37"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 38",
|
||||
@@ -266,8 +241,7 @@
|
||||
"Versions": {
|
||||
"World": [4380]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS38"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 41",
|
||||
@@ -275,8 +249,7 @@
|
||||
"Versions": {
|
||||
"World": [3863]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS41"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 43",
|
||||
@@ -284,8 +257,7 @@
|
||||
"Versions": {
|
||||
"World": [3863]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS43"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 45",
|
||||
@@ -293,8 +265,7 @@
|
||||
"Versions": {
|
||||
"World": [3863]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS45"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 46",
|
||||
@@ -302,8 +273,7 @@
|
||||
"Versions": {
|
||||
"World": [3863]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS46"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 48",
|
||||
@@ -311,8 +281,7 @@
|
||||
"Versions": {
|
||||
"World": [4380]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS48"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 53",
|
||||
@@ -320,8 +289,7 @@
|
||||
"Versions": {
|
||||
"World": [5919]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS53"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 55",
|
||||
@@ -329,8 +297,7 @@
|
||||
"Versions": {
|
||||
"World": [5919]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS55"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 56",
|
||||
@@ -338,8 +305,7 @@
|
||||
"Versions": {
|
||||
"World": [5918]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS56"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 57",
|
||||
@@ -347,8 +313,7 @@
|
||||
"Versions": {
|
||||
"World": [6175]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS57"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 58",
|
||||
@@ -356,8 +321,7 @@
|
||||
"Versions": {
|
||||
"World": [6432]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS58"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 59",
|
||||
@@ -365,8 +329,7 @@
|
||||
"Versions": {
|
||||
"World": [7201, 8737, 9249]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS59"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 62",
|
||||
@@ -374,8 +337,7 @@
|
||||
"Versions": {
|
||||
"World": [6430, 6686, 6942]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS62"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 80",
|
||||
@@ -383,8 +345,7 @@
|
||||
"Versions": {
|
||||
"World": [7200]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS80"
|
||||
"Ticket": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
"World": [2, 4, 5, 6]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "BC",
|
||||
"Danger": "BC is required for the Wii's backwards compatibility with the GameCube. GameCube games will not run properly if BC is damaged or missing."
|
||||
},
|
||||
{
|
||||
@@ -17,7 +16,6 @@
|
||||
"World": [4]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "boot2",
|
||||
"Danger": "boot2 is a critical part of the Wii's boot process, and should not be modified. Most updated Wiis will already be running boot2v4, which is the only version of boot2 available on the NUS."
|
||||
},
|
||||
{
|
||||
@@ -27,7 +25,6 @@
|
||||
"World": [4, 5, 8, 9, 10]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "MIOS",
|
||||
"Danger": "MIOS is required for the Wii's backwards compatibility with the GameCube. GameCube games will not run properly if MIOS is damaged or missing."
|
||||
},
|
||||
{
|
||||
@@ -80,7 +77,6 @@
|
||||
"518": "4.3K"
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "System-Menu",
|
||||
"Danger": "The System Menu is a critical part of the Wii's operation, and should not be modified without proper brick prevention in place. You should have BootMii installed as boot2 if possible, and if not, Priiloader installed before making changes to the System Menu."
|
||||
}
|
||||
],
|
||||
@@ -94,8 +90,7 @@
|
||||
"Europe/PAL": [6, 7],
|
||||
"Japan": [6, 7]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Forecast-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Mii Channel",
|
||||
@@ -103,8 +98,7 @@
|
||||
"Versions": {
|
||||
"World": [2, 3, 4, 5, 6]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Mii-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "News Channel",
|
||||
@@ -115,8 +109,7 @@
|
||||
"Europe/PAL": [6, 7],
|
||||
"Japan": [6, 7]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "News-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Photo Channel",
|
||||
@@ -124,8 +117,7 @@
|
||||
"Versions": {
|
||||
"World": [1, 2]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Photo-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Photo Channel 1.1",
|
||||
@@ -134,8 +126,7 @@
|
||||
"World": [1, 2, 3],
|
||||
"Korea": [3]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Photo-Channel-1.1"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Shopping Channel",
|
||||
@@ -144,8 +135,7 @@
|
||||
"World": [3, 4, 5, 6, 7, 8, 10, 13, 16, 17, 18, 19, 20, 21],
|
||||
"Korea": [3, 4, 5, 6, 7, 8, 10, 13, 14, 16, 17, 18, 19, 20, 21]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Shopping-Channel"
|
||||
"Ticket": true
|
||||
}
|
||||
],
|
||||
"Hidden Channels": [
|
||||
@@ -159,7 +149,6 @@
|
||||
"Korea": [1, 2, 3]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "EULA",
|
||||
"Danger": "\"EULA\" is a hidden channel used to display the End User License Agreement that must be accepted to connect to WiiConnect24. Online services may not work correctly if this channel is damaged or missing."
|
||||
},
|
||||
{
|
||||
@@ -172,8 +161,7 @@
|
||||
"Korea": [2]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Region-Select",
|
||||
"Danger": "\"Region Select\" is a hidden channel used during the Wii's initial setup. If this title is damaged or missing, you will not be able to set up your Wii again after a factory reset. This title will need to be reinstalled to fix your console."
|
||||
"Danger": "\"Region Select\" is a hidden channel used by WiiConnect24 services such as Everybody Votes Channel, for the user regions."
|
||||
},
|
||||
{
|
||||
"Name": "Set Personal Data Channel",
|
||||
@@ -181,8 +169,7 @@
|
||||
"Versions": {
|
||||
"Japan": [0, 1, 2]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Set-Personal-Data-Channel"
|
||||
"Ticket": true
|
||||
}
|
||||
],
|
||||
"Downloadable Channels": [
|
||||
@@ -192,8 +179,7 @@
|
||||
"Versions": {
|
||||
"USA/NTSC": [1280]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Amazon-Instant-Video"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "BBC iPlayer Channel",
|
||||
@@ -201,8 +187,7 @@
|
||||
"Versions": {
|
||||
"Europe/PAL": [768]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "BBC-iPlayer-Channel"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "Check Mii Out Channel",
|
||||
@@ -212,8 +197,7 @@
|
||||
"Europe/PAL": [1, 3, 512],
|
||||
"Japan": [1, 3, 512]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Check-Mii-Out-Channel"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "Demae Channel",
|
||||
@@ -221,8 +205,7 @@
|
||||
"Versions": {
|
||||
"Japan": [512]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Demae-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Digicam Print Channel",
|
||||
@@ -230,19 +213,17 @@
|
||||
"Versions": {
|
||||
"Japan": [1024]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Digicam-Print-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Everyone Votes Channel",
|
||||
"Name": "Everybody Votes Channel",
|
||||
"TID": "0001000148414AXX",
|
||||
"Versions": {
|
||||
"USA/NTSC": [1, 2, 3],
|
||||
"Europe/PAL": [1, 2, 3],
|
||||
"Japan": [1, 2, 3]
|
||||
"USA/NTSC": [1, 2, 3, 512],
|
||||
"Europe/PAL": [1, 2, 3, 512],
|
||||
"Japan": [1, 2, 3, 512]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Everyone-Votes-Channel"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "Hulu Plus",
|
||||
@@ -251,8 +232,7 @@
|
||||
"USA/NTSC": [1283],
|
||||
"Japan": [1024]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Hulu-Plus"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "Internet Channel",
|
||||
@@ -262,8 +242,7 @@
|
||||
"Europe/PAL": [1, 3, 257, 512, 1024],
|
||||
"Japan": [1, 3, 257, 512, 1024]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Internet-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Jam With The Band Live Channel",
|
||||
@@ -272,8 +251,7 @@
|
||||
"Europe/PAL": [2],
|
||||
"Japan": [2]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Jam-With-The-Band-Live-Channel"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "Kirby TV Channel",
|
||||
@@ -281,8 +259,7 @@
|
||||
"Versions": {
|
||||
"Europe/PAL": [257]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Kirby-TV-Channel"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "Metroid Prime 3 Preview",
|
||||
@@ -291,8 +268,7 @@
|
||||
"Europe/PAL": [1, 2],
|
||||
"Japan": [1, 2]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Metroid-Prime-3-Preview"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "Netflix Channel",
|
||||
@@ -301,8 +277,7 @@
|
||||
"USA/NTSC": [2049],
|
||||
"Europe/PAL": [2049]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Netflix-Channel"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "Nintendo Channel",
|
||||
@@ -312,8 +287,7 @@
|
||||
"Europe/PAL": [1792],
|
||||
"Japan": [1792]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Nintendo-Channel"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "Photo Channel 1.0 Restore Program",
|
||||
@@ -321,8 +295,7 @@
|
||||
"Versions": {
|
||||
"Japan": [0]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Photo-Channel-1.0-Restore-Program"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "The Legend of Zelda: Skyward Sword Save Data Update Channel",
|
||||
@@ -332,8 +305,7 @@
|
||||
"Europe/PAL": [0],
|
||||
"Japan": [1]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Skyward-Sword-Save-Data-Update-Channel"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "Today and Tomorrow Channel",
|
||||
@@ -342,17 +314,15 @@
|
||||
"Europe/PAL": [1],
|
||||
"Japan": [1]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Today-and-Tomorrow-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "TV Friend Channel / G-Guide for Wii",
|
||||
"Name": "TV Friend Channel/G-Guide for Wii",
|
||||
"TID": "0001000148424EXX",
|
||||
"Versions": {
|
||||
"Japan": [1]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "TV-Friend-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "USB Memory Repair Program",
|
||||
@@ -360,17 +330,15 @@
|
||||
"Versions": {
|
||||
"Japan": [12]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "USB-Repair-Program"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "Wii no Ma Channel",
|
||||
"Name": "Wii Room",
|
||||
"TID": "00010001484349XX",
|
||||
"Versions": {
|
||||
"Japan": [0]
|
||||
"Japan": [0, 512, 770, 1025]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Wii-no-Ma-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Wii Speak Channel",
|
||||
@@ -381,8 +349,7 @@
|
||||
"Japan": [1, 256, 512],
|
||||
"Korea": [512]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "Wii-Speak-Channel"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "Wii U Transfer Tool",
|
||||
@@ -392,8 +359,7 @@
|
||||
"Europe/PAL": [516],
|
||||
"Japan": [516]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "Wii-U-Transfer-Tool"
|
||||
"Ticket": false
|
||||
},
|
||||
{
|
||||
"Name": "YouTube",
|
||||
@@ -402,8 +368,7 @@
|
||||
"USA/NTSC": [1536],
|
||||
"Japan": [768]
|
||||
},
|
||||
"Ticket": false,
|
||||
"Archive Name": "YouTube"
|
||||
"Ticket": false
|
||||
}
|
||||
],
|
||||
"IOS": [
|
||||
@@ -414,7 +379,6 @@
|
||||
"World": [65280]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS4",
|
||||
"Danger": "This IOS is a stub, and no longer offers any functionality. It cannot be used to run any code."
|
||||
},
|
||||
{
|
||||
@@ -423,8 +387,7 @@
|
||||
"Versions": {
|
||||
"World": [520, 521, 778, 1034]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS9"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 10",
|
||||
@@ -432,8 +395,7 @@
|
||||
"Versions": {
|
||||
"World": [768]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS10"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 11",
|
||||
@@ -442,7 +404,6 @@
|
||||
"World": [10, 256]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS11",
|
||||
"Danger": "Version 256 of IOS 11 is a stub, and no longer offers any functionality. It cannot be used to run any code. If you're using System Menu 2.0-2.1, DO NOT install version 256, as the System Menu relies on IOS 11."
|
||||
},
|
||||
{
|
||||
@@ -451,8 +412,7 @@
|
||||
"Versions": {
|
||||
"World": [6, 11, 12, 269, 525, 526]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS12"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 13",
|
||||
@@ -460,8 +420,7 @@
|
||||
"Versions": {
|
||||
"World": [10, 15, 16, 273, 1031, 1032]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS13"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 14",
|
||||
@@ -469,8 +428,7 @@
|
||||
"Versions": {
|
||||
"World": [262, 263, 520, 1031, 1032]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS14"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 15",
|
||||
@@ -478,8 +436,7 @@
|
||||
"Versions": {
|
||||
"World": [257, 258, 259, 260, 265, 266, 523, 1031, 1032]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS15"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 16",
|
||||
@@ -488,7 +445,6 @@
|
||||
"World": [512]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS16",
|
||||
"Danger": "This IOS is a stub, and no longer offers any functionality. It cannot be used to run any code."
|
||||
},
|
||||
{
|
||||
@@ -497,8 +453,7 @@
|
||||
"Versions": {
|
||||
"World": [512, 517, 518, 775, 1031, 1032]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS17"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 20",
|
||||
@@ -507,7 +462,6 @@
|
||||
"World": [12, 256]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS20",
|
||||
"Danger": "Version 256 of IOS 20 is a stub, and no longer offers any functionality. It cannot be used to run any code. If you're using System Menu 2.2, DO NOT install version 256, as the System Menu relies on IOS 20."
|
||||
},
|
||||
{
|
||||
@@ -516,8 +470,7 @@
|
||||
"Versions": {
|
||||
"World": [514, 515, 516, 517, 522, 525, 782, 1038, 1039]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS21"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 22",
|
||||
@@ -525,8 +478,7 @@
|
||||
"Versions": {
|
||||
"World": [777, 780, 1037, 1293, 1294]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS22"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 28",
|
||||
@@ -534,8 +486,7 @@
|
||||
"Versions": {
|
||||
"World": [1292, 1293, 1550, 1806, 1807]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS28"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 30",
|
||||
@@ -544,7 +495,6 @@
|
||||
"World": [1037, 1039, 1040, 2576, 2816]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS30",
|
||||
"Danger": "Version 2816 of IOS 30 is a stub, and no longer offers any functionality. It cannot be used to run any code. If you're using System Menu 3.0-3.3, DO NOT install version 2816, as the System Menu relies on IOS 30."
|
||||
},
|
||||
{
|
||||
@@ -553,8 +503,7 @@
|
||||
"Versions": {
|
||||
"World": [1037, 1039, 1040, 2576, 3088, 3092, 3349, 3607, 3608]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS31"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 33",
|
||||
@@ -562,8 +511,7 @@
|
||||
"Versions": {
|
||||
"World": [1040, 2832, 2834, 3091, 3607, 3608]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS33"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 34",
|
||||
@@ -571,8 +519,7 @@
|
||||
"Versions": {
|
||||
"World": [1039, 3087, 3091, 3348, 3607, 3608]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS34"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 35",
|
||||
@@ -580,8 +527,7 @@
|
||||
"Versions": {
|
||||
"World": [1040, 3088, 3092, 3349, 3607, 3608]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS35"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 36",
|
||||
@@ -589,8 +535,7 @@
|
||||
"Versions": {
|
||||
"World": [1042, 3090, 3094, 3351, 3607, 3608]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS36"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 37",
|
||||
@@ -598,8 +543,7 @@
|
||||
"Versions": {
|
||||
"World": [2070, 3609, 3612, 3869, 5662, 5663]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS37"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 38",
|
||||
@@ -607,8 +551,7 @@
|
||||
"Versions": {
|
||||
"World": [3610, 3867, 4123, 4124]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS38"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 40",
|
||||
@@ -617,7 +560,6 @@
|
||||
"World": [3072]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS40",
|
||||
"Danger": "Version 3072 of IOS 40 is a stub, and no longer offers any functionality. It cannot be used to run any code. If you're using System Menu 3.3K, DO NOT install version 3072, as the System Menu relies on IOS 40."
|
||||
},
|
||||
{
|
||||
@@ -626,8 +568,7 @@
|
||||
"Versions": {
|
||||
"World": [2835, 3091, 3348, 3606, 3607]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS41"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 43",
|
||||
@@ -635,8 +576,7 @@
|
||||
"Versions": {
|
||||
"World": [2835, 3091, 3348, 3606, 3607]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS43"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 45",
|
||||
@@ -644,8 +584,7 @@
|
||||
"Versions": {
|
||||
"World": [2835, 3091, 3348, 3606, 3607]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS45"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 46",
|
||||
@@ -653,8 +592,7 @@
|
||||
"Versions": {
|
||||
"World": [2837, 3093, 3350, 3606, 3607]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS46"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 48",
|
||||
@@ -662,8 +600,7 @@
|
||||
"Versions": {
|
||||
"World": [4123, 4124]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS48"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 50",
|
||||
@@ -672,7 +609,6 @@
|
||||
"World": [4889, 5120]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS50",
|
||||
"Danger": "Version 5120 of IOS 50 is a stub, and no longer offers any functionality. It cannot be used to run any code. If you're using System Menu 3.3K, DO NOT install version 5120, as the System Menu relies on IOS 50."
|
||||
},
|
||||
{
|
||||
@@ -682,7 +618,6 @@
|
||||
"World": [4633, 4864]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS51",
|
||||
"Danger": "Version 4864 of IOS 51 is a stub, and no longer offers any functionality. It cannot be used to run any code."
|
||||
},
|
||||
{
|
||||
@@ -692,7 +627,6 @@
|
||||
"World": [5661, 5888]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS52",
|
||||
"Danger": "Version 5888 of IOS 50 is a stub, and no longer offers any functionality. It cannot be used to run any code. If you're using System Menu 3.5, DO NOT install version 5888, as the System Menu relies on IOS 50."
|
||||
},
|
||||
{
|
||||
@@ -701,8 +635,7 @@
|
||||
"Versions": {
|
||||
"World": [4113, 5149, 5406, 5662, 5663]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS53"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 55",
|
||||
@@ -710,8 +643,7 @@
|
||||
"Versions": {
|
||||
"World": [4633, 5149, 5406, 5662, 5663]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS55"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 56",
|
||||
@@ -719,8 +651,7 @@
|
||||
"Versions": {
|
||||
"World": [4890, 5405, 5661, 5662]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS56"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 57",
|
||||
@@ -728,8 +659,7 @@
|
||||
"Versions": {
|
||||
"World": [5404, 5661, 5918, 5919]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS57"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 58",
|
||||
@@ -737,8 +667,7 @@
|
||||
"Versions": {
|
||||
"World": [6175, 6176]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS58"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 59",
|
||||
@@ -746,8 +675,7 @@
|
||||
"Versions": {
|
||||
"World": [8737, 9249]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS59"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 60",
|
||||
@@ -756,7 +684,6 @@
|
||||
"World": [6174, 6400]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS60",
|
||||
"Danger": "Version 6400 of IOS 60 is a stub, and no longer offers any functionality. It cannot be used to run any code. If you're using System Menu 4.0 or 4.1, DO NOT install version 6400, as the System Menu relies on IOS 60."
|
||||
},
|
||||
{
|
||||
@@ -765,8 +692,7 @@
|
||||
"Versions": {
|
||||
"World": [4890, 5405, 5661, 5662]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS61"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 62",
|
||||
@@ -774,8 +700,7 @@
|
||||
"Versions": {
|
||||
"World": [6430]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS62"
|
||||
"Ticket": true
|
||||
},
|
||||
{
|
||||
"Name": "IOS 70",
|
||||
@@ -784,7 +709,6 @@
|
||||
"World": [6687,6912]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS70",
|
||||
"Danger": "Version 6912 of IOS 70 is a stub, and no longer offers any functionality. It cannot be used to run any code. If you're using System Menu 4.2, DO NOT install version 6912, as the System Menu relies on IOS 70."
|
||||
},
|
||||
{
|
||||
@@ -794,7 +718,6 @@
|
||||
"World": [6943, 6944]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS80",
|
||||
"Danger": "IOS 80 is the IOS that the final System Menu, 4.3, relies on, and is required to load the System Menu. Do not modify or remove this IOS unless you have BootMii installed as boot2 to recover from a brick."
|
||||
},
|
||||
{
|
||||
@@ -804,7 +727,6 @@
|
||||
"World": [65280]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS222",
|
||||
"Danger": "This IOS is a stub, and offers no functionality. It cannot be used to run any code."
|
||||
},
|
||||
{
|
||||
@@ -814,7 +736,6 @@
|
||||
"World": [65280]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS223",
|
||||
"Danger": "This IOS is a stub, and offers no functionality. It cannot be used to run any code."
|
||||
},
|
||||
{
|
||||
@@ -824,7 +745,6 @@
|
||||
"World": [65280]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS249",
|
||||
"Danger": "This IOS is a stub, and offers no functionality. It cannot be used to run any code."
|
||||
},
|
||||
{
|
||||
@@ -834,7 +754,6 @@
|
||||
"World": [65280]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS250",
|
||||
"Danger": "This IOS is a stub, and offers no functionality. It cannot be used to run any code."
|
||||
},
|
||||
{
|
||||
@@ -844,7 +763,6 @@
|
||||
"World": [2, 3, 260, 65280]
|
||||
},
|
||||
"Ticket": true,
|
||||
"Archive Name": "IOS254",
|
||||
"Danger": "This IOS is a stub, and offers no functionality. It cannot be used to run any code."
|
||||
}
|
||||
],
|
||||
@@ -11691,4 +11609,4 @@
|
||||
"Ticket": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
# "modules/core.py", licensed under the MIT license
|
||||
# Copyright 2024-2025 NinjaCheetah
|
||||
|
||||
import os
|
||||
import json
|
||||
import pathlib
|
||||
import requests
|
||||
from dataclasses import dataclass
|
||||
from typing import List
|
||||
@@ -13,7 +16,6 @@ class TitleData:
|
||||
# Class to store all data for a Title.
|
||||
tid: str
|
||||
name: str
|
||||
archive_name: str
|
||||
version: str
|
||||
ticket: bool
|
||||
region: str
|
||||
@@ -61,3 +63,21 @@ def check_nusget_updates(app, current_version: str, progress_callback=None) -> s
|
||||
return new_version
|
||||
progress_callback.emit(app.translate("MainWindow", "\n\nYou're running the latest release of NUSGet."))
|
||||
return None
|
||||
|
||||
def get_config_file() -> pathlib.Path:
|
||||
config_dir = pathlib.Path(os.path.join(
|
||||
os.environ.get('APPDATA') or
|
||||
os.environ.get('XDG_CONFIG_HOME') or
|
||||
os.path.join(os.environ['HOME'], '.config'),
|
||||
"NUSGet"
|
||||
))
|
||||
config_dir.mkdir(exist_ok=True)
|
||||
return config_dir.joinpath("config.json")
|
||||
|
||||
def save_config(config_data: dict) -> None:
|
||||
config_file = get_config_file()
|
||||
open(config_file, "w").write(json.dumps(config_data))
|
||||
|
||||
def update_setting(config_data: dict, setting: str, value: any) -> None:
|
||||
config_data[setting] = value
|
||||
save_config(config_data)
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
# Copyright 2024-2025 NinjaCheetah
|
||||
|
||||
import pathlib
|
||||
from typing import List, Tuple
|
||||
|
||||
import libTWLPy
|
||||
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
|
||||
import pathlib
|
||||
from typing import List, Tuple
|
||||
|
||||
from .tkey import find_tkey
|
||||
import libWiiPy
|
||||
from libWiiPy.title.ticket import _TitleLimit
|
||||
|
||||
|
||||
def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_wad_chkbox: bool, keep_enc_chkbox: bool,
|
||||
@@ -52,6 +53,7 @@ def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_
|
||||
# Write out the TMD to a file.
|
||||
version_dir.joinpath(f"tmd.{title_version}").write_bytes(title.tmd.dump())
|
||||
# Use a local ticket, if one exists and "use local files" is enabled.
|
||||
forge_ticket = False
|
||||
if use_local_chkbox and version_dir.joinpath("tik").exists():
|
||||
progress_callback.emit(" - Parsing local copy of Ticket...")
|
||||
title.load_ticket(version_dir.joinpath("tik").read_bytes())
|
||||
@@ -61,11 +63,10 @@ def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_
|
||||
title.load_ticket(libWiiPy.title.download_ticket(tid, wiiu_endpoint=wiiu_nus_enabled))
|
||||
version_dir.joinpath("tik").write_bytes(title.ticket.dump())
|
||||
except ValueError:
|
||||
# If libWiiPy returns an error, then no ticket is available. Log this, and disable options requiring a
|
||||
# ticket so that they aren't attempted later.
|
||||
progress_callback.emit(" - No Ticket is available!")
|
||||
pack_wad_enabled = False
|
||||
decrypt_contents_enabled = False
|
||||
# If libWiiPy returns an error, then no ticket is available. Try to forge a ticket after we download the
|
||||
# content.
|
||||
progress_callback.emit(" - No Ticket is available! Will try forging a Ticket.")
|
||||
forge_ticket = True
|
||||
# Load the content records from the TMD, and begin iterating over the records.
|
||||
title.load_content_records()
|
||||
content_list = []
|
||||
@@ -87,6 +88,39 @@ def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_
|
||||
if keep_enc_chkbox is True:
|
||||
version_dir.joinpath(content_file_name).write_bytes(content_list[content])
|
||||
title.content.content_list = content_list
|
||||
# Try to forge a Ticket, if a common one wasn't available.
|
||||
if forge_ticket is True:
|
||||
progress_callback.emit(" - Attempting to forge Ticket...")
|
||||
try:
|
||||
title_key = find_tkey(tid, title.content.content_list[0], title.tmd.content_records[0])
|
||||
title_key_enc = libWiiPy.title.encrypt_title_key(title_key, 0, tid)
|
||||
ticket = libWiiPy.title.Ticket()
|
||||
ticket.common_key_index = 0
|
||||
ticket.console_id = 0
|
||||
ticket.content_access_permissions = b'\xff' * 64
|
||||
ticket.ecdh_data = b'\x00' * 60
|
||||
ticket.permit_mask = b'\x00' * 4
|
||||
ticket.permitted_titles = b'\x00' * 4
|
||||
ticket.signature = b'\x00' * 256
|
||||
ticket.signature_issuer = "Root-CA00000001-XS00000003" + ("\x00" * 38)
|
||||
ticket.signature_type = b'\x00\x01' * 2
|
||||
ticket.ticket_id = b'\x00' * 8
|
||||
ticket.ticket_version = 0
|
||||
ticket.title_export_allowed = 0
|
||||
ticket.title_id = tid.encode()
|
||||
ticket.title_key_enc = title_key_enc
|
||||
ticket.title_limits_list = [_TitleLimit(0, 0) for _ in range(0, 8)]
|
||||
ticket.title_version = 0
|
||||
ticket.unknown1 = b'\xff' * 2
|
||||
ticket.unknown2 = b'\x00' * 48
|
||||
ticket.fakesign()
|
||||
title.ticket = ticket
|
||||
version_dir.joinpath("tik").write_bytes(title.ticket.dump())
|
||||
progress_callback.emit(" - Successfully forged Ticket!")
|
||||
except Exception:
|
||||
progress_callback.emit(" - Ticket could not be forged!")
|
||||
pack_wad_enabled = False
|
||||
decrypt_contents_enabled = False
|
||||
# If decrypt local contents is still true, decrypt each content and write out the decrypted file.
|
||||
if decrypt_contents_enabled is True:
|
||||
try:
|
||||
@@ -112,7 +146,7 @@ def run_nus_download_wii(out_folder: pathlib.Path, tid: str, version: str, pack_
|
||||
title.ticket.title_key_enc = title_key_common
|
||||
# Get the WAD certificate chain, courtesy of libWiiPy.
|
||||
progress_callback.emit(" - Building certificate...")
|
||||
title.wad.set_cert_data(libWiiPy.title.download_cert(wiiu_endpoint=wiiu_nus_enabled))
|
||||
title.load_cert_chain(libWiiPy.title.download_cert_chain(wiiu_endpoint=wiiu_nus_enabled))
|
||||
# Use a typed WAD name if there is one, and auto generate one based on the TID and version if there isn't.
|
||||
progress_callback.emit(" - Packing WAD...")
|
||||
if wad_file_name != "" and wad_file_name is not None:
|
||||
|
||||
53
modules/tkey.py
Normal file
53
modules/tkey.py
Normal file
@@ -0,0 +1,53 @@
|
||||
# "tkey-gen.py", licensed under the MIT license
|
||||
# Copyright 2024 NinjaCheetah
|
||||
|
||||
import binascii
|
||||
import hashlib
|
||||
import libWiiPy
|
||||
from libWiiPy.types import _ContentRecord
|
||||
|
||||
|
||||
def _secret(start, length):
|
||||
ret = b''
|
||||
add = start + length
|
||||
for _ in range(length):
|
||||
unsigned_start = start & 0xFF # Compensates for how Python handles negative values vs PHP.
|
||||
ret += bytes.fromhex(f"{unsigned_start:02x}"[-2:])
|
||||
nxt = start + add
|
||||
add = start
|
||||
start = nxt
|
||||
return ret
|
||||
|
||||
|
||||
def _mungetid(tid):
|
||||
# Remove leading zeroes from the TID.
|
||||
while tid.startswith("00"):
|
||||
tid = tid[2:]
|
||||
if tid == "":
|
||||
tid = "00"
|
||||
# In PHP, the last character just gets dropped if you make a hex string from an odd-length input, so this
|
||||
# replicates that functionality.
|
||||
if len(tid) % 2 != 0:
|
||||
tid = tid[:-1]
|
||||
return bytes.fromhex(tid)
|
||||
|
||||
|
||||
def _derive_key(tid, passwd):
|
||||
key_secret = _secret(-3, 10)
|
||||
salt = hashlib.md5(key_secret + _mungetid(tid)).digest()
|
||||
# Had to reduce the length here from 32 to 16 when converting to get the same length keys.
|
||||
return hashlib.pbkdf2_hmac("sha1", passwd.encode(), salt, 20, 16).hex()
|
||||
|
||||
|
||||
def find_tkey(tid: str, banner_enc: bytes, content_record: _ContentRecord) -> bytes:
|
||||
# Find a working Title Key by generating a key with a password, then decrypting content 0 and comparing it to the
|
||||
# expected hash. If the hash matches, then we generated the correct key.
|
||||
passwds = ["nintendo", "mypass"]
|
||||
for passwd in passwds:
|
||||
key = binascii.unhexlify(_derive_key(tid, passwd).encode())
|
||||
banner_dec = libWiiPy.title.decrypt_content(banner_enc, key, content_record.index, content_record.content_size)
|
||||
banner_dec_hash = hashlib.sha1(banner_dec).hexdigest()
|
||||
content_record_hash = content_record.content_hash.decode()
|
||||
if banner_dec_hash == content_record_hash:
|
||||
return key
|
||||
raise Exception("Valid Title Key could not be generated")
|
||||
@@ -60,10 +60,8 @@ class NUSGetTreeModel(QAbstractItemModel):
|
||||
tid_item.add_child(region_item)
|
||||
for version in version_list:
|
||||
danger = entry.get("Danger") if entry.get("Danger") is not None else ""
|
||||
archive_name = (entry.get("Archive Name") if entry.get("Archive Name") is not None
|
||||
else entry.get("Name").replace(" ", "-"))
|
||||
metadata = TitleData(entry.get("TID"), entry.get("Name"), archive_name,
|
||||
version, entry.get("Ticket"), region, key, danger)
|
||||
metadata = TitleData(entry.get("TID"), entry.get("Name"), version,
|
||||
entry.get("Ticket"), region, key, danger)
|
||||
public_versions = entry.get("Public Versions")
|
||||
if public_versions is not None:
|
||||
try:
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 41 KiB |
@@ -3,7 +3,7 @@
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'MainMenu.ui'
|
||||
##
|
||||
## Created by: Qt User Interface Compiler version 6.8.1
|
||||
## Created by: Qt User Interface Compiler version 6.9.0
|
||||
##
|
||||
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||
################################################################################
|
||||
@@ -372,6 +372,29 @@ class Ui_MainWindow(object):
|
||||
|
||||
self.verticalLayout_8.addLayout(self.pack_vwii_mode_row)
|
||||
|
||||
self.label_2 = QLabel(self.centralwidget)
|
||||
self.label_2.setObjectName(u"label_2")
|
||||
self.label_2.setFont(font)
|
||||
|
||||
self.verticalLayout_8.addWidget(self.label_2)
|
||||
|
||||
self.horizontalLayout_2 = QHBoxLayout()
|
||||
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
|
||||
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.horizontalLayout_2.addWidget(self.auto_update_chkbox)
|
||||
|
||||
self.auto_update_chkbox_lbl = QLabel(self.centralwidget)
|
||||
self.auto_update_chkbox_lbl.setObjectName(u"auto_update_chkbox_lbl")
|
||||
|
||||
self.horizontalLayout_2.addWidget(self.auto_update_chkbox_lbl)
|
||||
|
||||
|
||||
self.verticalLayout_8.addLayout(self.horizontalLayout_2)
|
||||
|
||||
self.verticalSpacer = QSpacerItem(20, 50, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.MinimumExpanding)
|
||||
|
||||
self.verticalLayout_8.addItem(self.verticalSpacer)
|
||||
@@ -435,6 +458,9 @@ class Ui_MainWindow(object):
|
||||
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.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.auto_update_chkbox.setText("")
|
||||
self.auto_update_chkbox_lbl.setText(QCoreApplication.translate("MainWindow", u"Check for updates on startup", None))
|
||||
self.log_text_browser.setMarkdown("")
|
||||
self.log_text_browser.setHtml(QCoreApplication.translate("MainWindow", 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"
|
||||
|
||||
@@ -576,6 +576,42 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="font">
|
||||
<font>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>App Settings</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<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>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 41 KiB |
@@ -28,7 +28,7 @@ Titel, welche mit einem Häkchen markiert sind, sind frei verfügbar und haben e
|
||||
Titel werden in einem "NUSGet" Ordner innerhalb des Downloads-Ordners gespeichert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="98"/>
|
||||
<location filename="../../NUSGet.py" line="101"/>
|
||||
<source>NUSGet v{nusget_version}
|
||||
Developed by NinjaCheetah
|
||||
Powered by libWiiPy {libwiipy_version}
|
||||
@@ -53,173 +53,173 @@ Titel, welche mit einem Häkchen markiert sind, sind frei verfügbar und haben e
|
||||
Titel werden in einem "NUSGet Downloads" Ordner innerhalb des Downloads-Ordners gespeichert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="192"/>
|
||||
<location filename="../../NUSGet.py" line="203"/>
|
||||
<source>NUSGet Update Available</source>
|
||||
<translation>NUSGet-Update verfügbar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="193"/>
|
||||
<location filename="../../NUSGet.py" line="204"/>
|
||||
<source>There's a newer version of NUSGet available!</source>
|
||||
<translation>Eine neuere Version von NUSGet ist verfügbar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="286"/>
|
||||
<location filename="../../NUSGet.py" line="296"/>
|
||||
<source>No Output Selected</source>
|
||||
<translatorcomment>Changed from "output" to "packaging" for clarity</translatorcomment>
|
||||
<translation>Keine Verpackmethode ausgewählt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="287"/>
|
||||
<location filename="../../NUSGet.py" line="297"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="289"/>
|
||||
<location filename="../../NUSGet.py" line="299"/>
|
||||
<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>
|
||||
<translation>Es muss mindestens "verschlüsselte Inhalte speichern", "entschlüsselte Inhalte speichern (*.app)" oder "Installierbar verpacken (WAD/TAD)" ausgewählt worden sein.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="318"/>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<source>Invalid Title ID</source>
|
||||
<translation>Fehlerhafte Title-ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="319"/>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<source>The Title ID you have entered is not in a valid format!</source>
|
||||
<translation>Die eingegebene Title-ID ist nicht korrekt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="321"/>
|
||||
<location filename="../../NUSGet.py" line="331"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="323"/>
|
||||
<location filename="../../NUSGet.py" line="333"/>
|
||||
<source>Title ID/Version Not Found</source>
|
||||
<translation>Title-ID/Version nicht gefunden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="324"/>
|
||||
<location filename="../../NUSGet.py" line="334"/>
|
||||
<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>
|
||||
<translation>Es konnte kein Titel mit der gegebenen Title-ID oder Version gefunden werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="326"/>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<location filename="../../NUSGet.py" line="338"/>
|
||||
<source>Content Decryption Failed</source>
|
||||
<translation>Entschlüsselung fehlgeschlagen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="332"/>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<source>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 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. "Lokale Dateien nutzen" kann deaktiviert werden, um diese erneut herunterzuladen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="335"/>
|
||||
<location filename="../../NUSGet.py" line="345"/>
|
||||
<source>Ticket Not Available</source>
|
||||
<translation>Ticket nicht verfügbar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<location filename="../../NUSGet.py" line="346"/>
|
||||
<source>No Ticket is Available for the Requested Title!</source>
|
||||
<translation>Es konnte kein Ticket für den geforderten Titel gefunden werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<location filename="../../NUSGet.py" line="349"/>
|
||||
<source>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 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 "Installierbar verpacken" bzw. "Entschlüsselte Inhalte speichern" aktiv. Diese Optionen erfordern ein Ticket, daher wurden nur verschlüsselte Inhalte gespeichert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="341"/>
|
||||
<location filename="../../NUSGet.py" line="351"/>
|
||||
<source>Unknown Error</source>
|
||||
<translation>Unbekannter Fehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<location filename="../../NUSGet.py" line="352"/>
|
||||
<source>An Unknown Error has Occurred!</source>
|
||||
<translation>Ein unbekannter Fehler ist aufgetreten.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="344"/>
|
||||
<location filename="../../NUSGet.py" line="354"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="363"/>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<source>Script Issues Occurred</source>
|
||||
<translation>Script-Fehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="364"/>
|
||||
<location filename="../../NUSGet.py" line="374"/>
|
||||
<source>Some issues occurred while running the download script.</source>
|
||||
<translation>Ein Fehler ist im Script aufgetreten.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="366"/>
|
||||
<location filename="../../NUSGet.py" line="376"/>
|
||||
<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 "Error details have been written to the log."</translatorcomment>
|
||||
<translation>Fehlerdetails wurden in den Log geschrieben.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<location filename="../../NUSGet.py" line="393"/>
|
||||
<source>You enabled "Create decrypted contents" or "Pack installable archive", but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
|
||||
<translation>"Entschlüsselte Inhalte speichern" bzw. "Installierbar verpacken" ist aktiv, jedoch fehlen Tickets für die angezeigten Titel. Sofern aktiv werden die verschlüsselten Inhalte trotzdem heruntergeladen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="402"/>
|
||||
<location filename="../../NUSGet.py" line="412"/>
|
||||
<source>Script Download Failed</source>
|
||||
<translation>Script-Herunterladen fehlgeschlagen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="403"/>
|
||||
<location filename="../../NUSGet.py" line="413"/>
|
||||
<source>Open NUS Script</source>
|
||||
<translatorcomment>Translating the file type is pointless, since it's not an actual "script"</translatorcomment>
|
||||
<translation>NUS-Script öffnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="404"/>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<source>NUS Scripts (*.nus *.json)</source>
|
||||
<translatorcomment>"Scripts" isn't the correct way to pluralize a word, and "Scripte" would misalign with referring to them as "Script", so we just keep it as-is (it sounds plural enough anyway!)</translatorcomment>
|
||||
<translation>NUS-Script (*.nus *.json)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<source>An error occurred while parsing the script file!</source>
|
||||
<translation>Ein Fehler ist während des Parsen des Script aufgetreten.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="415"/>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<location filename="../../NUSGet.py" line="434"/>
|
||||
<source>An error occurred while parsing Title IDs!</source>
|
||||
<translation>Ein Fehler ist während des Parsen der Title-IDs aufgetreten.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<location filename="../../NUSGet.py" line="435"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="52"/>
|
||||
<location filename="../../modules/core.py" line="54"/>
|
||||
<source>
|
||||
|
||||
Could not check for updates.</source>
|
||||
@@ -228,7 +228,7 @@ Could not check for updates.</source>
|
||||
Konnte nicht nach Updates suchen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="60"/>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<source>
|
||||
|
||||
There's a newer version of NUSGet available!</source>
|
||||
@@ -237,7 +237,7 @@ There's a newer version of NUSGet available!</source>
|
||||
Eine neuere Version von NUSGet ist verfügbar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<location filename="../../modules/core.py" line="64"/>
|
||||
<source>
|
||||
|
||||
You're running the latest release of NUSGet.</source>
|
||||
@@ -363,7 +363,17 @@ Die neuste Version von NUSGet ist bereits aktiv.</translation>
|
||||
<translation>Titel mit dem Common-Key der Wii neu verschlüsseln</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="627"/>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="587"/>
|
||||
<source>App Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="609"/>
|
||||
<source>Check for updates on startup</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="663"/>
|
||||
<source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
|
||||
@@ -113,7 +113,17 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="627"/>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="587"/>
|
||||
<source>App Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="609"/>
|
||||
<source>Check for updates on startup</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="663"/>
|
||||
<source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
@@ -130,7 +140,7 @@ li.checked::marker { content: "\2612"; }
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="98"/>
|
||||
<location filename="../../NUSGet.py" line="101"/>
|
||||
<source>NUSGet v{nusget_version}
|
||||
Developed by NinjaCheetah
|
||||
Powered by libWiiPy {libwiipy_version}
|
||||
@@ -144,181 +154,181 @@ Titles will be downloaded to a folder named "NUSGet Downloads" inside
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="192"/>
|
||||
<location filename="../../NUSGet.py" line="203"/>
|
||||
<source>NUSGet Update Available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="193"/>
|
||||
<location filename="../../NUSGet.py" line="204"/>
|
||||
<source>There's a newer version of NUSGet available!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="286"/>
|
||||
<location filename="../../NUSGet.py" line="296"/>
|
||||
<source>No Output Selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="287"/>
|
||||
<location filename="../../NUSGet.py" line="297"/>
|
||||
<source>You have not selected any format to output the data in!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="289"/>
|
||||
<location filename="../../NUSGet.py" line="299"/>
|
||||
<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="318"/>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<source>Invalid Title ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="319"/>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<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="321"/>
|
||||
<location filename="../../NUSGet.py" line="331"/>
|
||||
<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="323"/>
|
||||
<location filename="../../NUSGet.py" line="333"/>
|
||||
<source>Title ID/Version Not Found</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="324"/>
|
||||
<location filename="../../NUSGet.py" line="334"/>
|
||||
<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="326"/>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<location filename="../../NUSGet.py" line="338"/>
|
||||
<source>Content Decryption Failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<source>Content decryption was not successful! Decrypted contents could not be created.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="332"/>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<source>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 option before trying the download again to fix potential issues with local data.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="335"/>
|
||||
<location filename="../../NUSGet.py" line="345"/>
|
||||
<source>Ticket Not Available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<location filename="../../NUSGet.py" line="346"/>
|
||||
<source>No Ticket is Available for the Requested Title!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<location filename="../../NUSGet.py" line="349"/>
|
||||
<source>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 available for titles without a ticket. Only encrypted contents have been saved.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="341"/>
|
||||
<location filename="../../NUSGet.py" line="351"/>
|
||||
<source>Unknown Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<location filename="../../NUSGet.py" line="352"/>
|
||||
<source>An Unknown Error has Occurred!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="344"/>
|
||||
<location filename="../../NUSGet.py" line="354"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="363"/>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<source>Script Issues Occurred</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="364"/>
|
||||
<location filename="../../NUSGet.py" line="374"/>
|
||||
<source>Some issues occurred while running the download script.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="366"/>
|
||||
<location filename="../../NUSGet.py" line="376"/>
|
||||
<source>Check the log for more details about what issues were encountered.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<location filename="../../NUSGet.py" line="393"/>
|
||||
<source>You enabled "Create decrypted contents" or "Pack installable archive", but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="402"/>
|
||||
<location filename="../../NUSGet.py" line="412"/>
|
||||
<source>Script Download Failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="403"/>
|
||||
<location filename="../../NUSGet.py" line="413"/>
|
||||
<source>Open NUS Script</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="404"/>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<source>NUS Scripts (*.nus *.json)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<source>An error occurred while parsing the script file!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="415"/>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<location filename="../../NUSGet.py" line="434"/>
|
||||
<source>An error occurred while parsing Title IDs!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<location filename="../../NUSGet.py" line="435"/>
|
||||
<source>The title at index {script_data.index(title)} does not have a Title ID!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="52"/>
|
||||
<location filename="../../modules/core.py" line="54"/>
|
||||
<source>
|
||||
|
||||
Could not check for updates.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="60"/>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<source>
|
||||
|
||||
There's a newer version of NUSGet available!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<location filename="../../modules/core.py" line="64"/>
|
||||
<source>
|
||||
|
||||
You're running the latest release of NUSGet.</source>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="98"/>
|
||||
<location filename="../../NUSGet.py" line="101"/>
|
||||
<source>NUSGet v{nusget_version}
|
||||
Developed by NinjaCheetah
|
||||
Powered by libWiiPy {libwiipy_version}
|
||||
@@ -15,280 +15,299 @@ 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 will be downloaded to a folder named "NUSGet Downloads" inside your downloads folder.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>NUSGet v{nusget_version}
|
||||
Développé par NinjaCheetah
|
||||
Alimenté par libWiiPy {libwiipy_version}
|
||||
Support DSi fourni par libTWLPy {libtwlpy_version}
|
||||
|
||||
Choisissez un titre depuis la liste à gauche, ou saisissez un ID de titre pour commencer.
|
||||
|
||||
Les titres marqués d'une coche sont gratuits et ont un billet disponible, et peuvent être décryptés et/ou empaquetés dans un fichier WAD ou TAD. Les titres marqués d'une croix n'ont pas de billets, et seul leur contenu crypté peut être enregistré.
|
||||
|
||||
Les titres seront téléchargés dans un dossier "NUSGet Downloads", à l'intérieur de votre dossier de téléchargements.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="192"/>
|
||||
<location filename="../../NUSGet.py" line="203"/>
|
||||
<source>NUSGet Update Available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Mise à jour NUSGet disponible</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="193"/>
|
||||
<location filename="../../NUSGet.py" line="204"/>
|
||||
<source>There's a newer version of NUSGet available!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Une nouvelle version de NUSGet est disponible !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="286"/>
|
||||
<location filename="../../NUSGet.py" line="296"/>
|
||||
<source>No Output Selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Aucun format sélectionné</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="287"/>
|
||||
<location filename="../../NUSGet.py" line="297"/>
|
||||
<source>You have not selected any format to output the data in!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Veuillez sélectionner un format de sortie pour les données !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="289"/>
|
||||
<location filename="../../NUSGet.py" line="299"/>
|
||||
<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="318"/>
|
||||
<source>Invalid Title ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="319"/>
|
||||
<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="321"/>
|
||||
<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="323"/>
|
||||
<source>Title ID/Version Not Found</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="324"/>
|
||||
<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="326"/>
|
||||
<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>Veuillez sélectionner au moins une option de téléchargement.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<source>Content Decryption Failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Invalid Title ID</source>
|
||||
<translation>ID de titre invalide</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<source>Content decryption was not successful! Decrypted contents could not be created.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>The Title ID you have entered is not in a valid format!</source>
|
||||
<translation>L'ID de titre que vous avez saisi a un format invalide !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="332"/>
|
||||
<source>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 option before trying the download again to fix potential issues with local data.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<location filename="../../NUSGet.py" line="331"/>
|
||||
<source>Title IDs must be 16 digit strings of numbers and letters. Please enter a correctly formatted Title ID, or select one from the menu on the left.</source>
|
||||
<translation>Les ID de titre doivent être composés de 16 caractères alphanumériques. Veuillez saisir un ID formaté correctement, ou sélectionnez-en un depuis le menu de gauche.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="335"/>
|
||||
<source>Ticket Not Available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<location filename="../../NUSGet.py" line="333"/>
|
||||
<source>Title ID/Version Not Found</source>
|
||||
<translation>ID de titre / Version introuvable</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="334"/>
|
||||
<source>No title with the provided Title ID or version could be found!</source>
|
||||
<translation>Aucun titre trouvé pour l'ID ou la version fourni !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<source>No Ticket is Available for the Requested Title!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Please make sure that you have entered a valid Title ID, or selected one from the title database, and that the provided version exists for the title you are attempting to download.</source>
|
||||
<translation>Veuillez vous assurez que vous avez saisi un ID valide, ou sélectionnez-en un depuis la base de données, et que la version fournie existe pour le titre que vous souhaitez télécharger.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="338"/>
|
||||
<source>Content Decryption Failed</source>
|
||||
<translation>Échec du décryptage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<source>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 available for titles without a ticket. Only encrypted contents have been saved.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="341"/>
|
||||
<source>Unknown Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<source>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 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é "Utiliser des fichiers locaux, s'ils existent", essayez de désactiver cette option avant d'essayer à nouveau pour résoudre les éventuelles erreurs avec les données locales.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="345"/>
|
||||
<source>Ticket Not Available</source>
|
||||
<translation>Billet indisponible</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="346"/>
|
||||
<source>No Ticket is Available for the Requested Title!</source>
|
||||
<translation>Aucun billet disponible pour le titre demandé !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="349"/>
|
||||
<source>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 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é "Empaqueter une archive d'installation" ou "Décrypter le contenu". Ces options sont indisponibles pour les titres sans billet. Seul le contenu crypté a été enregistré.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="351"/>
|
||||
<source>Unknown Error</source>
|
||||
<translation>Erreur inconnue</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="352"/>
|
||||
<source>An Unknown Error has Occurred!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Une erreur inconnue est survenue !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="344"/>
|
||||
<location filename="../../NUSGet.py" line="354"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="363"/>
|
||||
<source>Script Issues Occurred</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="364"/>
|
||||
<source>Some issues occurred while running the download script.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="366"/>
|
||||
<source>Check the log for more details about what issues were encountered.</source>
|
||||
<translation type="unfinished"></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'erreur.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<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>
|
||||
<source>Script Issues Occurred</source>
|
||||
<translation>Erreurs survenues dans le script</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="374"/>
|
||||
<source>Some issues occurred while running the download script.</source>
|
||||
<translation>Des erreurs sont survenues pendant l'exécution du script de téléchargement.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="376"/>
|
||||
<source>Check the log for more details about what issues were encountered.</source>
|
||||
<translation>Vérifiez le journal pour plus de détails à propos des erreurs rencontrées.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<source>The following titles could not be downloaded due to an error. Please ensure that the Title ID and version listed in the script are valid.</source>
|
||||
<translation>Le téléchargement des titres suivants a échoué. Assurez-vous que les ID de titre et version du script soient valides.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="393"/>
|
||||
<source>You enabled "Create decrypted contents" or "Pack installable archive", 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>Vous avez activé "Décrypter le contenu" ou "Empaqueter une archive d'installation", mais les billets des titres suivants sont indisponibles. Si activé(s), le contenu crypté a été téléchargé.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="402"/>
|
||||
<location filename="../../NUSGet.py" line="412"/>
|
||||
<source>Script Download Failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Échec du script de téléchargement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="403"/>
|
||||
<location filename="../../NUSGet.py" line="413"/>
|
||||
<source>Open NUS Script</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="404"/>
|
||||
<source>NUS Scripts (*.nus *.json)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ouvrir un script NUS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<source>An error occurred while parsing the script file!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="415"/>
|
||||
<source>Error encountered at line {e.lineno}, column {e.colno}. Please double-check the script and try again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>NUS Scripts (*.nus *.json)</source>
|
||||
<translation>Scripts NUS (*.nus *.json)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<source>An error occurred while parsing Title IDs!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>An error occurred while parsing the script file!</source>
|
||||
<translation>Une erreur est survenue pendant la lecture du script !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="434"/>
|
||||
<source>An error occurred while parsing Title IDs!</source>
|
||||
<translation>Une erreur est survenue à la lecture d'un ID de titre !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="435"/>
|
||||
<source>The title at index {script_data.index(title)} does not have a Title ID!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Le titre à l'index {script_data.index(title)} n'a pas d'ID !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="26"/>
|
||||
<source>MainWindow</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>FenetrePrincipale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="46"/>
|
||||
<source>Search</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Rechercher</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="59"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Effacer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="90"/>
|
||||
<source>Wii</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="100"/>
|
||||
<source>vWii</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="110"/>
|
||||
<source>DSi</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="135"/>
|
||||
<source>Title ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>ID du titre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="142"/>
|
||||
<source>v</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="155"/>
|
||||
<source>Version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="162"/>
|
||||
<source>Console:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Console :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="198"/>
|
||||
<source>Start Download</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Télécharger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="211"/>
|
||||
<source>Run Script</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Exécuter le script</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="238"/>
|
||||
<source>General Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Configuration</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="269"/>
|
||||
<source>Pack installable archive (WAD/TAD)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Empaqueter une archive d'installation (WAD / TAD)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="284"/>
|
||||
<source>File Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Nom du fichier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="318"/>
|
||||
<source>Keep encrypted contents</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Conserver le contenu crypté</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="354"/>
|
||||
<source>Create decrypted contents (*.app)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Décrypter le contenu (*.app)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="393"/>
|
||||
<source>Use local files, if they exist</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Utiliser des fichiers locaux, s'ils existent</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="438"/>
|
||||
<source>Use the Wii U NUS (faster, only effects Wii/vWii)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Utiliser le NUS Wii U (plus rapide, n'affecte que Wii / vWii)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="480"/>
|
||||
<source>Apply patches to IOS (Applies to WADs only)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Appliquer des modifications aux IOS (WAD uniquement)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="536"/>
|
||||
<source>vWii Title Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Titres vWii</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="570"/>
|
||||
<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="587"/>
|
||||
<source>App Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="627"/>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="609"/>
|
||||
<source>Check for updates on startup</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="663"/>
|
||||
<source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
@@ -297,28 +316,34 @@ li.unchecked::marker { content: "\2610"; }
|
||||
li.checked::marker { content: "\2612"; }
|
||||
</style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;">
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;"><br /></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="52"/>
|
||||
<location filename="../../modules/core.py" line="54"/>
|
||||
<source>
|
||||
|
||||
Could not check for updates.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="60"/>
|
||||
<source>
|
||||
<translation>
|
||||
|
||||
There's a newer version of NUSGet available!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
Impossible de vérifier les mises à jour.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<source>
|
||||
|
||||
There's a newer version of NUSGet available!</source>
|
||||
<translation>
|
||||
|
||||
Une nouvelle version de NUSGet est disponible !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="64"/>
|
||||
<source>
|
||||
|
||||
You're running the latest release of NUSGet.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>
|
||||
|
||||
Vous utilisez la dernière version de NUSGet.</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
||||
@@ -113,7 +113,17 @@
|
||||
<translation>Cripta titolo usando la Chiave Comune Wii</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="627"/>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="587"/>
|
||||
<source>App Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="609"/>
|
||||
<source>Check for updates on startup</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="663"/>
|
||||
<source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
@@ -144,7 +154,7 @@ p, li { white-space: pre-wrap; }
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="98"/>
|
||||
<location filename="../../NUSGet.py" line="101"/>
|
||||
<source>NUSGet v{nusget_version}
|
||||
Developed by NinjaCheetah
|
||||
Powered by libWiiPy {libwiipy_version}
|
||||
@@ -167,152 +177,152 @@ I titoli marcati da una spunta sono disponibili e hanno un ticket libero, e poss
|
||||
I titoli verranno scaricati nella cartella "NUSGet Downloads" all'interno della cartella Download.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="286"/>
|
||||
<location filename="../../NUSGet.py" line="296"/>
|
||||
<source>No Output Selected</source>
|
||||
<translation>Nessun output selezionato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="287"/>
|
||||
<location filename="../../NUSGet.py" line="297"/>
|
||||
<source>You have not selected any format to output the data in!</source>
|
||||
<translation>Non hai selezionato alcun formato in cui esportare i dati!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="289"/>
|
||||
<location filename="../../NUSGet.py" line="299"/>
|
||||
<source>Please select at least one option for how you would like the download to be saved.</source>
|
||||
<translation>Per favore scegli almeno un opzione per come vorresti che fosse salvato il download.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="318"/>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<source>Invalid Title ID</source>
|
||||
<translation>ID Titolo invalido</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="319"/>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<source>The Title ID you have entered is not in a valid format!</source>
|
||||
<translation>L' ID Titolo che hai inserito non è in un formato valido!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="321"/>
|
||||
<location filename="../../NUSGet.py" line="331"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="323"/>
|
||||
<location filename="../../NUSGet.py" line="333"/>
|
||||
<source>Title ID/Version Not Found</source>
|
||||
<translation>ID Titolo/Versione non trovata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="324"/>
|
||||
<location filename="../../NUSGet.py" line="334"/>
|
||||
<source>No title with the provided Title ID or version could be found!</source>
|
||||
<translation>Non è stato trovato nessun titolo con l' ID Titolo o versione data!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="326"/>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<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' ID Titolo valido, o scegline uno dal database, e che la versione richiesta esista per il titolo che vuoi scaricare.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<location filename="../../NUSGet.py" line="338"/>
|
||||
<source>Content Decryption Failed</source>
|
||||
<translation>Decriptazione contenuti fallita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="332"/>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<source>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 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 "Usa file locali, se esistenti", prova a disabilitare quell'opzione prima di riprovare a scaricare per aggiustare potenziali errori coi dati locali.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="335"/>
|
||||
<location filename="../../NUSGet.py" line="345"/>
|
||||
<source>Ticket Not Available</source>
|
||||
<translation>Ticket non disponibile</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<location filename="../../NUSGet.py" line="346"/>
|
||||
<source>No Ticket is Available for the Requested Title!</source>
|
||||
<translation>Nessun ticket disponibile per il titolo richiesto!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<location filename="../../NUSGet.py" line="349"/>
|
||||
<source>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 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 "Crea archivio installabile" o "Crea contenuto decriptato". Queste opzioni non sono disponibili per i titoli senza un ticket. Sono stati salvati solo i contenuti criptati.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="341"/>
|
||||
<location filename="../../NUSGet.py" line="351"/>
|
||||
<source>Unknown Error</source>
|
||||
<translation>Errore sconosciuto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<location filename="../../NUSGet.py" line="352"/>
|
||||
<source>An Unknown Error has Occurred!</source>
|
||||
<translation>Errore sconosciuto!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="344"/>
|
||||
<location filename="../../NUSGet.py" line="354"/>
|
||||
<source>Please try again. If this issue persists, please open a new issue on GitHub detailing what you were trying to do when this error occurred.</source>
|
||||
<translation>Per favore riprova. Se il problema persiste, apri un issue su GitHub specificando in modo dettagliato cosa volevi fare quando è comparso questo errore.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="363"/>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<source>Script Issues Occurred</source>
|
||||
<translation>Errore script</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="364"/>
|
||||
<location filename="../../NUSGet.py" line="374"/>
|
||||
<source>Some issues occurred while running the download script.</source>
|
||||
<translation>Ci sono stati degli errori con lo script di download.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="366"/>
|
||||
<location filename="../../NUSGet.py" line="376"/>
|
||||
<source>Check the log for more details about what issues were encountered.</source>
|
||||
<translation>Guarda i log per più dettagli sull'errore.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<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'ID Titolo e la versione nello script siano validi.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<location filename="../../NUSGet.py" line="393"/>
|
||||
<source>You enabled "Create decrypted contents" or "Pack installable archive", but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
|
||||
<translation>You enabled "Create decrypted contents" or "Pack installable archive", but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="402"/>
|
||||
<location filename="../../NUSGet.py" line="412"/>
|
||||
<source>Script Download Failed</source>
|
||||
<translation>Download script fallito</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="403"/>
|
||||
<location filename="../../NUSGet.py" line="413"/>
|
||||
<source>Open NUS Script</source>
|
||||
<translation>Apri script NUS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="404"/>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<source>NUS Scripts (*.nus *.json)</source>
|
||||
<translation>Scrpit NUS (*.nus *.txt)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<source>An error occurred while parsing the script file!</source>
|
||||
<translation>Ci sono stati degli errori con lo script di download!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="415"/>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<location filename="../../NUSGet.py" line="434"/>
|
||||
<source>An error occurred while parsing Title IDs!</source>
|
||||
<translation>Ci sono stati degli errori con GLI id tITOLO!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<location filename="../../NUSGet.py" line="435"/>
|
||||
<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>
|
||||
</message>
|
||||
@@ -359,31 +369,31 @@ I titoli verranno scaricati nella cartella "NUSGet" all'interno d
|
||||
<translation>Applica patch agli IOS (Solo per le WAD)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="192"/>
|
||||
<location filename="../../NUSGet.py" line="203"/>
|
||||
<source>NUSGet Update Available</source>
|
||||
<translation>Aggiornamento di NUSGet disponibile</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="193"/>
|
||||
<location filename="../../NUSGet.py" line="204"/>
|
||||
<source>There's a newer version of NUSGet available!</source>
|
||||
<translation>Una nuova versione di NUSGet è disponibile!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="52"/>
|
||||
<location filename="../../modules/core.py" line="54"/>
|
||||
<source>
|
||||
|
||||
Could not check for updates.</source>
|
||||
<translation>Impossibile trovare eventuali aggiornamenti.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="60"/>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<source>
|
||||
|
||||
There's a newer version of NUSGet available!</source>
|
||||
<translation>Una nuova versione di NUSGet è disponibile!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<location filename="../../modules/core.py" line="64"/>
|
||||
<source>
|
||||
|
||||
You're running the latest release of NUSGet.</source>
|
||||
|
||||
@@ -113,7 +113,17 @@
|
||||
<translation>Wii 공통 키를 사용하여 타이틀을 다시 암호화</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="627"/>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="587"/>
|
||||
<source>App Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="609"/>
|
||||
<source>Check for updates on startup</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="663"/>
|
||||
<source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
@@ -144,7 +154,7 @@ p, li { white-space: pre-wrap; }
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="98"/>
|
||||
<location filename="../../NUSGet.py" line="101"/>
|
||||
<source>NUSGet v{nusget_version}
|
||||
Developed by NinjaCheetah
|
||||
Powered by libWiiPy {libwiipy_version}
|
||||
@@ -167,152 +177,152 @@ DSi 지원 : libTWLPy {libtwlpy_version}에서 제공
|
||||
타이틀은 다운로드 폴더 내의 "NUSGet Downloads"이라는 폴더에 다운로드됩니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="286"/>
|
||||
<location filename="../../NUSGet.py" line="296"/>
|
||||
<source>No Output Selected</source>
|
||||
<translation>선택된 출력 없음</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="287"/>
|
||||
<location filename="../../NUSGet.py" line="297"/>
|
||||
<source>You have not selected any format to output the data in!</source>
|
||||
<translation>데이터를 출력할 형식을 선택하지 않았습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="289"/>
|
||||
<location filename="../../NUSGet.py" line="299"/>
|
||||
<source>Please select at least one option for how you would like the download to be saved.</source>
|
||||
<translation>다운로드를 저장할 방법을 하나 이상 선택하세요.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="318"/>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<source>Invalid Title ID</source>
|
||||
<translation>잘못된 제목 ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="319"/>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<source>The Title ID you have entered is not in a valid format!</source>
|
||||
<translation>입력한 타이틀 ID의 형식이 올바르지 않습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="321"/>
|
||||
<location filename="../../NUSGet.py" line="331"/>
|
||||
<source>Title IDs must be 16 digit strings of numbers and letters. Please enter a correctly formatted Title ID, or select one from the menu on the left.</source>
|
||||
<translation>타이틀 ID는 숫자와 문자로 구성된 16자리 문자열이어야 합니다. 올바르게 포맷된 타이틀 ID를 입력하거나 왼쪽 메뉴에서 하나를 선택하세요.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="323"/>
|
||||
<location filename="../../NUSGet.py" line="333"/>
|
||||
<source>Title ID/Version Not Found</source>
|
||||
<translation>타이틀 ID/버전을 찾을 수 없음</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="324"/>
|
||||
<location filename="../../NUSGet.py" line="334"/>
|
||||
<source>No title with the provided Title ID or version could be found!</source>
|
||||
<translation>제공된 타이틀 ID 또는 버전으로 제목을 찾을 수 없습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="326"/>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<source>Please make sure that you have entered a valid Title ID, or selected one from the title database, and that the provided version exists for the title you are attempting to download.</source>
|
||||
<translation>유효한 타이틀 ID를 입력했는지 또는 타이틀 데이터베이스에서 선택했는지, 그리고 다운로드하려는 타이틀에 대해 제공된 버전이 있는지 확인하세요.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<location filename="../../NUSGet.py" line="338"/>
|
||||
<source>Content Decryption Failed</source>
|
||||
<translation>콘텐츠 복호화 실패</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<source>Content decryption was not successful! Decrypted contents could not be created.</source>
|
||||
<translation>콘텐츠 복호화가 성공하지 못했습니다! 복호화된 콘텐츠를 만들 수 없습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="332"/>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<source>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 option before trying the download again to fix potential issues with local data.</source>
|
||||
<translation>TMD 또는 티켓이 손상되었거나 복호화되는 콘텐츠와 일치하지 않을 수 있습니다. "로컬 파일이 있으면 사용"을 체크한 경우, 로컬 데이터와 관련된 잠재적인 문제를 해결하기 위해 다시 다운로드를 시도하기 전에 해당 옵션을 비활성화해 보세요.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="335"/>
|
||||
<location filename="../../NUSGet.py" line="345"/>
|
||||
<source>Ticket Not Available</source>
|
||||
<translation>사용 가능한 티켓이 아님</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<location filename="../../NUSGet.py" line="346"/>
|
||||
<source>No Ticket is Available for the Requested Title!</source>
|
||||
<translation>요청한 타이틀에 대한 티켓이 없습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<location filename="../../NUSGet.py" line="349"/>
|
||||
<source>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 available for titles without a ticket. Only encrypted contents have been saved.</source>
|
||||
<translation>요청한 타이틀에 대한 티켓을 다운로드할 수 없지만 "설치 가능한 아카이브 팩" 또는 "암호 해독된 콘텐츠 생성"을 선택했습니다. 이러한 옵션은 티켓이 없는 타이틀에는 사용할 수 없습니다. 암호화된 콘텐츠만 저장되었습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="341"/>
|
||||
<location filename="../../NUSGet.py" line="351"/>
|
||||
<source>Unknown Error</source>
|
||||
<translation>알 수 없는 오류</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<location filename="../../NUSGet.py" line="352"/>
|
||||
<source>An Unknown Error has Occurred!</source>
|
||||
<translation>알 수 없는 오류가 발생했습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="344"/>
|
||||
<location filename="../../NUSGet.py" line="354"/>
|
||||
<source>Please try again. If this issue persists, please open a new issue on GitHub detailing what you were trying to do when this error occurred.</source>
|
||||
<translation>다시 시도하세요. 이 문제가 지속되면 GitHub에서 새 이슈를 열어 이 오류가 발생했을 때 무엇을 하려고 했는지 자세히 설명하세요.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="363"/>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<source>Script Issues Occurred</source>
|
||||
<translation>스크립트 문제가 발생함</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="364"/>
|
||||
<location filename="../../NUSGet.py" line="374"/>
|
||||
<source>Some issues occurred while running the download script.</source>
|
||||
<translation>다운로드 스크립트를 실행하는 동안 몇 가지 문제가 발생했습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="366"/>
|
||||
<location filename="../../NUSGet.py" line="376"/>
|
||||
<source>Check the log for more details about what issues were encountered.</source>
|
||||
<translation>발생한 문제에 대한 자세한 내용은 로그를 확인하세요.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<source>The following titles could not be downloaded due to an error. Please ensure that the Title ID and version listed in the script are valid.</source>
|
||||
<translation>다음 제목은 오류로 인해 다운로드할 수 없습니다. 스크립트에 나열된 타이틀 ID와 버전이 유효한지 확인하세요.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<location filename="../../NUSGet.py" line="393"/>
|
||||
<source>You enabled "Create decrypted contents" or "Pack installable archive", but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
|
||||
<translation>"암호 해독된 콘텐츠 만들기" 또는 "설치 가능한 아카이브 압축"을 활성화했지만 스크립트의 다음 타이틀에는 사용 가능한 티켓이 없습니다. 활성화된 경우 암호화된 콘텐츠가 여전히 다운로드되었습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="402"/>
|
||||
<location filename="../../NUSGet.py" line="412"/>
|
||||
<source>Script Download Failed</source>
|
||||
<translation>스크립트 다운로드 실패함</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="403"/>
|
||||
<location filename="../../NUSGet.py" line="413"/>
|
||||
<source>Open NUS Script</source>
|
||||
<translation>NUS 스크립트 열기</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="404"/>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<source>NUS Scripts (*.nus *.json)</source>
|
||||
<translation>NUS 스크립트 (*.nus *.json)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<source>An error occurred while parsing the script file!</source>
|
||||
<translation>스크립트 파일을 구문 분석하는 동안 오류가 발생했습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="415"/>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<location filename="../../NUSGet.py" line="434"/>
|
||||
<source>An error occurred while parsing Title IDs!</source>
|
||||
<translation>타이틀 ID를 구문 분석하는 동안 오류가 발생했습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<location filename="../../NUSGet.py" line="435"/>
|
||||
<source>The title at index {script_data.index(title)} does not have a Title ID!</source>
|
||||
<translation>{script_data.index(title)} 인덱스의 타이틀에 타이틀 ID가 없습니다!</translation>
|
||||
</message>
|
||||
@@ -360,17 +370,17 @@ DSi 지원 : libTWLPy {libtwlpy_version}에서 제공
|
||||
<translation>IOS에 패치 적용 (WAD에만 적용)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="192"/>
|
||||
<location filename="../../NUSGet.py" line="203"/>
|
||||
<source>NUSGet Update Available</source>
|
||||
<translation>NUSGet 업데이트 가능</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="193"/>
|
||||
<location filename="../../NUSGet.py" line="204"/>
|
||||
<source>There's a newer version of NUSGet available!</source>
|
||||
<translation>NUSBet의 새로운 버전이 나왔습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="52"/>
|
||||
<location filename="../../modules/core.py" line="54"/>
|
||||
<source>
|
||||
|
||||
Could not check for updates.</source>
|
||||
@@ -379,7 +389,7 @@ Could not check for updates.</source>
|
||||
업데이트를 확인할 수 없습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="60"/>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<source>
|
||||
|
||||
There's a newer version of NUSGet available!</source>
|
||||
@@ -388,7 +398,7 @@ There's a newer version of NUSGet available!</source>
|
||||
NUSBet의 새로운 버전이 나왔습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<location filename="../../modules/core.py" line="64"/>
|
||||
<source>
|
||||
|
||||
You're running the latest release of NUSGet.</source>
|
||||
|
||||
@@ -113,7 +113,17 @@
|
||||
<translation>Krypter tittelen på nytt ved hjelp av Wii Common Key</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="627"/>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="587"/>
|
||||
<source>App Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="609"/>
|
||||
<source>Check for updates on startup</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="663"/>
|
||||
<source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
@@ -166,7 +176,7 @@ Titler merket med en hake er fri og har en billett tilgjengelig, og kan dekrypte
|
||||
Titler er lastes ned til en mappe med navnet "NUSGet" i nedlastingsmappen din.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="98"/>
|
||||
<location filename="../../NUSGet.py" line="101"/>
|
||||
<source>NUSGet v{nusget_version}
|
||||
Developed by NinjaCheetah
|
||||
Powered by libWiiPy {libwiipy_version}
|
||||
@@ -189,152 +199,152 @@ Titler merket med en hake er fri og har en billett tilgjengelig, og kan dekrypte
|
||||
Titler er lastes ned til en mappe med navnet "NUSGet Downloads" i nedlastingsmappen din.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="286"/>
|
||||
<location filename="../../NUSGet.py" line="296"/>
|
||||
<source>No Output Selected</source>
|
||||
<translation>Ingen Utgang Valgt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="287"/>
|
||||
<location filename="../../NUSGet.py" line="297"/>
|
||||
<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="289"/>
|
||||
<location filename="../../NUSGet.py" line="299"/>
|
||||
<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="318"/>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<source>Invalid Title ID</source>
|
||||
<translation>Ugyldig Tittel ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="319"/>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<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="321"/>
|
||||
<location filename="../../NUSGet.py" line="331"/>
|
||||
<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 må 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="323"/>
|
||||
<location filename="../../NUSGet.py" line="333"/>
|
||||
<source>Title ID/Version Not Found</source>
|
||||
<translation>Tittel ID/Versjon Ikke Funnet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="324"/>
|
||||
<location filename="../../NUSGet.py" line="334"/>
|
||||
<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="326"/>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<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="328"/>
|
||||
<location filename="../../NUSGet.py" line="338"/>
|
||||
<source>Content Decryption Failed</source>
|
||||
<translation>Dekryptering av Innhold Mislyktes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<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="332"/>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<source>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 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 "Bruk lokale filer, hvis de finnes", kan du prøve å deaktivere dette alternativet før du prøver nedlastingen på nytt for å løse eventuelle problemer med lokale data.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="335"/>
|
||||
<location filename="../../NUSGet.py" line="345"/>
|
||||
<source>Ticket Not Available</source>
|
||||
<translation>Billett Ikke Tilgjengelig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<location filename="../../NUSGet.py" line="346"/>
|
||||
<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="339"/>
|
||||
<location filename="../../NUSGet.py" line="349"/>
|
||||
<source>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 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 "Pakk installerbart arkiv" eller "Opprett dekryptert innhold". Disse alternativene er ikke tilgjenelige for titler uten billett. Bare kryptert innhold har blitt lagret.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="341"/>
|
||||
<location filename="../../NUSGet.py" line="351"/>
|
||||
<source>Unknown Error</source>
|
||||
<translation>Ukjent Feil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<location filename="../../NUSGet.py" line="352"/>
|
||||
<source>An Unknown Error has Occurred!</source>
|
||||
<translation>En ukjent feil har oppstått!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="344"/>
|
||||
<location filename="../../NUSGet.py" line="354"/>
|
||||
<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 på GitHub med detaljer om hva du prøvde å gjøre da denne feilen oppstod.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="363"/>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<source>Script Issues Occurred</source>
|
||||
<translation>Skriptfeil Oppstod</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="364"/>
|
||||
<location filename="../../NUSGet.py" line="374"/>
|
||||
<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="366"/>
|
||||
<location filename="../../NUSGet.py" line="376"/>
|
||||
<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="373"/>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<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 på 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="383"/>
|
||||
<location filename="../../NUSGet.py" line="393"/>
|
||||
<source>You enabled "Create decrypted contents" or "Pack installable archive", but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
|
||||
<translation>Du aktiverte "Opprett dekryptert innhold" eller "Pakk installerbart archive", 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="402"/>
|
||||
<location filename="../../NUSGet.py" line="412"/>
|
||||
<source>Script Download Failed</source>
|
||||
<translation>Skriptnedlasting Mislyktes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="403"/>
|
||||
<location filename="../../NUSGet.py" line="413"/>
|
||||
<source>Open NUS Script</source>
|
||||
<translation>Åpne NUS Skript</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="404"/>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<source>NUS Scripts (*.nus *.json)</source>
|
||||
<translation>NUS Skript (*.nus *.json)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<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="415"/>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<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="424"/>
|
||||
<location filename="../../NUSGet.py" line="434"/>
|
||||
<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="425"/>
|
||||
<location filename="../../NUSGet.py" line="435"/>
|
||||
<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>
|
||||
@@ -344,17 +354,17 @@ Titler er lastes ned til en mappe med navnet "NUSGet Downloads" i nedl
|
||||
<translation>Påfør patcher på IOS (gjelder kun WADer)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="192"/>
|
||||
<location filename="../../NUSGet.py" line="203"/>
|
||||
<source>NUSGet Update Available</source>
|
||||
<translation>NUSGet Oppdatering Tilgjengelig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="193"/>
|
||||
<location filename="../../NUSGet.py" line="204"/>
|
||||
<source>There's a newer version of NUSGet available!</source>
|
||||
<translation>Det finnes en nyere versjon av NUSGet tilgjengelig!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="52"/>
|
||||
<location filename="../../modules/core.py" line="54"/>
|
||||
<source>
|
||||
|
||||
Could not check for updates.</source>
|
||||
@@ -363,7 +373,7 @@ Could not check for updates.</source>
|
||||
Kunne ikke sjekke for oppdateringer.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="60"/>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<source>
|
||||
|
||||
There's a newer version of NUSGet available!</source>
|
||||
@@ -372,7 +382,7 @@ There's a newer version of NUSGet available!</source>
|
||||
Det finnes en nyere versjon av NUSGet tilgjengelig!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<location filename="../../modules/core.py" line="64"/>
|
||||
<source>
|
||||
|
||||
You're running the latest release of NUSGet.</source>
|
||||
|
||||
@@ -113,7 +113,17 @@
|
||||
<translation>Krypter tittelen på nytt ved hjelp av Wii Common Key</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="627"/>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="587"/>
|
||||
<source>App Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="609"/>
|
||||
<source>Check for updates on startup</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="663"/>
|
||||
<source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
@@ -166,7 +176,7 @@ Titler merket med en hake er fri og har en billett tilgjengelig, og kan dekrypte
|
||||
Titler er lastes ned til en mappe med navnet "NUSGet" i nedlastingsmappen din.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="98"/>
|
||||
<location filename="../../NUSGet.py" line="101"/>
|
||||
<source>NUSGet v{nusget_version}
|
||||
Developed by NinjaCheetah
|
||||
Powered by libWiiPy {libwiipy_version}
|
||||
@@ -189,152 +199,152 @@ Titler merket med en hake er fri og har en billett tilgjengelig, og kan dekrypte
|
||||
Titler er lastes ned til en mappe med navnet "NUSGet Downloads" i nedlastingsmappen din.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="286"/>
|
||||
<location filename="../../NUSGet.py" line="296"/>
|
||||
<source>No Output Selected</source>
|
||||
<translation>Ingen Utgang Valgt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="287"/>
|
||||
<location filename="../../NUSGet.py" line="297"/>
|
||||
<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="289"/>
|
||||
<location filename="../../NUSGet.py" line="299"/>
|
||||
<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="318"/>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<source>Invalid Title ID</source>
|
||||
<translation>Ugyldig Tittel ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="319"/>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<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="321"/>
|
||||
<location filename="../../NUSGet.py" line="331"/>
|
||||
<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 må 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="323"/>
|
||||
<location filename="../../NUSGet.py" line="333"/>
|
||||
<source>Title ID/Version Not Found</source>
|
||||
<translation>Tittel ID/Versjon Ikke Funnet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="324"/>
|
||||
<location filename="../../NUSGet.py" line="334"/>
|
||||
<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="326"/>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<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="328"/>
|
||||
<location filename="../../NUSGet.py" line="338"/>
|
||||
<source>Content Decryption Failed</source>
|
||||
<translation>Dekryptering av Innhold Mislyktes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<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="332"/>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<source>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 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 "Bruk lokale filer, hvis de finnes", kan du prøve å deaktivere dette alternativet før du prøver nedlastingen på nytt for å løse eventuelle problemer med lokale data.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="335"/>
|
||||
<location filename="../../NUSGet.py" line="345"/>
|
||||
<source>Ticket Not Available</source>
|
||||
<translation>Billett Ikke Tilgjengelig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<location filename="../../NUSGet.py" line="346"/>
|
||||
<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="339"/>
|
||||
<location filename="../../NUSGet.py" line="349"/>
|
||||
<source>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 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 "Pakk installerbart arkiv" eller "Opprett dekryptert innhold". Disse alternativene er ikke tilgjenelige for titler uten billett. Bare kryptert innhold har blitt lagret.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="341"/>
|
||||
<location filename="../../NUSGet.py" line="351"/>
|
||||
<source>Unknown Error</source>
|
||||
<translation>Ukjent Feil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<location filename="../../NUSGet.py" line="352"/>
|
||||
<source>An Unknown Error has Occurred!</source>
|
||||
<translation>En ukjent feil har oppstått!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="344"/>
|
||||
<location filename="../../NUSGet.py" line="354"/>
|
||||
<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 på GitHub med detaljer om hva du prøvde å gjøre da denne feilen oppstod.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="363"/>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<source>Script Issues Occurred</source>
|
||||
<translation>Skriptfeil Oppstod</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="364"/>
|
||||
<location filename="../../NUSGet.py" line="374"/>
|
||||
<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="366"/>
|
||||
<location filename="../../NUSGet.py" line="376"/>
|
||||
<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="373"/>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<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 på 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="383"/>
|
||||
<location filename="../../NUSGet.py" line="393"/>
|
||||
<source>You enabled "Create decrypted contents" or "Pack installable archive", but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
|
||||
<translation>Du aktiverte "Opprett dekryptert innhold" eller "Pakk installerbart archive", 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="402"/>
|
||||
<location filename="../../NUSGet.py" line="412"/>
|
||||
<source>Script Download Failed</source>
|
||||
<translation>Skriptnedlasting Mislyktes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="403"/>
|
||||
<location filename="../../NUSGet.py" line="413"/>
|
||||
<source>Open NUS Script</source>
|
||||
<translation>Åpne NUS Skript</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="404"/>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<source>NUS Scripts (*.nus *.json)</source>
|
||||
<translation>NUS Skript (*.nus *.json)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<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="415"/>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<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="424"/>
|
||||
<location filename="../../NUSGet.py" line="434"/>
|
||||
<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="425"/>
|
||||
<location filename="../../NUSGet.py" line="435"/>
|
||||
<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>
|
||||
@@ -344,17 +354,17 @@ Titler er lastes ned til en mappe med navnet "NUSGet Downloads" i nedl
|
||||
<translation>Påfør patcher på IOS (gjelder kun WADer)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="192"/>
|
||||
<location filename="../../NUSGet.py" line="203"/>
|
||||
<source>NUSGet Update Available</source>
|
||||
<translation>NUSGet Oppdatering Tilgjengelig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="193"/>
|
||||
<location filename="../../NUSGet.py" line="204"/>
|
||||
<source>There's a newer version of NUSGet available!</source>
|
||||
<translation>Det finnes en nyere versjon av NUSGet tilgjengelig!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="52"/>
|
||||
<location filename="../../modules/core.py" line="54"/>
|
||||
<source>
|
||||
|
||||
Could not check for updates.</source>
|
||||
@@ -363,7 +373,7 @@ Could not check for updates.</source>
|
||||
Kunne ikke sjekke for oppdateringer.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="60"/>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<source>
|
||||
|
||||
There's a newer version of NUSGet available!</source>
|
||||
@@ -372,7 +382,7 @@ There's a newer version of NUSGet available!</source>
|
||||
Det finnes en nyere versjon av NUSGet tilgjengelig!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<location filename="../../modules/core.py" line="64"/>
|
||||
<source>
|
||||
|
||||
You're running the latest release of NUSGet.</source>
|
||||
|
||||
@@ -26,7 +26,7 @@ Titlurile marcate cu bifă sunt gratuite și au un tichet disponibil și pot fi
|
||||
Titlurile vor fi descărcate într-un folder numit „NUSGet” în fișierul dvs. de download.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="98"/>
|
||||
<location filename="../../NUSGet.py" line="101"/>
|
||||
<source>NUSGet v{nusget_version}
|
||||
Developed by NinjaCheetah
|
||||
Powered by libWiiPy {libwiipy_version}
|
||||
@@ -49,162 +49,162 @@ Titlurile marcate cu bifă sunt gratuite și au un tichet disponibil și pot fi
|
||||
Titlurile vor fi descărcate într-un folder numit „NUSGet Downloads” în fișierul dvs. de download.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="192"/>
|
||||
<location filename="../../NUSGet.py" line="203"/>
|
||||
<source>NUSGet Update Available</source>
|
||||
<translation>Actualizare NUSGet disponibilă</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="193"/>
|
||||
<location filename="../../NUSGet.py" line="204"/>
|
||||
<source>There's a newer version of NUSGet available!</source>
|
||||
<translation>O nouă versiune NUSGet este disponibilă!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="286"/>
|
||||
<location filename="../../NUSGet.py" line="296"/>
|
||||
<source>No Output Selected</source>
|
||||
<translation>Nu s-a selectat un output</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="287"/>
|
||||
<location filename="../../NUSGet.py" line="297"/>
|
||||
<source>You have not selected any format to output the data in!</source>
|
||||
<translation>Nu ați selectat niciun format de ieșire!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="289"/>
|
||||
<location filename="../../NUSGet.py" line="299"/>
|
||||
<source>Please select at least one option for how you would like the download to be saved.</source>
|
||||
<translation>Vă rugăm să selectați cel puțin o opțiune pentru modul în care doriți să salvați datele descărcate.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="318"/>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<source>Invalid Title ID</source>
|
||||
<translation>Title ID invalid</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="319"/>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<source>The Title ID you have entered is not in a valid format!</source>
|
||||
<translation>Title ID pe care l-ați introdus este invalid!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="321"/>
|
||||
<location filename="../../NUSGet.py" line="331"/>
|
||||
<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 să conțină exact 16 cifre și/sau litere. Vă rugăm introduceți un Title ID corect, sau selectați unul din meniul din stânga.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="323"/>
|
||||
<location filename="../../NUSGet.py" line="333"/>
|
||||
<source>Title ID/Version Not Found</source>
|
||||
<translation>Title ID/Versiunea nu a fost găsită</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="324"/>
|
||||
<location filename="../../NUSGet.py" line="334"/>
|
||||
<source>No title with the provided Title ID or version could be found!</source>
|
||||
<translation>Niciun titlu care să corespundă cu Title ID-ul sau cu versiunea introdusă nu a fost găsit!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="326"/>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<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>Vă rugăm să vă asigurați că ați introdus un Title ID valid sau ați selectat unul din baza de date cu titluri, și că versiunea introdusă există pentru titlul pe care încercați să îl descărcați.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="328"/>
|
||||
<location filename="../../NUSGet.py" line="338"/>
|
||||
<source>Content Decryption Failed</source>
|
||||
<translation>Decriptarea conținutului a eșuat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="329"/>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="332"/>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<source>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 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 să debifați această opțiune înainte de a descărca din nou pentru a rezolva potențiale probleme cu datele existente local.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="335"/>
|
||||
<location filename="../../NUSGet.py" line="345"/>
|
||||
<source>Ticket Not Available</source>
|
||||
<translation>Ticket-ul nu este valabil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="336"/>
|
||||
<location filename="../../NUSGet.py" line="346"/>
|
||||
<source>No Ticket is Available for the Requested Title!</source>
|
||||
<translation>Niciun Ticket nu este valabil pentru titlul dorit!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="339"/>
|
||||
<location filename="../../NUSGet.py" line="349"/>
|
||||
<source>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 available for titles without a ticket. Only encrypted contents have been saved.</source>
|
||||
<translation>Nu se poate descărca un tichet pentru titlul cerut, dar ați selectat „Împachetați arhiva instalabilă” sau „Creați conținut decriptat”. Aceste opțiuni nu sunt valabile pentru titluri fărătichet. Doar conținuturile criptate au fost salvate.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="341"/>
|
||||
<location filename="../../NUSGet.py" line="351"/>
|
||||
<source>Unknown Error</source>
|
||||
<translation>Eroare necunoscută</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="342"/>
|
||||
<location filename="../../NUSGet.py" line="352"/>
|
||||
<source>An Unknown Error has Occurred!</source>
|
||||
<translation>S-a produs o eroare necunoscută!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="344"/>
|
||||
<location filename="../../NUSGet.py" line="354"/>
|
||||
<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>Vă rugăm încercați din nou. Dacă problema persistă, vă rugăm să deschideți un issue pe GitHub în care să explicați ce ați încercat să faceți atunci când această eroare a apărut.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="363"/>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<source>Script Issues Occurred</source>
|
||||
<translation>Au apărut probleme cu scriptul</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="364"/>
|
||||
<location filename="../../NUSGet.py" line="374"/>
|
||||
<source>Some issues occurred while running the download script.</source>
|
||||
<translation>Au apărut câteva probleme la rularea scriptului descărcat.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="366"/>
|
||||
<location filename="../../NUSGet.py" line="376"/>
|
||||
<source>Check the log for more details about what issues were encountered.</source>
|
||||
<translation>Verificați logurile pentru mai multe detalii despre problemele întâmpinate.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="373"/>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<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. Vă rugăm să vă asigurați că Title ID și versiunea listate în script sunt valide.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="383"/>
|
||||
<location filename="../../NUSGet.py" line="393"/>
|
||||
<source>You enabled "Create decrypted contents" or "Pack installable archive", but the following titles in the script do not have tickets available. If enabled, encrypted contents were still downloaded.</source>
|
||||
<translation>Ați activat „Creare conținut decriptat” sau „Împachetați arhiva instalabilă”, dar următoarele titluri în script nu au tichete valabile.În acest caz, conținuturile encriptate au fost oricum descărcate.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="402"/>
|
||||
<location filename="../../NUSGet.py" line="412"/>
|
||||
<source>Script Download Failed</source>
|
||||
<translation>Descărcarea scriptului a eșuat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="403"/>
|
||||
<location filename="../../NUSGet.py" line="413"/>
|
||||
<source>Open NUS Script</source>
|
||||
<translation>Deschideți script NUS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="404"/>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<source>NUS Scripts (*.nus *.json)</source>
|
||||
<translation>Scripturi NUS (*.nus *.json)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="414"/>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<source>An error occurred while parsing the script file!</source>
|
||||
<translation>A apărut o eroare la parssarea acestui fișier script!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="415"/>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<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}. Vă rugăm verificați scriptul și încercați din nou.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="424"/>
|
||||
<location filename="../../NUSGet.py" line="434"/>
|
||||
<source>An error occurred while parsing Title IDs!</source>
|
||||
<translation>A apărut o eroare la procesarea Title ID-urilor!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../NUSGet.py" line="425"/>
|
||||
<location filename="../../NUSGet.py" line="435"/>
|
||||
<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>
|
||||
</message>
|
||||
@@ -335,7 +335,17 @@ Titlurile vor fi descărcate într-un folder numit „NUSGet Downloads” în fi
|
||||
<translation>Re-encriptați titlul folosind cheia comună Wii</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="627"/>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="587"/>
|
||||
<source>App Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="609"/>
|
||||
<source>Check for updates on startup</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../qt/ui/MainMenu.ui" line="663"/>
|
||||
<source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
@@ -347,7 +357,7 @@ li.checked::marker { content: "\2612"; }
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="52"/>
|
||||
<location filename="../../modules/core.py" line="54"/>
|
||||
<source>
|
||||
|
||||
Could not check for updates.</source>
|
||||
@@ -356,7 +366,7 @@ Could not check for updates.</source>
|
||||
Nu s-a putut verifica dacă există actualizări.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="60"/>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<source>
|
||||
|
||||
There's a newer version of NUSGet available!</source>
|
||||
@@ -365,7 +375,7 @@ There's a newer version of NUSGet available!</source>
|
||||
O nouă versiune de NUSGet este valabilă!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../modules/core.py" line="62"/>
|
||||
<location filename="../../modules/core.py" line="64"/>
|
||||
<source>
|
||||
|
||||
You're running the latest release of NUSGet.</source>
|
||||
|
||||
Reference in New Issue
Block a user