Changes and improvements

This commit is contained in:
_Neo_ 2026-01-20 20:58:22 +02:00
parent 48ffbe23e3
commit b5f002db9b
8 changed files with 142 additions and 108 deletions

View file

@ -6,7 +6,7 @@ Each json file holds the locales for a specific part of the emulator, e.g. the S
## Languages
in the `/assets/` folder you will find the `Languages.json` file, which defines all the languages supported by the emulator.
The file includes a table of the langauge codes and their langauge names.
The file includes a table of the language codes and their language names.
#Example of the format for Languages.json
{
@ -38,12 +38,12 @@ If no json file exists for the specific part of the emulator you're working on,
{
"Locales": [
{
"ID": "MenuBarActionsOpenMiiEditor",
"ID": "SettingsTabInputDirectMouseAccess",
"Translations": {
"ar_SA": "",
"en_US": "Mii Editor",
"ar_SA": "الوصول المباشر للفأرة",
"en_US": "Direct Mouse Access",
...
"zh_TW": "Mii 編輯器"
"zh_TW": "滑鼠直接存取"
}
},
{

View file

@ -228,51 +228,51 @@
{
"ID": "OptionsUsRandomTagLabel",
"Translations": {
"ar_SA": "هاك: UUID عشوائي للتاج",
"de_DE": "Hack: Zufällige Tag UUID",
"el_GR": "Hack: Τυχαίο UUID Tag",
"en_US": "Hack: Random UUID Tag",
"es_ES": "Hack: UUID Etiqueta Aleatorio",
"fr_FR": "Hack : UUID Tag Aléatoire",
"he_IL": "האצה: UUID אקראי tag",
"it_IT": "Espediente: UUID tag casuale",
"ja_JP": "ハック: ランダムタグ UUID",
"ko_KR": "핵 : 무작위 태그 UUID",
"no_NO": "Hack: Tilfeldig tag UUID",
"pl_PL": "Hack: Losowy tag UUID",
"pt_BR": "Hack: UUID tag Aleatório",
"ru_RU": "Хак: Случайный UUID тег",
"sv_SE": "Hack: Slumpmässig tagg UUID",
"th_TH": "แฮ็ค: UUID แท็กสุ่ม",
"tr_TR": "Hack: Rastgele UUID tag",
"uk_UA": "Хак: Випадковий UUID тег",
"zh_CN": "破解:随机 UUID 标签",
"zh_TW": "破解:隨機 UUID 標籤"
"ar_SA": "هاك: UUID عشوائي",
"de_DE": "Hack: Zufällige UUID",
"el_GR": "Hack: Τυχαίο UUID",
"en_US": "Hack: Random UUID",
"es_ES": "Hack: UUID aleatorio",
"fr_FR": "Hack : UUID aléatoire",
"he_IL": "האק: UUID אקראי",
"it_IT": "Hack: UUID casuale",
"ja_JP": "ハック: ランダム UUID",
"ko_KR": "핵: 무작위 UUID",
"no_NO": "Hack: Tilfeldig UUID",
"pl_PL": "Hack: Losowy UUID",
"pt_BR": "Hack: UUID aleatório",
"ru_RU": "Хак: Случайный UUID",
"sv_SE": "Hack: Slumpmässig UUID",
"th_TH": "แฮ็ค: UUID สุ่ม",
"tr_TR": "Hack: Rastgele UUID",
"uk_UA": "Хак: Випадковий UUID",
"zh_CN": "Hack随机 UUID",
"zh_TW": "Hack隨機 UUID"
}
},
{
"ID": "CabinetDialog",
"Translations": {
"ar_SA": "",
"de_DE": "",
"el_GR": "",
"ar_SA": "أدخل اسم أميبو الجديد",
"de_DE": "Gib den neuen Namen deines Amiibo ein",
"el_GR": "Εισαγάγετε το νέο όνομα του Amiibo σας",
"en_US": "Enter your Amiibo's new name",
"es_ES": "Ingresa el nuevo nombre de tu Amiibo",
"fr_FR": "Entrer le nouveau nom de votre Amiibo",
"he_IL": "",
"fr_FR": "Entrez le nouveau nom de votre Amiibo",
"he_IL": "הזן את השם החדש של ה-Amiibo שלך",
"it_IT": "Inserisci il nuovo nome del tuo Amiibo",
"ja_JP": "",
"ko_KR": "Amiibo의 새 이름 입력하기",
"no_NO": "Skriv inn Amiiboens nye navn",
"pl_PL": "",
"ja_JP": "Amiibo の新しい名前を入力してください",
"ko_KR": "Amiibo의 새 이름을 입력하세요",
"no_NO": "Skriv inn det nye navnet til Amiiboen din",
"pl_PL": "Wprowadź nową nazwę swojego Amiibo",
"pt_BR": "Digite o novo nome do seu Amiibo",
"ru_RU": "Введите новое имя вашего Amiibo",
"sv_SE": "Ange nya namnet för din Amiibo",
"sv_SE": "Ange det nya namnet för din Amiibo",
"th_TH": "กรุณาใส่ชื่อใหม่ของ Amiibo ของคุณ",
"tr_TR": "",
"uk_UA": "Вкажіть Ваше нове ім'я Amiibo",
"tr_TR": "Amiibo'nuzun yeni adını girin",
"uk_UA": "Введіть нове ім'я вашого Amiibo",
"zh_CN": "输入你的 Amiibo 的新名字",
"zh_TW": "輸入 Amiibo 新名稱"
"zh_TW": "輸入你的 Amiibo 新名稱"
}
},
{
@ -400,6 +400,31 @@
"zh_TW": "用途:\n"
}
},
{
"ID": "UsageWritable",
"Translations": {
"ar_SA": "الاستخدام (يمكنه حفظ البيانات):\n",
"de_DE": "Nutzung (Kann Daten speichern):\n",
"el_GR": "Χρήση (Μπορεί να αποθηκεύσει δεδομένα):\n",
"en_US": "Usage (Can Save Data):\n",
"es_ES": "Uso (Puede guardar datos):\n",
"fr_FR": "Utilisation (Peut enregistrer des données) :\n",
"he_IL": "שימוש (יכול לשמור נתונים):\n",
"it_IT": "Utilizzo (Può salvare dati):\n",
"ja_JP": "使用法(データを保存できます):\n",
"ko_KR": "사용법 (데이터 저장 가능):\n",
"no_NO": "Bruk (Kan lagre data):\n",
"pl_PL": "Użycie (Może zapisywać dane):\n",
"pt_BR": "Uso (Pode salvar dados):\n",
"ru_RU": "Применение (Может сохранять данные):\n",
"sv_SE": "Användning (Kan spara data):\n",
"th_TH": "การใช้งาน (สามารถบันทึกข้อมูลได้):\n",
"tr_TR": "Kullanım (Veri kaydedebilir):\n",
"uk_UA": "Використання (Може зберігати дані):\n",
"zh_CN": "用法(可保存数据):\n",
"zh_TW": "用途(可儲存資料):\n"
}
},
{
"ID": "Unknown",
"Translations": {

View file

@ -78,26 +78,26 @@
{
"ID": "InstallFromFile_DialogTitle",
"Translations": {
"ar_SA": "اختر ملف .XCI أو .ZIP لتثبيت الكوشحة منه",
"de_DE": "Wählen Sie entweder eine .XCI- oder .ZIP-Datei aus, um die Firmware zu installieren",
"el_GR": "Επιλέξτε είτε ένα αρχείο .XCI είτε ένα αρχείο .ZIP για να εγκαταστήσετε το firmware",
"en_US": "Choose either an .XCI or a .ZIP file to install firmware from",
"es_ES": "Elige un archivo .XCI o .ZIP para instalar el firmware",
"fr_FR": "Choisissez un fichier .XCI ou .ZIP pour installer le firmware",
"he_IL": "בחר קובץ .XCI או .ZIP להתקנת הקושחה ממנו",
"it_IT": "Scegli un file .XCI o .ZIP per installare il firmware",
"ja_JP": ".XCI または .ZIP ファイルを選択してファームウェアをインストール",
"ko_KR": "펌웨어를 설치할 .XCI 또는 .ZIP 파일을 선택하세요",
"no_NO": "Velg enten en .XCI- eller .ZIP-fil for å installere firmware fra",
"pl_PL": "Wybierz plik .XCI lub .ZIP, z którego chcesz zainstalować firmware",
"pt_BR": "Escolha um arquivo .XCI ou .ZIP para instalar o firmware",
"ru_RU": "Выберите .XCI или .ZIP файл для установки прошивки",
"sv_SE": "Välj antingen en .XCI- eller .ZIP-fil för att installera firmware",
"th_TH": "เลือกไฟล์ .XCI หรือ .ZIP เพื่อติดตั้งเฟิร์มแวร์จากนั้น",
"tr_TR": ".XCI veya .ZIP dosyasından firmware yüklemek için bir dosya seçin",
"uk_UA": "Виберіть файл .XCI або .ZIP для встановлення прошивки",
"zh_CN": "选择一个 .XCI 或 .ZIP 文件来安装固件",
"zh_TW": "選擇一個 .XCI 或 .ZIP 檔來安裝韌體"
"ar_SA": "اختر ملف .XCI أو أرشيف .ZIP لتثبيت البرنامج الثابت منه",
"de_DE": "Wählen Sie eine .XCI-Datei oder ein .ZIP-Archiv aus, um die Firmware zu installieren",
"el_GR": "Επιλέξτε ένα αρχείο .XCI ή ένα αρχείο .ZIP για να εγκαταστήσετε το υλικολογισμικό",
"en_US": "Choose an .XCI file or a .ZIP archive to install firmware from",
"es_ES": "Elige un archivo .XCI o un archivo .ZIP para instalar el firmware",
"fr_FR": "Choisissez un fichier .XCI ou une archive .ZIP pour installer le firmware",
"he_IL": "בחר קובץ .XCI או ארכיון .ZIP להתקנת הקושחה ממנו",
"it_IT": "Scegli un file .XCI o un archivio .ZIP per installare il firmware",
"ja_JP": "ファームウェアをインストールするために .XCI ファイルまたは .ZIP アーカイブを選択",
"ko_KR": "펌웨어를 설치할 .XCI 파일 또는 .ZIP 아카이브를 선택하세요",
"no_NO": "Velg en .XCI-fil eller et .ZIP-arkiv for å installere firmware fra",
"pl_PL": "Wybierz plik .XCI lub archiwum .ZIP, z którego chcesz zainstalować firmware",
"pt_BR": "Escolha um arquivo .XCI ou um arquivo .ZIP para instalar o firmware",
"ru_RU": "Выберите файл .XCI или архив .ZIP для установки прошивки",
"sv_SE": "Välj en .XCI-fil eller ett .ZIP-arkiv för att installera firmware",
"th_TH": "เลือกไฟล์ .XCI หรือไฟล์เก็บถาวร .ZIP เพื่อติดตั้งเฟิร์มแวร์จาก",
"tr_TR": "Firmware yüklemek için bir .XCI dosyası veya .ZIP arşivi seçin",
"uk_UA": "Виберіть файл .XCI або архів .ZIP для встановлення прошивки",
"zh_CN": "选择一个 .XCI 文件或 .ZIP 存档来安装固件",
"zh_TW": "選擇一個 .XCI 檔案或 .ZIP 封存檔來安裝韌體"
}
},
{

View file

@ -78,26 +78,26 @@
{
"ID": "InstallFromFile_DialogTitle",
"Translations": {
"ar_SA": "اختر ملف .KEYS لتثبيت المفاتيح منه",
"de_DE": "Wählen Sie eine .KEYS-Datei aus, um die Schlüssel zu installieren",
"el_GR": "Επιλέξτε ένα αρχείο .KEYS για να εγκαταστήσετε τα κλειδιά",
"en_US": "Choose a .KEYS file to install keys from",
"es_ES": "Elige un archivo .KEYS para instalar las claves",
"fr_FR": "Choisissez un fichier .KEYS pour installer les clés",
"he_IL": "בחר קובץ .KEYS להתקנת המפתחות ממנו",
"it_IT": "Scegli un file .KEYS per installare le chiavi",
"ja_JP": ".KEYS ファイルを選択してキーをインストール",
"ko_KR": ".KEYS 파일을 선택하여 키를 설치하세요",
"no_NO": "Velg en .KEYS-fil for å installere nøklene fra",
"pl_PL": "Wybierz plik .KEYS, aby zainstalować klucze",
"pt_BR": "Escolha um arquivo .KEYS para instalar as chaves",
"ru_RU": "Выберите файл .KEYS для установки ключей",
"sv_SE": "Välj en .KEYS-fil för att installera nycklar från",
"th_TH": "เลือกไฟล์ .KEYS เพื่อติดตั้งคีย์จาก",
"tr_TR": ".KEYS dosyasını seçin ve anahtarları yükleyin",
"uk_UA": "Виберіть файл .KEYS для встановлення ключів",
"zh_CN": "选择一个 .KEYS 文件来安装密钥",
"zh_TW": "選擇一個 .KEYS 檔案來安裝密鑰"
"ar_SA": "اختر ملف .KEYS",
"de_DE": "Wählen Sie eine .KEYS-Datei aus",
"el_GR": "Επιλέξτε ένα αρχείο .KEYS",
"en_US": "Choose a .KEYS file",
"es_ES": "Elige un archivo .KEYS",
"fr_FR": "Choisissez un fichier .KEYS",
"he_IL": "בחר קובץ .KEYS",
"it_IT": "Scegli un file .KEYS",
"ja_JP": ".KEYS ファイルを選択",
"ko_KR": ".KEYS 파일을 선택하세요",
"no_NO": "Velg en .KEYS-fil",
"pl_PL": "Wybierz plik .KEYS",
"pt_BR": "Escolha um arquivo .KEYS",
"ru_RU": "Выберите файл .KEYS",
"sv_SE": "Välj en .KEYS-fil",
"th_TH": "เลือกไฟล์ .KEYS",
"tr_TR": ".KEYS dosyasını seçin",
"uk_UA": "Виберіть файл .KEYS",
"zh_CN": "选择一个 .KEYS 文件",
"zh_TW": "選擇一個 .KEYS 檔案"
}
},
{

View file

@ -253,26 +253,26 @@
{
"ID": "TrimFileDialog_PrimaryText",
"Translations": {
"ar_SA": تم تقليم المساحة المتاحة لـ XCI لحفظ مساحة القرص.",
"de_DE": "Trimmt verfügbaren Speicherplatz der XCI, um Festplattenspeicher zu sparen.",
"el_GR": "Τρίβει τον διαθέσιμο χώρο του XCI για να εξοικονομήσει χώρο στο δίσκο.",
"en_US": "Trims available XCI space to save disk space.",
"es_ES": "Recorta el espacio disponible del XCI para ahorrar espacio en disco.",
"fr_FR": "Réduit lespace disponible du XCI pour économiser de lespace disque.",
"he_IL": צמצם את שטח ה-XCI הזמין כדי לחסוך מקום בדיסק.",
"it_IT": "Trima lo spazio disponibile dell'XCI per risparmiare spazio su disco.",
"ja_JP": "XCIの空き領域をトリムしてディスクスペースを節約します。",
"ko_KR": "XCI의 사용 가능한 공간을 트리밍하여 디스크 공간을 절약합니다.",
"no_NO": "Kutter tilgjengelig plass i XCI for å spare diskplass.",
"pl_PL": "Przycina dostępne miejsce w XCI, aby zaoszczędzić miejsce na dysku.",
"pt_BR": "Corta o espaço disponível do XCI para economizar espaço no disco.",
"ru_RU": "Обрезает доступное пространство XCI для экономии места на диске.",
"sv_SE": "Trimmar tillgängligt utrymme i XCI för att spara diskutrymme.",
"th_TH": "ตัดแต่งพื้นที่ XCI ที่มีอยู่เพื่อประหยัดพื้นที่ดิสก์.",
"tr_TR": "Mevcut XCI alanını kırparak disk alanı tasarrufu sağlar.",
"uk_UA": "Обрізає вільне місце XCI для економії місця на диску.",
"zh_CN": "修剪XCI的可用空间以节省磁盘空间。",
"zh_TW": "修剪XCI的可用空間以節省儲存空間。"
"ar_SA": قوم بتقليص المساحة غير المستخدمة في XCI لتوفير مساحة القرص.",
"de_DE": "Trimmt ungenutzten Speicherplatz in der XCI, um Speicherplatz zu sparen.",
"el_GR": "Περικόπτει τον μη χρησιμοποιούμενο χώρο στο XCI για εξοικονόμηση χώρου στον δίσκο.",
"en_US": "Trims unused space in the XCI to save disk space.",
"es_ES": "Recorta el espacio no utilizado en el XCI para ahorrar espacio en disco.",
"fr_FR": "Supprime lespace inutilisé dans le XCI afin déconomiser de lespace disque.",
"he_IL": קצץ שטח לא בשימוש ב-XCI כדי לחסוך מקום בדיסק.",
"it_IT": "Rimuove lo spazio inutilizzato nell'XCI per risparmiare spazio su disco.",
"ja_JP": "XCI内の未使用領域をトリムしてディスク容量を節約します。",
"ko_KR": "XCI의 사용되지 않는 공간을 트리밍하여 디스크 공간을 절약합니다.",
"no_NO": "Fjerner ubrukt plass i XCI for å spare diskplass.",
"pl_PL": "Przycina nieużywane miejsce w XCI, aby zaoszczędzić miejsce na dysku.",
"pt_BR": "Remove o espaço não utilizado no XCI para economizar espaço em disco.",
"ru_RU": "Обрезает неиспользуемое пространство в XCI для экономии места на диске.",
"sv_SE": "Trimmar oanvänt utrymme i XCI för att spara diskutrymme.",
"th_TH": "ตัดแต่งพื้นที่ที่ม่ได้ใช้งานใน XCI เพื่อประหยัดพื้นที่ดิสก์",
"tr_TR": "Disk alanından tasarruf etmek için XCI'deki kullanılmayan alanı kırpar.",
"uk_UA": "Обрізає невикористаний простір у XCI для економії місця на диску.",
"zh_CN": "修剪 XCI 中的未使用空间以节省磁盘空间。",
"zh_TW": "修剪 XCI 中的未使用空間以節省磁碟空間。"
}
},
{

View file

@ -26,7 +26,7 @@ namespace Ryujinx.HLE.HOS.Applets
case AppletId.LibAppletOff:
return new BrowserApplet();
case AppletId.MiiEdit:
Logger.Warning?.Print(LogClass.Application, $"Please use the MiiEdit inside File/Open Applet");
Logger.Warning?.Print(LogClass.Application, $"Please use the Mii Editor inside Actions/Tools");
return new DummyApplet(system);
case AppletId.Cabinet:
return new CabinetApplet(system);

View file

@ -431,6 +431,7 @@ namespace Ryujinx.Ava.UI.ViewModels
string imageUrl = selected.Image;
StringBuilder usageStringBuilder = new();
bool writable = false;
foreach (var game in selected.GamesSwitch)
{
@ -439,6 +440,9 @@ namespace Ryujinx.Ava.UI.ViewModels
foreach (var usageItem in game.AmiiboUsage)
{
usageStringBuilder.Append($"{Environment.NewLine}- {usageItem.Usage.Replace("/", Environment.NewLine + "-")}");
if (usageItem.Write)
writable = true;
}
}
}
@ -448,7 +452,11 @@ namespace Ryujinx.Ava.UI.ViewModels
usageStringBuilder.Append($"{LocaleManager.Instance[LocaleKeys.Amiibo_Unknown]}.");
}
Usage = $"{LocaleManager.Instance[LocaleKeys.Amiibo_Usage]}{usageStringBuilder}";
Usage =
(writable
? $"{LocaleManager.Instance[LocaleKeys.Amiibo_UsageWritable]}"
: $"{LocaleManager.Instance[LocaleKeys.Amiibo_Usage]}")
+ usageStringBuilder;
_ = UpdateAmiiboPreview(imageUrl);
}

View file

@ -50,17 +50,18 @@
VerticalAlignment="Center"
IsVisible="{Binding EnableNonGameRunningControls}"
Text="{ext:Locale StatusBarGamesLoaded}" />
<controls:MiniVerticalSeparator Grid.Column="2" IsVisible="{Binding StatusBarProgressStatusVisible}" />
<TextBlock
Name="StatusBarProgressStatus"
Grid.Column="2"
Grid.Column="3"
MinWidth="200"
Margin="10,0,5,0"
Margin="5,0,5,0"
VerticalAlignment="Center"
IsVisible="{Binding StatusBarProgressStatusVisible}"
Text="{Binding StatusBarProgressStatusText}" />
<ProgressBar
Name="LoadProgressBar"
Grid.Column="3"
Grid.Column="4"
MinWidth="200"
Height="6"
VerticalAlignment="Center"
@ -69,9 +70,9 @@
IsVisible="{Binding StatusBarVisible}"
Maximum="{Binding StatusBarProgressMaximum}"
Value="{Binding StatusBarProgressValue}" />
<controls:MiniVerticalSeparator Grid.Column="4" IsVisible="{Binding ShowTotalTimePlayed}" />
<controls:MiniVerticalSeparator Grid.Column="5" IsVisible="{Binding ShowTotalTimePlayed}" />
<TextBlock
Grid.Column="5"
Grid.Column="6"
Margin="5,0,5,0"
VerticalAlignment="Center"
IsVisible="{Binding ShowTotalTimePlayed}"
@ -267,7 +268,7 @@
</StackPanel>
<StackPanel
Grid.Column="3"
Margin="0, 0, 5, 0"
Margin="0,0,5,0"
IsVisible="{Binding IsGameRunning}"
VerticalAlignment="Center"
Orientation="Horizontal">
@ -305,7 +306,7 @@
<Binding Path="UpdateAvailable" />
</MultiBinding>
</StackPanel.IsVisible>
<Button Margin="0, 0, 5, -2"
<Button Margin="0,0,5,-2"
Command="{Binding UpdateCommand}"
Background="{DynamicResource SystemAccentColor}">
<TextBlock
@ -326,7 +327,7 @@
<controls:MiniVerticalSeparator IsVisible="{Binding IsGameRunning}" />
<TextBlock
Name="FirmwareStatus"
Margin="5, 0, 0, 0"
Margin="5,0,0,0"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Text="{ext:Locale Firmware_StatusBar_Version}" />