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 ## Languages
in the `/assets/` folder you will find the `Languages.json` file, which defines all the languages supported by the emulator. 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 #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": [ "Locales": [
{ {
"ID": "MenuBarActionsOpenMiiEditor", "ID": "SettingsTabInputDirectMouseAccess",
"Translations": { "Translations": {
"ar_SA": "", "ar_SA": "الوصول المباشر للفأرة",
"en_US": "Mii Editor", "en_US": "Direct Mouse Access",
... ...
"zh_TW": "Mii 編輯器" "zh_TW": "滑鼠直接存取"
} }
}, },
{ {

View File

@ -228,51 +228,51 @@
{ {
"ID": "OptionsUsRandomTagLabel", "ID": "OptionsUsRandomTagLabel",
"Translations": { "Translations": {
"ar_SA": "هاك: UUID عشوائي للتاج", "ar_SA": "هاك: UUID عشوائي",
"de_DE": "Hack: Zufällige Tag UUID", "de_DE": "Hack: Zufällige UUID",
"el_GR": "Hack: Τυχαίο UUID Tag", "el_GR": "Hack: Τυχαίο UUID",
"en_US": "Hack: Random UUID Tag", "en_US": "Hack: Random UUID",
"es_ES": "Hack: UUID Etiqueta Aleatorio", "es_ES": "Hack: UUID aleatorio",
"fr_FR": "Hack : UUID Tag Aléatoire", "fr_FR": "Hack : UUID aléatoire",
"he_IL": "האצה: UUID אקראי tag", "he_IL": "האק: UUID אקראי",
"it_IT": "Espediente: UUID tag casuale", "it_IT": "Hack: UUID casuale",
"ja_JP": "ハック: ランダムタグ UUID", "ja_JP": "ハック: ランダム UUID",
"ko_KR": "핵 : 무작위 태그 UUID", "ko_KR": "핵: 무작위 UUID",
"no_NO": "Hack: Tilfeldig tag UUID", "no_NO": "Hack: Tilfeldig UUID",
"pl_PL": "Hack: Losowy tag UUID", "pl_PL": "Hack: Losowy UUID",
"pt_BR": "Hack: UUID tag Aleatório", "pt_BR": "Hack: UUID aleatório",
"ru_RU": "Хак: Случайный UUID тег", "ru_RU": "Хак: Случайный UUID",
"sv_SE": "Hack: Slumpmässig tagg UUID", "sv_SE": "Hack: Slumpmässig UUID",
"th_TH": "แฮ็ค: UUID แท็กสุ่ม", "th_TH": "แฮ็ค: UUID สุ่ม",
"tr_TR": "Hack: Rastgele UUID tag", "tr_TR": "Hack: Rastgele UUID",
"uk_UA": "Хак: Випадковий UUID тег", "uk_UA": "Хак: Випадковий UUID",
"zh_CN": "破解:随机 UUID 标签", "zh_CN": "Hack随机 UUID",
"zh_TW": "破解:隨機 UUID 標籤" "zh_TW": "Hack隨機 UUID"
} }
}, },
{ {
"ID": "CabinetDialog", "ID": "CabinetDialog",
"Translations": { "Translations": {
"ar_SA": "", "ar_SA": "أدخل اسم أميبو الجديد",
"de_DE": "", "de_DE": "Gib den neuen Namen deines Amiibo ein",
"el_GR": "", "el_GR": "Εισαγάγετε το νέο όνομα του Amiibo σας",
"en_US": "Enter your Amiibo's new name", "en_US": "Enter your Amiibo's new name",
"es_ES": "Ingresa el nuevo nombre de tu Amiibo", "es_ES": "Ingresa el nuevo nombre de tu Amiibo",
"fr_FR": "Entrer le nouveau nom de votre Amiibo", "fr_FR": "Entrez le nouveau nom de votre Amiibo",
"he_IL": "", "he_IL": "הזן את השם החדש של ה-Amiibo שלך",
"it_IT": "Inserisci il nuovo nome del tuo Amiibo", "it_IT": "Inserisci il nuovo nome del tuo Amiibo",
"ja_JP": "", "ja_JP": "Amiibo の新しい名前を入力してください",
"ko_KR": "Amiibo의 새 이름 입력하기", "ko_KR": "Amiibo의 새 이름을 입력하세요",
"no_NO": "Skriv inn Amiiboens nye navn", "no_NO": "Skriv inn det nye navnet til Amiiboen din",
"pl_PL": "", "pl_PL": "Wprowadź nową nazwę swojego Amiibo",
"pt_BR": "Digite o novo nome do seu Amiibo", "pt_BR": "Digite o novo nome do seu Amiibo",
"ru_RU": "Введите новое имя вашего 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 ของคุณ", "th_TH": "กรุณาใส่ชื่อใหม่ของ Amiibo ของคุณ",
"tr_TR": "", "tr_TR": "Amiibo'nuzun yeni adını girin",
"uk_UA": "Вкажіть Ваше нове ім'я Amiibo", "uk_UA": "Введіть нове ім'я вашого Amiibo",
"zh_CN": "输入你的 Amiibo 的新名字", "zh_CN": "输入你的 Amiibo 的新名字",
"zh_TW": "輸入 Amiibo 新名稱" "zh_TW": "輸入你的 Amiibo 新名稱"
} }
}, },
{ {
@ -400,6 +400,31 @@
"zh_TW": "用途:\n" "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", "ID": "Unknown",
"Translations": { "Translations": {

View File

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

View File

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

View File

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

View File

@ -26,7 +26,7 @@ namespace Ryujinx.HLE.HOS.Applets
case AppletId.LibAppletOff: case AppletId.LibAppletOff:
return new BrowserApplet(); return new BrowserApplet();
case AppletId.MiiEdit: 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); return new DummyApplet(system);
case AppletId.Cabinet: case AppletId.Cabinet:
return new CabinetApplet(system); return new CabinetApplet(system);

View File

@ -431,6 +431,7 @@ namespace Ryujinx.Ava.UI.ViewModels
string imageUrl = selected.Image; string imageUrl = selected.Image;
StringBuilder usageStringBuilder = new(); StringBuilder usageStringBuilder = new();
bool writable = false;
foreach (var game in selected.GamesSwitch) foreach (var game in selected.GamesSwitch)
{ {
@ -439,6 +440,9 @@ namespace Ryujinx.Ava.UI.ViewModels
foreach (var usageItem in game.AmiiboUsage) foreach (var usageItem in game.AmiiboUsage)
{ {
usageStringBuilder.Append($"{Environment.NewLine}- {usageItem.Usage.Replace("/", Environment.NewLine + "-")}"); 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]}."); 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); _ = UpdateAmiiboPreview(imageUrl);
} }

View File

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