diff --git a/assets/Locales.md b/assets/Locales.md
index 39b7e4d46..7968c5b72 100644
--- a/assets/Locales.md
+++ b/assets/Locales.md
@@ -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": "滑鼠直接存取"
}
},
{
diff --git a/assets/Locales/Amiibo.json b/assets/Locales/Amiibo.json
index 42c4facf8..71197cab7 100644
--- a/assets/Locales/Amiibo.json
+++ b/assets/Locales/Amiibo.json
@@ -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": {
diff --git a/assets/Locales/Firmware.json b/assets/Locales/Firmware.json
index a5ddfea0f..0990b4da4 100644
--- a/assets/Locales/Firmware.json
+++ b/assets/Locales/Firmware.json
@@ -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 封存檔來安裝韌體"
}
},
{
diff --git a/assets/Locales/Keys.json b/assets/Locales/Keys.json
index 06ccc3f23..9a7daf8b3 100644
--- a/assets/Locales/Keys.json
+++ b/assets/Locales/Keys.json
@@ -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 檔案"
}
},
{
diff --git a/assets/Locales/XCITrimmer.json b/assets/Locales/XCITrimmer.json
index 8cbb73f2d..b0093c608 100644
--- a/assets/Locales/XCITrimmer.json
+++ b/assets/Locales/XCITrimmer.json
@@ -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 l’espace disponible du XCI pour économiser de l’espace 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 l’espace inutilisé dans le XCI afin d’économiser de l’espace 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 中的未使用空間以節省磁碟空間。"
}
},
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/AppletManager.cs b/src/Ryujinx.HLE/HOS/Applets/AppletManager.cs
index 5bda957bc..618a3efc4 100644
--- a/src/Ryujinx.HLE/HOS/Applets/AppletManager.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/AppletManager.cs
@@ -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);
diff --git a/src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs
index 6e77fe931..5700d11e1 100644
--- a/src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs
@@ -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);
}
diff --git a/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml b/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml
index c6dd130d9..7daee9789 100644
--- a/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml
+++ b/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml
@@ -50,17 +50,18 @@
VerticalAlignment="Center"
IsVisible="{Binding EnableNonGameRunningControls}"
Text="{ext:Locale StatusBarGamesLoaded}" />
+
-
+
@@ -305,7 +306,7 @@
-