Explorar el Código

Improve locale file parsing error descriptions

Evan Husted hace 1 año
padre
commit
0bacdb8765
Se han modificado 1 ficheros con 12 adiciones y 6 borrados
  1. 12 6
      src/Ryujinx/Common/LocaleManager.cs

+ 12 - 6
src/Ryujinx/Common/LocaleManager.cs

@@ -143,11 +143,7 @@ namespace Ryujinx.Ava.Common.Locale
             LocaleChanged?.Invoke();
         }
 
-        #nullable enable
-
         private static LocalesJson? _localeData;
-        
-        #nullable disable
 
         private static Dictionary<LocaleKeys, string> LoadJsonLanguage(string languageCode)
         {
@@ -158,18 +154,28 @@ namespace Ryujinx.Ava.Common.Locale
 
             foreach (LocalesEntry locale in _localeData.Value.Locales)
             {
-                if (locale.Translations.Count != _localeData.Value.Languages.Count)
+                if (locale.Translations.Count < _localeData.Value.Languages.Count)
                 {
                     throw new Exception($"Locale key {{{locale.ID}}} is missing languages! Has {locale.Translations.Count} translations, expected {_localeData.Value.Languages.Count}!");
+                } 
+                
+                if (locale.Translations.Count > _localeData.Value.Languages.Count)
+                {
+                    throw new Exception($"Locale key {{{locale.ID}}} has too many languages! Has {locale.Translations.Count} translations, expected {_localeData.Value.Languages.Count}!");
                 }
 
                 if (!Enum.TryParse<LocaleKeys>(locale.ID, out var localeKey))
                     continue;
 
                 localeStrings[localeKey] =
-                    locale.Translations.TryGetValue(languageCode, out string val) && val != string.Empty
+                    locale.Translations.TryGetValue(languageCode, out string val) && !string.IsNullOrEmpty(val)
                         ? val
                         : locale.Translations[DefaultLanguageCode];
+
+                if (string.IsNullOrEmpty(localeStrings[localeKey]))
+                {
+                    throw new Exception($"Locale key '{locale.ID}' has no valid translations for desired language {languageCode}! {DefaultLanguageCode} is an empty string or null");
+                }
             }
 
             return localeStrings;