diff --git a/src/ST.Client/UI/Resx/R.cs b/src/ST.Client/UI/Resx/R.cs index 86f158ae2..136fd36bb 100644 --- a/src/ST.Client/UI/Resx/R.cs +++ b/src/ST.Client/UI/Resx/R.cs @@ -108,12 +108,26 @@ namespace System.Application.UI.Resx /// public static void ChangeLanguage(string? cultureName) => MainThread2.BeginInvokeOnMainThread(() => ChangeLanguageCore(cultureName)); + static CultureInfo TryGetCultureInfo(string? cultureName, CultureInfo defaultCultureInfo) + { + if (string.IsNullOrWhiteSpace(cultureName)) + { + return defaultCultureInfo; + } + try + { + return CultureInfo.GetCultureInfo(cultureName); + } + catch + { + return defaultCultureInfo; + } + } + static void ChangeLanguageCore(string? cultureName) { if (cultureName == null || IsMatch(AppResources.Culture, cultureName)) return; - AppResources.Culture = string.IsNullOrWhiteSpace(cultureName) ? - DefaultCurrentUICulture : - CultureInfo.GetCultureInfo(Languages.SingleOrDefault(x => x.Key == cultureName).Key); + AppResources.Culture = TryGetCultureInfo(cultureName, DefaultCurrentUICulture); Thread.CurrentThread.CurrentUICulture = AppResources.Culture; Thread.CurrentThread.CurrentCulture = AppResources.Culture; CultureInfo.DefaultThreadCurrentUICulture = AppResources.Culture;