diff options
| author | TSR Berry <20988865+TSRBerry@users.noreply.github.com> | 2023-04-08 01:22:00 +0200 |
|---|---|---|
| committer | Mary <thog@protonmail.com> | 2023-04-27 23:51:14 +0200 |
| commit | cee712105850ac3385cd0091a923438167433f9f (patch) | |
| tree | 4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Ryujinx.Ava/Common/Locale | |
| parent | cd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff) | |
Move solution and projects to src
Diffstat (limited to 'Ryujinx.Ava/Common/Locale')
| -rw-r--r-- | Ryujinx.Ava/Common/Locale/LocaleExtension.cs | 30 | ||||
| -rw-r--r-- | Ryujinx.Ava/Common/Locale/LocaleManager.cs | 146 |
2 files changed, 0 insertions, 176 deletions
diff --git a/Ryujinx.Ava/Common/Locale/LocaleExtension.cs b/Ryujinx.Ava/Common/Locale/LocaleExtension.cs deleted file mode 100644 index b82c405d..00000000 --- a/Ryujinx.Ava/Common/Locale/LocaleExtension.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Avalonia.Data; -using Avalonia.Markup.Xaml; -using Avalonia.Markup.Xaml.MarkupExtensions; -using System; - -namespace Ryujinx.Ava.Common.Locale -{ - internal class LocaleExtension : MarkupExtension - { - public LocaleExtension(LocaleKeys key) - { - Key = key; - } - - public LocaleKeys Key { get; } - - public override object ProvideValue(IServiceProvider serviceProvider) - { - LocaleKeys keyToUse = Key; - - ReflectionBindingExtension binding = new($"[{keyToUse}]") - { - Mode = BindingMode.OneWay, - Source = LocaleManager.Instance - }; - - return binding.ProvideValue(serviceProvider); - } - } -}
\ No newline at end of file diff --git a/Ryujinx.Ava/Common/Locale/LocaleManager.cs b/Ryujinx.Ava/Common/Locale/LocaleManager.cs deleted file mode 100644 index 464ab780..00000000 --- a/Ryujinx.Ava/Common/Locale/LocaleManager.cs +++ /dev/null @@ -1,146 +0,0 @@ -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Common; -using Ryujinx.Common.Utilities; -using Ryujinx.Ui.Common.Configuration; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Globalization; - -namespace Ryujinx.Ava.Common.Locale -{ - class LocaleManager : BaseModel - { - private const string DefaultLanguageCode = "en_US"; - - private Dictionary<LocaleKeys, string> _localeStrings; - private Dictionary<LocaleKeys, string> _localeDefaultStrings; - private readonly ConcurrentDictionary<LocaleKeys, object[]> _dynamicValues; - - public static LocaleManager Instance { get; } = new LocaleManager(); - - public LocaleManager() - { - _localeStrings = new Dictionary<LocaleKeys, string>(); - _localeDefaultStrings = new Dictionary<LocaleKeys, string>(); - _dynamicValues = new ConcurrentDictionary<LocaleKeys, object[]>(); - - Load(); - } - - public void Load() - { - // Load the system Language Code. - string localeLanguageCode = CultureInfo.CurrentCulture.Name.Replace('-', '_'); - - // If the view is loaded with the UI Previewer detached, then override it with the saved one or default. - if (Program.PreviewerDetached) - { - if (!string.IsNullOrEmpty(ConfigurationState.Instance.Ui.LanguageCode.Value)) - { - localeLanguageCode = ConfigurationState.Instance.Ui.LanguageCode.Value; - } - else - { - localeLanguageCode = DefaultLanguageCode; - } - } - - // Load en_US as default, if the target language translation is incomplete. - LoadDefaultLanguage(); - - LoadLanguage(localeLanguageCode); - } - - public string this[LocaleKeys key] - { - get - { - // Check if the locale contains the key. - if (_localeStrings.TryGetValue(key, out string value)) - { - // Check if the localized string needs to be formatted. - if (_dynamicValues.TryGetValue(key, out var dynamicValue)) - { - try - { - return string.Format(value, dynamicValue); - } - catch (Exception) - { - // If formatting failed use the default text instead. - if (_localeDefaultStrings.TryGetValue(key, out value)) - { - try - { - return string.Format(value, dynamicValue); - } - catch (Exception) - { - // If formatting the default text failed return the key. - return key.ToString(); - } - } - } - } - - return value; - } - - // If the locale doesn't contain the key return the default one. - if (_localeDefaultStrings.TryGetValue(key, out string defaultValue)) - { - return defaultValue; - } - - // If the locale text doesn't exist return the key. - return key.ToString(); - } - set - { - _localeStrings[key] = value; - - OnPropertyChanged(); - } - } - - public string UpdateAndGetDynamicValue(LocaleKeys key, params object[] values) - { - _dynamicValues[key] = values; - - OnPropertyChanged("Item"); - - return this[key]; - } - - private void LoadDefaultLanguage() - { - _localeDefaultStrings = LoadJsonLanguage(); - } - - public void LoadLanguage(string languageCode) - { - foreach (var item in LoadJsonLanguage(languageCode)) - { - this[item.Key] = item.Value; - } - } - - private Dictionary<LocaleKeys, string> LoadJsonLanguage(string languageCode = DefaultLanguageCode) - { - var localeStrings = new Dictionary<LocaleKeys, string>(); - string languageJson = EmbeddedResources.ReadAllText($"Ryujinx.Ava/Assets/Locales/{languageCode}.json"); - var strings = JsonHelper.Deserialize(languageJson, CommonJsonContext.Default.StringDictionary); - - foreach (var item in strings) - { - if (Enum.TryParse<LocaleKeys>(item.Key, out var key)) - { - localeStrings[key] = item.Value; - } - } - - return localeStrings; - } - } -}
\ No newline at end of file |
