|
|
@@ -5,8 +5,10 @@ using Avalonia.Media;
|
|
|
using Avalonia.Threading;
|
|
|
using DynamicData;
|
|
|
using DynamicData.Binding;
|
|
|
+using LibHac.Bcat;
|
|
|
using LibHac.Fs;
|
|
|
using LibHac.FsSystem;
|
|
|
+using LibHac.Tools.Fs;
|
|
|
using Ryujinx.Ava.Common;
|
|
|
using Ryujinx.Ava.Common.Locale;
|
|
|
using Ryujinx.Ava.Input;
|
|
|
@@ -947,20 +949,18 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
|
|
|
if (firmwareVersion == null)
|
|
|
{
|
|
|
- await ContentDialogHelper.CreateErrorDialog(string.Format(LocaleManager.Instance[LocaleKeys.DialogFirmwareInstallerFirmwareNotFoundErrorMessage], filename));
|
|
|
+ await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogFirmwareInstallerFirmwareNotFoundErrorMessage, filename));
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- string dialogTitle = string.Format(LocaleManager.Instance[LocaleKeys.DialogFirmwareInstallerFirmwareInstallTitle], firmwareVersion.VersionString);
|
|
|
+ string dialogTitle = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogFirmwareInstallerFirmwareInstallTitle, firmwareVersion.VersionString);
|
|
|
+ string dialogMessage = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogFirmwareInstallerFirmwareInstallMessage, firmwareVersion.VersionString);
|
|
|
|
|
|
SystemVersion currentVersion = ContentManager.GetCurrentFirmwareVersion();
|
|
|
-
|
|
|
- string dialogMessage = string.Format(LocaleManager.Instance[LocaleKeys.DialogFirmwareInstallerFirmwareInstallMessage], firmwareVersion.VersionString);
|
|
|
-
|
|
|
if (currentVersion != null)
|
|
|
{
|
|
|
- dialogMessage += string.Format(LocaleManager.Instance[LocaleKeys.DialogFirmwareInstallerFirmwareInstallSubMessage], currentVersion.VersionString);
|
|
|
+ dialogMessage += LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogFirmwareInstallerFirmwareInstallSubMessage, currentVersion.VersionString);
|
|
|
}
|
|
|
|
|
|
dialogMessage += LocaleManager.Instance[LocaleKeys.DialogFirmwareInstallerFirmwareInstallConfirmMessage];
|
|
|
@@ -993,7 +993,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
{
|
|
|
waitingDialog.Close();
|
|
|
|
|
|
- string message = string.Format(LocaleManager.Instance[LocaleKeys.DialogFirmwareInstallerFirmwareInstallSuccessMessage], firmwareVersion.VersionString);
|
|
|
+ string message = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogFirmwareInstallerFirmwareInstallSuccessMessage, firmwareVersion.VersionString);
|
|
|
|
|
|
await ContentDialogHelper.CreateInfoDialog(dialogTitle, message, LocaleManager.Instance[LocaleKeys.InputDialogOk], "", LocaleManager.Instance[LocaleKeys.RyujinxInfo]);
|
|
|
|
|
|
@@ -1063,7 +1063,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
IsLoadingIndeterminate = false;
|
|
|
break;
|
|
|
case LoadState.Loaded:
|
|
|
- LoadHeading = string.Format(LocaleManager.Instance[LocaleKeys.LoadingHeading], TitleName);
|
|
|
+ LoadHeading = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.LoadingHeading, TitleName);
|
|
|
IsLoadingIndeterminate = true;
|
|
|
CacheLoadStatus = "";
|
|
|
break;
|
|
|
@@ -1079,7 +1079,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
IsLoadingIndeterminate = false;
|
|
|
break;
|
|
|
case ShaderCacheLoadingState.Loaded:
|
|
|
- LoadHeading = string.Format(LocaleManager.Instance[LocaleKeys.LoadingHeading], TitleName);
|
|
|
+ LoadHeading = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.LoadingHeading, TitleName);
|
|
|
IsLoadingIndeterminate = true;
|
|
|
CacheLoadStatus = "";
|
|
|
break;
|
|
|
@@ -1333,10 +1333,15 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void ChangeLanguage(object obj)
|
|
|
+ public void ChangeLanguage(object languageCode)
|
|
|
{
|
|
|
- LocaleManager.Instance.LoadDefaultLanguage();
|
|
|
- LocaleManager.Instance.LoadLanguage((string)obj);
|
|
|
+ LocaleManager.Instance.LoadLanguage((string)languageCode);
|
|
|
+
|
|
|
+ if (Program.PreviewerDetached)
|
|
|
+ {
|
|
|
+ ConfigurationState.Instance.Ui.LanguageCode.Value = (string)languageCode;
|
|
|
+ ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public async void ManageProfiles()
|
|
|
@@ -1374,7 +1379,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
|
|
|
// FIXME: Found a way to reproduce the bold effect on the title name (fork?).
|
|
|
UserResult result = await ContentDialogHelper.CreateConfirmationDialog(LocaleManager.Instance[LocaleKeys.DialogWarning],
|
|
|
- string.Format(LocaleManager.Instance[LocaleKeys.DialogPPTCDeletionMessage], selection.TitleName),
|
|
|
+ LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogPPTCDeletionMessage, selection.TitleName),
|
|
|
LocaleManager.Instance[LocaleKeys.InputDialogYes],
|
|
|
LocaleManager.Instance[LocaleKeys.InputDialogNo],
|
|
|
LocaleManager.Instance[LocaleKeys.RyujinxConfirm]);
|
|
|
@@ -1401,7 +1406,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
- await ContentDialogHelper.CreateErrorDialog(string.Format(LocaleManager.Instance[LocaleKeys.DialogPPTCDeletionErrorMessage], file.Name, e));
|
|
|
+ await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogPPTCDeletionErrorMessage, file.Name, e));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1438,7 +1443,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
|
|
|
// FIXME: Found a way to reproduce the bold effect on the title name (fork?).
|
|
|
UserResult result = await ContentDialogHelper.CreateConfirmationDialog(LocaleManager.Instance[LocaleKeys.DialogWarning],
|
|
|
- string.Format(LocaleManager.Instance[LocaleKeys.DialogShaderDeletionMessage], selection.TitleName),
|
|
|
+ LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogShaderDeletionMessage, selection.TitleName),
|
|
|
LocaleManager.Instance[LocaleKeys.InputDialogYes],
|
|
|
LocaleManager.Instance[LocaleKeys.InputDialogNo],
|
|
|
LocaleManager.Instance[LocaleKeys.RyujinxConfirm]);
|
|
|
@@ -1463,7 +1468,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
- await ContentDialogHelper.CreateErrorDialog(string.Format(LocaleManager.Instance[LocaleKeys.DialogPPTCDeletionErrorMessage], directory.Name, e));
|
|
|
+ await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogPPTCDeletionErrorMessage, directory.Name, e));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1476,7 +1481,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
- await ContentDialogHelper.CreateErrorDialog(string.Format(LocaleManager.Instance[LocaleKeys.ShaderCachePurgeError], file.Name, e));
|
|
|
+ await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.ShaderCachePurgeError, file.Name, e));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1641,7 +1646,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
StatusBarProgressMaximum = 0;
|
|
|
StatusBarProgressValue = 0;
|
|
|
|
|
|
- LocaleManager.Instance.UpdateDynamicValue(LocaleKeys.StatusBarGamesLoaded, 0, 0);
|
|
|
+ LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.StatusBarGamesLoaded, 0, 0);
|
|
|
});
|
|
|
|
|
|
ReloadGameList?.Invoke();
|
|
|
@@ -1755,8 +1760,14 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
}
|
|
|
|
|
|
CanUpdate = false;
|
|
|
- LoadHeading = string.IsNullOrWhiteSpace(titleName) ? string.Format(LocaleManager.Instance[LocaleKeys.LoadingHeading], AppHost.Device.Application.TitleName) : titleName;
|
|
|
- TitleName = string.IsNullOrWhiteSpace(titleName) ? AppHost.Device.Application.TitleName : titleName;
|
|
|
+
|
|
|
+ LoadHeading = TitleName = titleName;
|
|
|
+
|
|
|
+ if (string.IsNullOrWhiteSpace(titleName))
|
|
|
+ {
|
|
|
+ LoadHeading = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.LoadingHeading, AppHost.Device.Application.TitleName);
|
|
|
+ TitleName = AppHost.Device.Application.TitleName;
|
|
|
+ }
|
|
|
|
|
|
SwitchToRenderer(startFullscreen);
|
|
|
|
|
|
@@ -1807,14 +1818,13 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|
|
|
|
|
if (version != null)
|
|
|
{
|
|
|
- LocaleManager.Instance.UpdateDynamicValue(LocaleKeys.StatusBarSystemVersion,
|
|
|
- version.VersionString);
|
|
|
+ LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.StatusBarSystemVersion, version.VersionString);
|
|
|
|
|
|
hasApplet = version.Major > 3;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- LocaleManager.Instance.UpdateDynamicValue(LocaleKeys.StatusBarSystemVersion, "0.0");
|
|
|
+ LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.StatusBarSystemVersion, "0.0");
|
|
|
}
|
|
|
|
|
|
IsAppletMenuActive = hasApplet;
|