From 8a4fcaa5397d2612e3edb0d265e7e4fa22da1506 Mon Sep 17 00:00:00 2001 From: Aigio Liu Date: Thu, 24 Feb 2022 14:40:41 +0800 Subject: [PATCH] fix ChangeLanguageCore --- src/ST.Client/UI/Resx/R.cs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) 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;