diff options
| author | Mary Guillemard <mary@mary.zone> | 2024-03-02 12:51:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-02 12:51:05 +0100 |
| commit | ec6cb0abb4b7669895b6e96fd7581c93b5abd691 (patch) | |
| tree | 128c862ff5faea0b219467656d4023bee7faefb5 /src/Ryujinx.Ava/Common/Locale | |
| parent | 53b5985da6b9d7b281d9fc25b93bfd1d1918a107 (diff) | |
infra: Make Avalonia the default UI (#6375)
* misc: Move Ryujinx project to Ryujinx.Gtk3
This breaks release CI for now but that's fine.
Signed-off-by: Mary Guillemard <mary@mary.zone>
* misc: Move Ryujinx.Ava project to Ryujinx
This breaks CI for now, but it's fine.
Signed-off-by: Mary Guillemard <mary@mary.zone>
* infra: Make Avalonia the default UI
Should fix CI after the previous changes.
GTK3 isn't build by the release job anymore, only by PR CI.
This also ensure that the test-ava update package is still generated to
allow update from the old testing channel.
Signed-off-by: Mary Guillemard <mary@mary.zone>
* Fix missing copy in create_app_bundle.sh
Signed-off-by: Mary Guillemard <mary@mary.zone>
* Fix syntax error
Signed-off-by: Mary Guillemard <mary@mary.zone>
---------
Signed-off-by: Mary Guillemard <mary@mary.zone>
Diffstat (limited to 'src/Ryujinx.Ava/Common/Locale')
| -rw-r--r-- | src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs | 40 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/Common/Locale/LocaleManager.cs | 160 |
2 files changed, 0 insertions, 200 deletions
diff --git a/src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs b/src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs deleted file mode 100644 index 40661bf3..00000000 --- a/src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Avalonia.Data.Core; -using Avalonia.Markup.Xaml; -using Avalonia.Markup.Xaml.MarkupExtensions; -using Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings; -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; - - var builder = new CompiledBindingPathBuilder(); - - builder.SetRawSource(LocaleManager.Instance) - .Property(new ClrPropertyInfo("Item", - obj => (LocaleManager.Instance[keyToUse]), - null, - typeof(string)), (weakRef, iPropInfo) => - { - return PropertyInfoAccessorFactory.CreateInpcPropertyAccessor(weakRef, iPropInfo); - }); - - var path = builder.Build(); - - var binding = new CompiledBindingExtension(path); - - return binding.ProvideValue(serviceProvider); - } - } -} diff --git a/src/Ryujinx.Ava/Common/Locale/LocaleManager.cs b/src/Ryujinx.Ava/Common/Locale/LocaleManager.cs deleted file mode 100644 index b2f3e7ab..00000000 --- a/src/Ryujinx.Ava/Common/Locale/LocaleManager.cs +++ /dev/null @@ -1,160 +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 readonly Dictionary<LocaleKeys, string> _localeStrings; - private Dictionary<LocaleKeys, string> _localeDefaultStrings; - private readonly ConcurrentDictionary<LocaleKeys, object[]> _dynamicValues; - private string _localeLanguageCode; - - public static LocaleManager Instance { get; } = new(); - public event Action LocaleChanged; - - 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 bool IsRTL() - { - return _localeLanguageCode switch - { - "he_IL" => true, - _ => false - }; - } - - 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; - } - - _localeLanguageCode = languageCode; - LocaleChanged?.Invoke(); - } - - private static 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; - } - } -} |
