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 @@ -